From 686eb641e1d9b5ff128437f682ebdf6b991348bb Mon Sep 17 00:00:00 2001 From: raster Date: Thu, 30 Aug 2012 09:54:57 +0000 Subject: [PATCH] EFL 1.7 svn doobies git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/branches/edje-1.7@75862 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- .gitignore | 48 + AUTHORS | 31 + COPYING | 378 + ChangeLog | 575 + INSTALL | 365 + Makefile.am | 99 + NEWS | 163 + README | 42 + autogen.sh | 39 + configure.ac | 648 + data/Makefile.am | 10 + data/edc.vim | 348 + data/edje-mode.el | 512 + data/edje.xml | 11 + data/include/Makefile.am | 10 + data/include/edje.inc | 219 + data/vim/autoload/edccomplete.vim | 892 + data/vim/ftdetect/edc.vim | 3 + data/vim/ftplugin/edc.vim | 23 + data/vim/indent/edc.vim | 83 + data/vim/plugin-info.txt | 8 + data/vim/snippets/edc.snippets | 99 + data/vim/syntax/edc.vim | 235 + data/vim/syntax/embryo.vim | 195 + doc/Doxyfile.in | 1532 ++ doc/Makefile.am | 35 + doc/e.css | 295 + doc/examples.dox | 1273 + doc/foot.html | 18 + doc/head.html | 71 + doc/img/basic2final.eps | 7715 ++++++ doc/img/basic2final.png | Bin 0 -> 9301 bytes doc/img/e.png | Bin 0 -> 30052 bytes doc/img/edje-animations.eps | 952 + doc/img/edje-animations.png | Bin 0 -> 1621 bytes doc/img/edje-animations2.eps | 944 + doc/img/edje-animations2.png | Bin 0 -> 1130 bytes doc/img/edje-basics-example.eps | 7202 ++++++ doc/img/edje-basics-example.png | Bin 0 -> 1254 bytes doc/img/edje-box-example.eps | 7202 ++++++ doc/img/edje-box-example.png | Bin 0 -> 4127 bytes doc/img/edje-box2-example.eps | 23909 +++++++++++++++++++ doc/img/edje-box2-example.png | Bin 0 -> 6075 bytes doc/img/edje-color-class-example.eps | 1330 ++ doc/img/edje-color-class-example.png | Bin 0 -> 6243 bytes doc/img/edje-color-class-example2.eps | 1334 ++ doc/img/edje-color-class-example2.png | Bin 0 -> 6992 bytes doc/img/edje-drag-example.eps | 7202 ++++++ doc/img/edje-drag-example.png | Bin 0 -> 3840 bytes doc/img/edje-perspective-example.eps | 12094 ++++++++++ doc/img/edje-perspective-example.png | Bin 0 -> 17478 bytes doc/img/edje-signals-messages-example.eps | 7202 ++++++ doc/img/edje-signals-messages-example.png | Bin 0 -> 3730 bytes doc/img/edje-table-example.eps | 1241 + doc/img/edje-table-example.png | Bin 0 -> 1487 bytes doc/img/edje-text.eps | 7202 ++++++ doc/img/edje-text.png | Bin 0 -> 3538 bytes doc/img/edoxy.css | 486 + doc/img/foot_bg.png | Bin 0 -> 173 bytes doc/img/head_bg.png | Bin 0 -> 214 bytes doc/img/header_menu_background.png | Bin 0 -> 192 bytes doc/img/header_menu_background_last.png | Bin 0 -> 637 bytes doc/img/header_menu_current_background.png | Bin 0 -> 1200 bytes doc/img/header_menu_unselected_background.png | Bin 0 -> 1596 bytes doc/img/logo.png | Bin 0 -> 3825 bytes doc/img/signal2final.eps | 15032 ++++++++++++ doc/img/signal2final.png | Bin 0 -> 10959 bytes doc/img/swallow2final.eps | 7730 ++++++ doc/img/swallow2final.png | Bin 0 -> 16796 bytes edje.pc.in | 17 + edje.spec.in | 105 + edje.supp | 8 + m4/ac_attribute.m4 | 47 + m4/efl_binary.m4 | 71 + m4/efl_coverage.m4 | 62 + m4/efl_doxygen.m4 | 97 + m4/efl_path_max.m4 | 36 + m4/efl_tests.m4 | 43 + src/Makefile.am | 4 + src/bin/Makefile.am | 90 + src/bin/edje_cc.c | 333 + src/bin/edje_cc.h | 239 + src/bin/edje_cc_handlers.c | 8051 +++++++ src/bin/edje_cc_mem.c | 34 + src/bin/edje_cc_out.c | 2583 ++ src/bin/edje_cc_parse.c | 1529 ++ src/bin/edje_cc_sources.c | 259 + src/bin/edje_convert.c | 459 + src/bin/edje_convert.h | 154 + src/bin/edje_convert_main.c | 205 + src/bin/edje_data_convert.c | 451 + src/bin/edje_decc.c | 558 + src/bin/edje_decc.h | 70 + src/bin/edje_external_inspector.c | 663 + src/bin/edje_inspector.c | 1635 ++ src/bin/edje_multisense_convert.c | 329 + src/bin/edje_multisense_convert.h | 25 + src/bin/edje_player.c | 802 + src/bin/edje_recc | 69 + src/bin/edje_watch.c | 137 + src/bin/epp/Makefile.am | 59 + src/bin/epp/cppalloc.c | 70 + src/bin/epp/cpperror.c | 147 + src/bin/epp/cppexp.c | 1090 + src/bin/epp/cpphash.c | 198 + src/bin/epp/cpphash.h | 41 + src/bin/epp/cpplib.c | 7461 ++++++ src/bin/epp/cpplib.h | 646 + src/bin/epp/cppmain.c | 147 + src/examples/Makefile.am | 121 + src/examples/Vera.ttf | Bin 0 -> 65932 bytes src/examples/animations.edc | 93 + src/examples/animations2.c | 96 + src/examples/animations2.edc | 48 + src/examples/basic.edc | 39 + src/examples/basic2.edc | 24 + src/examples/box.edc | 142 + src/examples/bubble.png | Bin 0 -> 4737 bytes src/examples/color-class.edc | 87 + src/examples/drag.edc | 89 + src/examples/duck.wav | Bin 0 -> 22982 bytes src/examples/edje-animations.c | 227 + src/examples/edje-basic.c | 257 + src/examples/edje-basic2.c | 171 + src/examples/edje-box.c | 252 + src/examples/edje-box2.c | 247 + src/examples/edje-color-class.c | 295 + src/examples/edje-drag.c | 210 + src/examples/edje-multisense.c | 80 + src/examples/edje-perspective.c | 253 + src/examples/edje-signals-messages.c | 254 + src/examples/edje-swallow.c | 130 + src/examples/edje-swallow2.c | 135 + src/examples/edje-table.c | 210 + src/examples/edje-text.c | 121 + src/examples/edje_example.c | 81 + src/examples/edje_example.edc | 101 + src/examples/embryo_custom_state.edc | 134 + src/examples/embryo_pong.edc | 270 + src/examples/embryo_run_program.edc | 66 + src/examples/embryo_set_state.edc | 46 + src/examples/embryo_set_text.edc | 39 + src/examples/embryo_timer.edc | 90 + src/examples/external_elm_anchorblock.edc | 160 + src/examples/external_elm_button.edc | 270 + src/examples/external_elm_check.edc | 211 + src/examples/external_elm_panes.edc | 140 + src/examples/external_emotion_elm.edc | 239 + src/examples/lua_script.edc | 417 + src/examples/multisense.edc | 91 + src/examples/perspective.edc | 140 + src/examples/red.png | Bin 0 -> 225 bytes src/examples/signals-messages.edc | 174 + src/examples/signals2.c | 134 + src/examples/signalsBubble.edc | 22 + src/examples/sigtest.c | 341 + src/examples/sigtest.edc | 303 + src/examples/swallow.edc | 21 + src/examples/table.edc | 19 + src/examples/test.png | Bin 0 -> 22869 bytes src/examples/text.edc | 68 + src/examples/toggle_using_filter.edc | 66 + src/lib/Edje.h | 4169 ++++ src/lib/Edje_Edit.h | 3539 +++ src/lib/Makefile.am | 145 + src/lib/edje_box_layout.c | 242 + src/lib/edje_cache.c | 633 + src/lib/edje_calc.c | 3084 +++ src/lib/edje_callbacks.c | 499 + src/lib/edje_container.c | 955 + src/lib/edje_container.h | 165 + src/lib/edje_convert.c | 499 + src/lib/edje_convert.h | 143 + src/lib/edje_data.c | 910 + src/lib/edje_edit.c | 7823 ++++++ src/lib/edje_embryo.c | 3187 +++ src/lib/edje_entry.c | 3599 +++ src/lib/edje_external.c | 559 + src/lib/edje_load.c | 1746 ++ src/lib/edje_lua.c | 5150 ++++ src/lib/edje_lua2.c | 4318 ++++ src/lib/edje_lua_script_only.c | 59 + src/lib/edje_main.c | 296 + src/lib/edje_match.c | 829 + src/lib/edje_message_queue.c | 868 + src/lib/edje_misc.c | 1 + src/lib/edje_module.c | 154 + src/lib/edje_multisense.c | 422 + src/lib/edje_private.h | 2177 ++ src/lib/edje_program.c | 2104 ++ src/lib/edje_script_only.c | 643 + src/lib/edje_smart.c | 348 + src/lib/edje_text.c | 790 + src/lib/edje_textblock_styles.c | 425 + src/lib/edje_util.c | 5269 ++++ src/lib/edje_var.c | 1093 + src/modules/Makefile.am | 10 + src/modules/alsa_snd_player/Makefile.am | 21 + src/modules/alsa_snd_player/alsa_snd_player.c | 405 + src/modules/eet_snd_reader/Makefile.am | 18 + src/modules/eet_snd_reader/eet_snd_reader.c | 498 + src/modules/multisense_factory/Makefile.am | 22 + .../multisense_factory/multisense_factory.c | 33 + src/tests/Makefile.am | 27 + src/tests/edje_suite.c | 101 + src/tests/edje_suite.h | 9 + src/tests/edje_test_edje.c | 28 + utils/Makefile.am | 7 + utils/gimp-edje-export.py | 146 + utils/inkscape2edc | 309 + 210 files changed, 211762 insertions(+) create mode 100644 .gitignore create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100755 autogen.sh create mode 100644 configure.ac create mode 100644 data/Makefile.am create mode 100644 data/edc.vim create mode 100644 data/edje-mode.el create mode 100644 data/edje.xml create mode 100644 data/include/Makefile.am create mode 100644 data/include/edje.inc create mode 100644 data/vim/autoload/edccomplete.vim create mode 100644 data/vim/ftdetect/edc.vim create mode 100644 data/vim/ftplugin/edc.vim create mode 100644 data/vim/indent/edc.vim create mode 100644 data/vim/plugin-info.txt create mode 100644 data/vim/snippets/edc.snippets create mode 100644 data/vim/syntax/edc.vim create mode 100644 data/vim/syntax/embryo.vim create mode 100644 doc/Doxyfile.in create mode 100644 doc/Makefile.am create mode 100644 doc/e.css create mode 100644 doc/examples.dox create mode 100644 doc/foot.html create mode 100644 doc/head.html create mode 100644 doc/img/basic2final.eps create mode 100644 doc/img/basic2final.png create mode 100644 doc/img/e.png create mode 100644 doc/img/edje-animations.eps create mode 100644 doc/img/edje-animations.png create mode 100644 doc/img/edje-animations2.eps create mode 100644 doc/img/edje-animations2.png create mode 100644 doc/img/edje-basics-example.eps create mode 100644 doc/img/edje-basics-example.png create mode 100644 doc/img/edje-box-example.eps create mode 100644 doc/img/edje-box-example.png create mode 100644 doc/img/edje-box2-example.eps create mode 100644 doc/img/edje-box2-example.png create mode 100644 doc/img/edje-color-class-example.eps create mode 100644 doc/img/edje-color-class-example.png create mode 100644 doc/img/edje-color-class-example2.eps create mode 100644 doc/img/edje-color-class-example2.png create mode 100644 doc/img/edje-drag-example.eps create mode 100644 doc/img/edje-drag-example.png create mode 100644 doc/img/edje-perspective-example.eps create mode 100644 doc/img/edje-perspective-example.png create mode 100644 doc/img/edje-signals-messages-example.eps create mode 100644 doc/img/edje-signals-messages-example.png create mode 100644 doc/img/edje-table-example.eps create mode 100644 doc/img/edje-table-example.png create mode 100644 doc/img/edje-text.eps create mode 100644 doc/img/edje-text.png create mode 100644 doc/img/edoxy.css create mode 100644 doc/img/foot_bg.png create mode 100644 doc/img/head_bg.png create mode 100644 doc/img/header_menu_background.png create mode 100644 doc/img/header_menu_background_last.png create mode 100644 doc/img/header_menu_current_background.png create mode 100644 doc/img/header_menu_unselected_background.png create mode 100644 doc/img/logo.png create mode 100644 doc/img/signal2final.eps create mode 100644 doc/img/signal2final.png create mode 100644 doc/img/swallow2final.eps create mode 100644 doc/img/swallow2final.png create mode 100644 edje.pc.in create mode 100644 edje.spec.in create mode 100644 edje.supp create mode 100644 m4/ac_attribute.m4 create mode 100644 m4/efl_binary.m4 create mode 100644 m4/efl_coverage.m4 create mode 100644 m4/efl_doxygen.m4 create mode 100644 m4/efl_path_max.m4 create mode 100644 m4/efl_tests.m4 create mode 100644 src/Makefile.am create mode 100644 src/bin/Makefile.am create mode 100644 src/bin/edje_cc.c create mode 100644 src/bin/edje_cc.h create mode 100644 src/bin/edje_cc_handlers.c create mode 100644 src/bin/edje_cc_mem.c create mode 100644 src/bin/edje_cc_out.c create mode 100644 src/bin/edje_cc_parse.c create mode 100644 src/bin/edje_cc_sources.c create mode 100644 src/bin/edje_convert.c create mode 100644 src/bin/edje_convert.h create mode 100644 src/bin/edje_convert_main.c create mode 100644 src/bin/edje_data_convert.c create mode 100644 src/bin/edje_decc.c create mode 100644 src/bin/edje_decc.h create mode 100644 src/bin/edje_external_inspector.c create mode 100644 src/bin/edje_inspector.c create mode 100644 src/bin/edje_multisense_convert.c create mode 100644 src/bin/edje_multisense_convert.h create mode 100644 src/bin/edje_player.c create mode 100644 src/bin/edje_recc create mode 100644 src/bin/edje_watch.c create mode 100644 src/bin/epp/Makefile.am create mode 100644 src/bin/epp/cppalloc.c create mode 100644 src/bin/epp/cpperror.c create mode 100644 src/bin/epp/cppexp.c create mode 100644 src/bin/epp/cpphash.c create mode 100644 src/bin/epp/cpphash.h create mode 100644 src/bin/epp/cpplib.c create mode 100644 src/bin/epp/cpplib.h create mode 100644 src/bin/epp/cppmain.c create mode 100644 src/examples/Makefile.am create mode 100644 src/examples/Vera.ttf create mode 100644 src/examples/animations.edc create mode 100644 src/examples/animations2.c create mode 100644 src/examples/animations2.edc create mode 100644 src/examples/basic.edc create mode 100644 src/examples/basic2.edc create mode 100644 src/examples/box.edc create mode 100644 src/examples/bubble.png create mode 100644 src/examples/color-class.edc create mode 100644 src/examples/drag.edc create mode 100644 src/examples/duck.wav create mode 100644 src/examples/edje-animations.c create mode 100644 src/examples/edje-basic.c create mode 100644 src/examples/edje-basic2.c create mode 100644 src/examples/edje-box.c create mode 100644 src/examples/edje-box2.c create mode 100644 src/examples/edje-color-class.c create mode 100644 src/examples/edje-drag.c create mode 100644 src/examples/edje-multisense.c create mode 100644 src/examples/edje-perspective.c create mode 100644 src/examples/edje-signals-messages.c create mode 100644 src/examples/edje-swallow.c create mode 100644 src/examples/edje-swallow2.c create mode 100644 src/examples/edje-table.c create mode 100644 src/examples/edje-text.c create mode 100644 src/examples/edje_example.c create mode 100644 src/examples/edje_example.edc create mode 100644 src/examples/embryo_custom_state.edc create mode 100644 src/examples/embryo_pong.edc create mode 100644 src/examples/embryo_run_program.edc create mode 100644 src/examples/embryo_set_state.edc create mode 100644 src/examples/embryo_set_text.edc create mode 100644 src/examples/embryo_timer.edc create mode 100644 src/examples/external_elm_anchorblock.edc create mode 100644 src/examples/external_elm_button.edc create mode 100644 src/examples/external_elm_check.edc create mode 100644 src/examples/external_elm_panes.edc create mode 100644 src/examples/external_emotion_elm.edc create mode 100644 src/examples/lua_script.edc create mode 100644 src/examples/multisense.edc create mode 100644 src/examples/perspective.edc create mode 100644 src/examples/red.png create mode 100644 src/examples/signals-messages.edc create mode 100644 src/examples/signals2.c create mode 100644 src/examples/signalsBubble.edc create mode 100644 src/examples/sigtest.c create mode 100644 src/examples/sigtest.edc create mode 100644 src/examples/swallow.edc create mode 100644 src/examples/table.edc create mode 100644 src/examples/test.png create mode 100644 src/examples/text.edc create mode 100644 src/examples/toggle_using_filter.edc create mode 100644 src/lib/Edje.h create mode 100644 src/lib/Edje_Edit.h create mode 100644 src/lib/Makefile.am create mode 100644 src/lib/edje_box_layout.c create mode 100644 src/lib/edje_cache.c create mode 100644 src/lib/edje_calc.c create mode 100644 src/lib/edje_callbacks.c create mode 100644 src/lib/edje_container.c create mode 100644 src/lib/edje_container.h create mode 100644 src/lib/edje_convert.c create mode 100644 src/lib/edje_convert.h create mode 100644 src/lib/edje_data.c create mode 100644 src/lib/edje_edit.c create mode 100644 src/lib/edje_embryo.c create mode 100644 src/lib/edje_entry.c create mode 100644 src/lib/edje_external.c create mode 100644 src/lib/edje_load.c create mode 100644 src/lib/edje_lua.c create mode 100644 src/lib/edje_lua2.c create mode 100644 src/lib/edje_lua_script_only.c create mode 100644 src/lib/edje_main.c create mode 100644 src/lib/edje_match.c create mode 100644 src/lib/edje_message_queue.c create mode 100644 src/lib/edje_misc.c create mode 100644 src/lib/edje_module.c create mode 100644 src/lib/edje_multisense.c create mode 100644 src/lib/edje_private.h create mode 100644 src/lib/edje_program.c create mode 100644 src/lib/edje_script_only.c create mode 100644 src/lib/edje_smart.c create mode 100644 src/lib/edje_text.c create mode 100644 src/lib/edje_textblock_styles.c create mode 100644 src/lib/edje_util.c create mode 100644 src/lib/edje_var.c create mode 100644 src/modules/Makefile.am create mode 100644 src/modules/alsa_snd_player/Makefile.am create mode 100644 src/modules/alsa_snd_player/alsa_snd_player.c create mode 100644 src/modules/eet_snd_reader/Makefile.am create mode 100644 src/modules/eet_snd_reader/eet_snd_reader.c create mode 100644 src/modules/multisense_factory/Makefile.am create mode 100644 src/modules/multisense_factory/multisense_factory.c create mode 100644 src/tests/Makefile.am create mode 100644 src/tests/edje_suite.c create mode 100644 src/tests/edje_suite.h create mode 100644 src/tests/edje_test_edje.c create mode 100644 utils/Makefile.am create mode 100755 utils/gimp-edje-export.py create mode 100755 utils/inkscape2edc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b5bb40 --- /dev/null +++ b/.gitignore @@ -0,0 +1,48 @@ +*.o +*.lo +*.la +.deps +.libs +.*.swp +Makefile +Makefile.in +/aclocal.m4 +/autom4te.cache +/compile +/config.cache +/config.guess +/config.h +/config.h.in +/config.h.in~ +/config.log +/config.status +/config.sub +/configure +cscope.out +/depcomp +/doc/edje.dox +/edje.pc +/edje.spec +/install-sh +/libtool +/ltmain.sh +/m4/libtool.m4 +/m4/ltoptions.m4 +/m4/ltsugar.m4 +/m4/ltversion.m4 +/m4/lt~obsolete.m4 +/missing +/src/bin/edje_cc +/src/bin/edje_convert +/src/bin/edje_decc +/src/bin/edje_player +/src/bin/edje_watch +/stamp-h1 +tags +/config.cache +/ABOUT-NLS +/config.cache-env +/src/bin/edje_external_inspector +/src/bin/edje_inspector +/src/bin/epp/epp +/doc/Doxyfile diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..377e7f4 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,31 @@ +The Rasterman (Carsten Haitzler) +Tilman Sauerbeck (tilman at code-monkey de) +ZigsMcKenzie +Cedric BAIL +Brian Mattern +Mathieu Taillefumier +Tristan +Gustavo Lima Chaves +Bruno Dilly +Fabiano Fidêncio +Jihoon Kim +Tiago Falcão +Davide Andreoli +Sebastian Dransfeld +Tom Hacohen +Aharon Hillel +Shilpa Singh +Mike Blumenkrantz +billiob (Boris Faure) +Govindaraju SM +Prince Kumar Dubey +David Seikel +Mikael Sans +Jérôme Pinot +Rajeev Ranjan (Rajeev) +ChunEon Park (Hermet) +Kim Shinwoo +Michael Bouchaud (yoz) +WooHyun Jung (woohyun) +Guilherme Silveira diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..1459288 --- /dev/null +++ b/COPYING @@ -0,0 +1,378 @@ +Copyright notice for Edje: + +Copyright (C) 2003-2010 Carsten Haitzler and various contributors (see AUTHORS) + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +**** +NOTE +**** + +The epp binary installed is GPLv2. The GPLv2 copyright license is as below: + +Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. +Written by Per Bothner, 1994-95. +Based on CCCP program by by Paul Rubin, June 1986 +Adapted to ANSI C, Richard Stallman, Jan 1987 +Copyright (C) 2003-2011 Kim Woelders + + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..d61ca27 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,575 @@ +2012-06-06 Leandro Pereira + + * Made state index optional (defaulting to 0.0). + +2011-01-29 Carsten Haitzler (The Rasterman) + + 1.0.0 release + +2011-01-30 Tom Hacohen (TAsn) + + * Added "UNDER" cursor mode. + * Added auto-alignment to text parts, just set text.alignment to -1 to + activate it. It's only relevant to TEXT parts, textblock objects + already have that by default. + +2011-02-01 Tom Hacohen (TAsn) + + * Added Mirroring support to edje objects. + +2011-02-08 Cedric BAIL + + * Fix invalid memory access by edje alias code. + +2011-02-10 Cedric BAIL + + * Fix use of recursive alias. + +2011-02-21 WooHyun Jung + + * Fix missing cursor changed signale on backspace + +2011-02-21 Mike Blumenkrantz + + * Add built-in cpp (epp) to provide consistent output on all archs/OSes + +2011-02-10 Cedric BAIL + + * Fix propagation of recursive events on existing part. + +2011-02-24 Cedric BAIL + + * fix signal comming from box/table item to include their + index or name correctly. + +2011-02-25 Jihoon Kim + + * Add edje_object_part_text_cursor_pos_{set,get} API + +2011-02-27 Tom Hacohen (TAsn) + + * Added size_range property to TEXT parts in edje files. + This lets you limit the size of the font that will be used. + Especially useful when using fit. + +2011-03-10 WooHyun Jung + + * Fix: Emit clicked signal on entry if still in - missing. + +2011-03-10 Cedric BAIL + + * Correctly propagate recursive event with existing and non existing + part. + +2011-03-11 Cedric BAIL + + * Add PROXY part. + +2011-03-19 Carsten Haitzler (The Rasterman) + + * Change edje_decc to only use edje_cc as the compiler for security + and correctness reasons. + +2011-03-23 Brett Nash (nash) + + * Move some of edje over to use smart clipper in evas. This _should_ + be transparent to users. + +2011-03-30 Carsten Haitzler (The Rasterman) + + * text.align (only the vertical part) now works for textblock. + +2011-04-1 Carsten Haitzler (The Rasterman) + + * Add Feature: Support explicit shadow direction with extra effect + param (optional). Default as before. + +2011-04-28 Tom Hacohen (TAsn) + + * size_min_restricted_calc: Fixed textblock handling. + +2011-05-15 Tom Hacohen (TAsn) + + * Entry - New API: added edje_object_part_text_append which appends + text to the end of the textblock part. This lets us do cool thing + like population of textblock using idler. + +2011-05-16 Carsten Haitzler (The Rasterman) + + * Add new interpolation modes for programs to make animation + much easier. Added: ACCEL_FAC, DECEL_FAC, SIN_FAC, DIVIS, + BOUNCE, SPRING (also made short name versions of the long ones + possible too). + +2011-05-19 Tom Hacohen (TAsn) + + * Entry: Don't emit "cursor,changed" when setting the text, because + the cursor really didn't change, it's more like a new cursor. + Also, when setting position, don't do anything if position is as it + was. + +2011-05-27 Carsten Haitzler (The Rasterman) + + * Improve performance on create/delete of edje objects by using + evas freeze and thaw calls. May help in certain pathological + situations. + +2011-05-27 Cedric Bail + + * Improve performance by avoiding walking eina_list for nothing + when deleting member_class. + +2011-06-09 Cedric Bail + + * Fix external usage in sub group to have the proper parents. + +2011-06-11 Tom Hacohen (TAsn) + + * Fix an issue with ellipsis not working properly with small + text parts. + +2011-06-21 Cedric Bail + + * Make it possible to define part.description.max only on one axis. + +2011-07-24 Mike Blumenkrantz + + * Add signals entry,paste,request,1 (PRIMARY) and entry,paste,request,3 (CLIPBOARD) + to differentiate between paste types + * Add entry,selection,all,request for signalling ctrl+a in an entry + * Add entry,selection,none,request for signalling ctrl+shift+a in an entry + * Fix entry,paste,request* to be emitted after cursor,changed (fixes middle mouse paste location) + +2011-05-27 Carsten Haitzler (The Rasterman) + + * Fix edje_shutdown() being called before all evas objects created + by edje (edje objects) are gone. Delay internal core shutdown + until all references gone. + +2011-08-03 Tom Hacohen (TAsn) + + * Entry: Added changed,user signal. This signal indicates the entry + has changed because of user interaction, i.e not by code. + +2011-08-22 Cedric Bail + + * Add collection.group.limits { + vertical: "name" value; + horizontal: "name" value; + }. + +2011-08-25 Jihoon Kim + + * Add entry input panel layout setting api's + +2011-08-10 Tom Hacohen (TAsn) + + * Signals: Added the ability to pass extra data with edje signals. + Added edje_object_signal_callback_extra_data_get to support that. + +2011-08-29 Jaehwan Kim + + * Add group's inheritance. + * Add insert_before, insert_after to can change the part's order. + +2011-10-02 Boris Faure (billiob) + + * Fix edje_cc to accept -1 in description.max + +2011-10-03 Tom Hacohen (TAsn) + + * Entry: Added change information to entry,changed,user + +2011-11-03 Jaehwan Kim + + * Transition: Add the "CURRENT" option which causes the edje object move + from its current position. + +2011-10-04 Govindaraju SM, Prince Kumar Dubey + + * Add Edje multisense that allows playback of samples and + vibrator control and ultimately beginsd to pave the way for + more complex audio etc. support. + +2011-11-06 David Seikel (onefang) + + * Lua: Added color_class and text_class functions. + Still need to write a function for setting the classes of an object. + This works for things in OTHER groups using those classes though. + * Add image, text, textblock (commented out), and edje objects. + Very basic support. + * Add functions for set/get text font, size, and text. + * Add function for set/get image image. + Still needs to limit to only imagess in the current edje file. + * Add functions for set/get image fill and filled. + * Add function for set/get edje file. + Still needs to limit to only groups in the current edje file. + * Add full support for evas line object. + * Add full support for evas polygon object. + * Beefed up the example lua script to show most of the above. + Including some handling of size changes. + * White space fixes, one of the editors I use cleans those up automatically. shrugs + +2011-11-06 David Seikel (onefang) + + * Lua: Added half of the evas map API. + +2011-11-07 David Seikel (onefang) + + * Lua: Added the other half of the evas map API. + +2011-11-19 Carsten Haitzler (The Rasterman) + + * Fix message and signal propagation to be consistent in all situations + as well as simpler. + +2011-12-02 Carsten Haitzler (The Rasterman) + + 1.1.0 release + +2011-12-12 Mike Blumenkrantz (discomfitor/zmike) + + * Fix potential crash from buffer overflow on copying map data. + +2011-12-15 Tom Hacohen (TAsn) + + * Entry: Added support for various new key bindings: + Ctrl+Arrows, Ctrl+Del and Ctrl+Backspace. + * Entry: Added cursor,changed,manual signal. + This signal indicates the cursor has been manually changed, i.e by + either mouse click or arrows. + +2011-12-15 Cedric Bail + + * Fix detections of limits by edje_cc parser. + +2011-12-16 Cedric Bail + + * Fix wrong call to free() in edje_load. + * Reduce parts walk to the strict minimum. + +2011-12-19 Cedric Bail + + * Check existence of group at compile time also. + +2012-01-02 Carsten Haitzler (The Rasterman) + + * Fix prototype for edje_object_part_text_cursor_content_get() + as it returned a strduped string and not an internal one, so + this just formalizes its existing behavior correctly. + +2012-01-03 Tom Hacohen (TAsn) + + * Entry: Fixed undo/redo with IMF. + +2012-01-04 Carsten Haitzler (The Rasterman) + + * Add HEX, TERMINAL and PASSWORD layouts to edje + * Add "recalc" smart callback for object size changes + +2012-01-05 Cedric Bail + + * Reduce call to stat during edje_object_file_set. + +2012-01-06 Cedric Bail + + * Unswallow object that are about to be swallowed if necessary. + * Add EDJE_ASPECT_PREFER_SOURCE. + +2012-01-07 David Seikel (onefang) + + * Lua: Calling non exstent functions no longer crashes scripts. + This is so that future scripts will still work with old libraries, + and lets us add the "host can provide Lua API" feature soon. + +2012-01-09 David Seikel (onefang) + + * Lua: Added edje.version(). + +2012-01-14 Carsten Haitzler (The Rasterman) + + * Added minmul propery for edje to multiply minimum size during min size calc + +2012-01-20 Carsten Haitzler (The Rasterman) + + * Fix the ability to change the edje file source of an edje object + inside a callback - it worked but you couldn't swallow/set text etc. + +2012-01-03 Tom Hacohen (TAsn) + + * Entry: Added edje_object_part_text_style_user_set/get that'll use + the new corresponding textblock functions. + +2012-01-23 Cedric Bail + + * Fix overridding group in edje_cc by fixing with the right index. + +2012-01-24 Cedric Bail + + * Filter should only be valid once all program affecting there part are done. + +2012-01-25 Cedric Bail + + * Only store the image used by active group. + +2012-01-26 Cedric Bail + + * Add min: SOURCE, max: SOURCE. + +2012-02-03 Jihoon Kim + + * Entry: Fix to work edje_object_part_text_input_panel_enabled_set/get well + even though ecore_imf doesn't exist or immodule isn't used. + +2012-02-07 WooHyun Jung + + * Added edje_object_markup_filter_callback_{add,del,del_full}. + These let you append(delete) markup filter functions for filtering + inserted text. + +2012-02-08 Cedric Bail + + * Fix bug when using EDJE_CALC_CACHE and using relative to x and y + on separate part. + * Fix bug with filter preventing any action to be triggered. + +2012-02-10 Cedric Bail + + * Prevent propagation of signal, when there is a matching target with edje GROUP. + +2012-02-13 Jihoon Kim + + * add edje_object_part_text_input_panel_show/hide. + These APIs can be used in input panel manual control mode. + * add edje_object_part_text_imf_context_reset that will use + for reseting the input method context. + +2012-02-14 Jihoon Kim + + * add edje_object_part_text_prediction_allow_set/get. + These APIs can be used to set whether prediction feature is allowed or not. + +2012-02-14 Cedric Bail + + * add a way to disable signal broadcasting introduced in edje 1.1. + +2012-02-15 Jihoon Kim + + * add edje_object_part_text_input_panel_language_set/get + edje_object_part_text_input_panel_imdata_set/get + edje_object_part_text_input_panel_return_key_type_set/get + edje_object_part_text_input_panel_return_key_disabled_set/get + +2012-02-20 WooHyun Jung + + * Change API names from edje_object_markup_filter_callback_{add,del,del_full}. + to edje_object_text_markup_filter_callback_{add,del,del_full}. + +2012-02-24 Jihoon Kim + + * add edje_object_part_text_imf_context_get for getting Ecore_IMF_Context handle in edje text object + +2012-02-29 Tom Hacohen (TAsn) + + * Entry: Added edje_object_part_text_user_insert. + This function inserts text as if the user has inserted it. + This means it actually registers as a change and etc. + +2012-03-06 Mikael Sans (XHeLL) + + * Entry: Added double click and triple click. + Double click selects a word. + Triple click selects a line. + +2012-03-07 Tom Hacohen (TAsn) + + * Entry: Replaced edje_object_part_text_style_user_set/get + with edje_object_part_text_style_user_set/get to correspond to + textblock's recent changes. + +2012-03-07 Cedric Bail + + * Correctly count and propagate preload signal with GROUP. + * Fix rotation with fixed point. + +2012-03-11 Cedric Bail + + * Propagate scale factor to GROUP's part. + +2012-03-12 Cedric Bail + + * Make it possible for edje to update size hint automatically. + * Add min: SOURCE to GROUP's part. + +2012-03-30 Jihoon Kim + + * Fix number doesn't insert even though NUM LOCK is locked. + +2012-04-16 Carsten Haitzler (The Rasterman) + + * Add EDJE_VERSION_12 define so edc files can #ifdef compile + right. + +2012-04-20 Carsten Haitzler (The Rasterman) + + * To work through a bug in Elementary, add + edje_object_part_text_escaped_set() that converts escapes to + plain UTF8 if the part is TEXT. + +2012-04-26 Carsten Haitzler (The Rasterman) + + 1.2.0 release + +2012-04-30 Jérôme Pinot + + * Add missing files in the tarballs. + +2012-05-02 Cedric Bail + + * Doing less allocation and reuse Evas_Map does help. + +2012-05-08 Cedric Bail + + * Add edje_watch tools to automatically rebuild edc. + +2012-05-09 Cedric Bail + + * Fix bug in case of nesting edje_object_signal_emit and edje_object_signal_callback_{add,del} + * Check that the file changed on disk when trying to reopen it. + * Emit ['edje,change,file', 'edje'] when the file change on disk. + * Automatically reload edje file when it change in edje_player. + +2012-05-10 Cedric Bail + + * Preserve user box and table items during call of edje_object_file_set. + +2012-05-12 Rajeev Ranjan (Rajeev) + + * Add edje_cc optimization to remove alpha channel flag from images + with absolutely no alpha in them if marked as havin alpha in the + originals + +2012-05-14 Cedric Bail + + * Preserve drag informations during call of edje_object_file_set. + +2012-05-15 Carsten Haitzler (The Rasterman) + + * Optimize edje_cc to be multi-threaded and compress in parallel + * Remove O(n2) algorithms for O(1) in the parser in edje_cc + * Add options for the new compression modes in Eet. (fastcomp + and fastdecomp - LZ4 and LZ4HC). + * Overall sped up edje_cc by 4x faster (if you use fastcomp) + and about 4.5x faster with old zlib compression. + +2012-05-16 Cedric Bail + + * Fix table and text when fixed point is turned on. + * Clamp image tween to never underflow also. + +2012-05-20 Cedric Bail + + * Use Eina_File instead of fopen when possible in edje_cc. + +2012-05-21 Shilpa Onkar Singh + + * Fix patch for edje draggable jump issue when external event + area is used for the dragable. + +2012-06-04 Cedric Bail + + * Add SPACER part to reduce the load on the canvas (lighter and faster theme). + +2012-06-04 Prince Kumar Dubey + + * Fix decompile of sound samples to use sound source file, not name + * Fix decompile of sound samples not double-free + * Fix alsa configure option to be alsa, not flac. + +2012-06-06 Jihoon Kim + + * edje_entry: display preedit string even though there is no attribute + +2012-06-20 Kim Shinwoo + + * Add edje_object_access_part_list_get and acess flags in edc file. + +2012-06-21 Carsten Haitzler (The Rasterman) + + * Improve edje_cc slightly to use prefix for full path to + embryo_cc. this still like before requires embryo and edje to share + the same install prefix for edje_cc to work. + +2012-06-12 Michael Bouchaud (yoz) + + * The aliases are now inherited from the targeted group + * Aliases can be usable with edje programs, if the part is in the + group + +2012-06-24 Cedric Bail + + * Emit signal for flagged part when their size get to zero. + +2012-07-03 Tom Hacohen (TAsn) + + * Entry: Update anchors from user_insert as well. + +2012-07-12 Tom Hacohen (TAsn) + + * Textblock: Fixed issue with updating only the font size using text + classes. + * Textblock: Fixed updating textblock text_class with + edje_text_class_set. + * Text classes: Fixed edje_text_class_set to behave like + edje_object_text_class_set (and as expected) wrt NULL fonts. + +2012-07-12 Cedric Bail + + * Warn at compile time about forgotten image definition. + * Stop compilation when clipping to a non RECT part. + +2012-07-14 Cedric Bail + + * Fix Edje_Multisense shutdown. + +2012-07-24 Carsten Haitzler (The Rasterman) + + * Fix edje entry to extend selection to char pos/word or line + when holding shift + mouse click. + +2012-07-29 Cedric Bail + + * Reduce potential reentrant issue when using edje_object_signal_emit. + +2012-08-06 Cedric Bail + + * Call edje_object_message_signal_process also on GROUP part Edje object. + +2012-08-07 Cedric Bail + + * Fix memory leak when Edje file have alias defined. + +2012-08-09 Cedric Bail + + * Improve speed of color_class lookup by using an Eina_Hash. + +2012-08-14 Hermet + + * Fix the uv mapping correctly in case of image swallowed. + +2012-08-21 Guilherme Silveira + + * Fix password timeout with fixed point. + +2012-08-24 Cedric Bail + + * Properly destroy color_class and text_class on an Edje_Object. + +2012-08-27 Tom Hacohen (TAsn) + + * Textblock: Fixed issue with textblock fit not sizing correctly. This + fix is not perfect. + +2012-08-29 Cedric Bail + + * Don't leak memory on edje block error during signal emit. diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..7d1c323 --- /dev/null +++ b/INSTALL @@ -0,0 +1,365 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, +2006, 2007, 2008, 2009 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..01415b9 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,99 @@ +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = data src utils doc + +MAINTAINERCLEANFILES = \ +Makefile.in \ +aclocal.m4 \ +compile \ +config.guess \ +config.h.in \ +config.h.in~ \ +config.sub \ +configure \ +depcomp \ +install-sh \ +ltmain.sh \ +missing \ +$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \ +$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \ +$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc.tar.bz2 \ +m4/libtool.m4 \ +m4/lt~obsolete.m4 \ +m4/ltoptions.m4 \ +m4/ltsugar.m4 \ +m4/ltversion.m4 + +### this is all fine and great - but edje should not be going and installing +### data in another software's data dir - it's just wrong. not to mention this +### also breaks make distcheck... +# if test "x${vimdir}" != "x"; then \ +# $(mkinstalldirs) $(DESTDIR)$(vimdir)/syntax; \ +# cp -p $(srcdir)/data/edc.vim $(DESTDIR)$(vimdir)/syntax/; \ +# fi + +bin_SCRIPTS = + +EXTRA_DIST = \ +AUTHORS \ +COPYING \ +autogen.sh \ +edje.pc.in \ +edje.spec \ +edje.spec.in \ +README + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = edje.pc + +.PHONY: doc coverage + +# Documentation + +doc: + @echo "entering doc/" + make -C doc doc + +# Unit tests + +if EFL_ENABLE_TESTS + +check-local: + @./src/tests/edje_suite + +else + +check-local: + @echo "reconfigure with --enable-tests" + +endif + +# Coverage report + +if EFL_ENABLE_COVERAGE +lcov-reset: + @rm -rf $(top_builddir)/coverage + @find $(top_builddir) -name "*.gcda" -delete + @lcov --zerocounters --directory $(top_builddir) + +lcov-report: + @mkdir $(top_builddir)/coverage + lcov --capture --compat-libtool --output-file $(top_builddir)/coverage/coverage.info --directory $(top_builddir) + lcov --remove $(top_builddir)/coverage/coverage.info '*.h' --output-file $(top_builddir)/coverage/coverage.cleaned.info + genhtml -t "$(PACKAGE_STRING)" -o $(top_builddir)/coverage/html $(top_builddir)/coverage/coverage.cleaned.info + @echo "Coverage Report at $(top_builddir)/coverage/html" + +coverage: + @$(MAKE) lcov-reset + @$(MAKE) check + @$(MAKE) lcov-report +else +lcov-reset: + @echo "reconfigure with --enable-coverage" + +lcov-report: + @echo "reconfigure with --enable-coverage" + +coverage: + @echo "reconfigure with --enable-tests --enable-coverage" +endif diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..75c558e --- /dev/null +++ b/NEWS @@ -0,0 +1,163 @@ +Edje 1.7.0 + +Changes since Edje 1.2.0: +------------------------- + +Additions: + * Add edje_watch to monitore change on edje source. + * Emit ['edje,change,file', 'edje'] when the file change on disk. + * edje_player will automatically reload the file when it change on disk. + * Add SPACER part. This part are not putting anything into the canvas. So lighter and faster to + process (Use it to replace RECT part that are never visible and never catch any event). + * Add accessibility flags and API to retrieve the relevant part. + * Emit signal when flagged part size get to zero. + * Warn at compile time about forgotten image. + * Stop compilation when clipping to a non RECT part. + +Improvements: + * Allocate once and reuse Evas_Map. + * Make edje_cc faster by improving the parser, mapping file in memory and using threads. + * Made state index optional in EDC files and Embryo scripts. + * Improve speed of color_class lookup by using an Eina_Hash. + +Fixes: + * Add missing files in the tarballs. + * Prevent crash when running nested edje_object_signal_emit with edje_object_signal_callback_{add,del}. + * Do actually verify that the file on disk is different from the file we have loaded. + * Preserve user drag, box and table information during call of edje_object_file_set. + * Fix table and text when fixed point is turned on. + * Clamp image tween to never underflow also. + * [entry] display preedit string even though there is no attribute + * Fix shutdown of Edje_Multisense. + * Reduce potential reentrant issue when using edje_object_signal_emit. + * Call edje_object_message_signal_process also on GROUP part Edje object. + * Remove memory leak when alias are present in the edj file. + * Properly destroy color_class and text_class on an Edje_Object. + * Stop leaking memory on edje block error during signal emit. + +Edje 1.2.0 + +Changes since Edje 1.1.0: +------------------------- + +Additions: + + * "recalc" smart callback for object size changes. + * EDJE_ASPECT_PREFER_SOURCE. + * edje.version() Lua function. + * minmul edc property. + * add min: SOURCE and max: SOURCE to IMAGE and GROUP parts. + * add broadcast_signal: bool. + * add edje_object_part_text_imf_context_get(). + * add edje_object_update_hints_set() and edje_object_update_hints_get(). + * nee keybindings in entry flr ctrl+arrows, ctrl+del and ctrl+backspace. + * cursor,changed,manual signal from entry. + * undo/redo in entry + IMF. + * HEX, TERMINAL, PASSOWORD vkbd types added. + * recalc smart callback for object size changes back to C. + * EDJE_ASPECT_PREFER_SOURCE. + * Lua: edje.version(). + * minmul property. + * edje_object_part_text_style_user_set/get(). + * min/max: SOURCE. + * edje_object_text_markup_filter_callback_add/del/del_full(). + * edje_object_part_text_input_panel_show/hide(). + * edje_object_part_text_imf_context_reset(). + * edje_object_part_text_prediction_allow_set/get(). + * add a way to disable signal broadcasting. + * edje_object_part_text_input_panel_language_set/get(). + * edje_object_part_text_input_panel_imdata_set/get(). + * edje_object_part_text_input_panel_return_key_type_set/get(). + * edje_object_part_text_input_panel_return_key_disabled_set/get(). + * edje_object_part_text_user_insert() + * double click in entry selects word, triple selects line. + * EDJE_VERSION_12 define in edc for #ifdefs handling edje 1.2 (or older) + * edje_object_part_text_escaped_set() + +Improvements: + * speedup load time of Edje file. + * check existence of group at compile time also. + * reduce number of call to stat during edje_object_file_set. + * unswallow object about to be swallowed if necessary. + * Lua scripts now more resilient against API changes. + * edje_cc only store the image actively used in an edje file. + * reduction in part walking. + * check group existence at edje_cc time. + * edje_object_part_text_cursor_content_get() prototype fixed. + * calling non-existant lua functions doesn't crash now. + * make it possible to update size hints automatically + +Fixes: + * Correctly count and propagate preload signal with GROUP. + * Fix rotation with fixed point. + * Correctly propagate scale factor to GROUP. + * Potential crash from buffer overflow copying map data. + * Limits detection by edje_cc. + * Errant free() call in loading of edje files. + * unswallow objects that are going to be swallowed elsewhere. + * ability to change edje source correctly inside edje callback. + * overriding group in edje_cc. + * filter now only valid once program affecting parts is done. + * edje_object_part_text_input_panel_enabled_set/get if IMF doesn't exist. + * EDJE_CALC_CACHE issues and when using relative to_x/y on separate parts. + * filter preventing any action being triggered. + * signal propagation when matching target GROUP exists. + * correctly count and propagate preload signal with GROUP + * rotation with fixed point + * propagate scale factor to GROUPS + * fix no number inserts even if numlock is locked + +Changes since Edje 1.0.0: +------------------------- + +Additions: + + * "UNDER" entry cursor mode + * auto alignment of TEXT parts with text.alignment set to -1 + * mirroring support + * edje_object_part_text_cursor_pos_set/get() + * size_range propert to TEXT parts + * proxy parts so part can source other parts including swallows + * support explicit shadow direction with added effect param + * edje_object_part_text_append() + * new interpolations: ACCEL_FAC, DECEL_FAC, SIN_FAC, DIVIS, BOUNCE, SPRING + * "entry,paste,request,1" signal (primary) + * "entry,paste,request,3" signal (clipboard) + * "entry,selection,all,request" signal + * "entry,selection,none,request" signal + * "entry,paste,request*" signals afte cursor change + * "entry,changed,user" signal + * collection.group.limits.horizontal/vertical + * input panel layout setting API's + * edje_object_signal_callback_extra_data_get() + * group inheritance and part re-ordering with inheritance + * add change information to "entry,changed,user" + * add "CURRENT" option for transitions to transition from current state + * lua color/text class, map, text, image, line, polygon and edje object API's + +Fixes: + + * invalid memory access in edje alias code + * recusive aliases fixed + * cursor didn't change on backspace signal + * propagation of recursive events on existing part + * box/table signal not including name correctly + * clicked signal on entry + * propagation of recursive events between existing and non-existing parts + * textblock handling in size_min_restricted_calc fixed + * stop emitting "cursor,changed" on text set + * external usage in sub groups now have proper parents + * ellipsis fixed with small text parts + * edje_shutdown() fixed if called before all edje objects are gone + * allow -1 for description.max + +Improvements: + + * built-in epp (from e16) to replace cpp/gcc pre-processor on all platforms + * edje_decc only uses edje_cc as compiler for security paranoia + * use smart clipper more from evas + * text.align now works for textblock too + * creation/deletion of edje objects should be faster with freeze and thaws + * don't walk eina_list when deleting member classes - faster + * part.description.max now can define just 1 axis + * signal and message propagation is more consistent and simpler now diff --git a/README b/README new file mode 100644 index 0000000..f57cfd3 --- /dev/null +++ b/README @@ -0,0 +1,42 @@ +Edje 1.7.0 + +****************************************************************************** + + FOR ANY ISSUES PLEASE EMAIL: + enlightenment-devel@lists.sourceforge.net + +****************************************************************************** + +Requirements: +------------- + +Must: + libc + eet (at least 1.5.0) + ecore (at least 1.1.0) + ecore-evas (at least 1.1.0) + ecore-file (at least 1.1.0) + embryo (at least 1.1.0) + evas (at least 1.1.0) +For audio support (disabled - you have to patch to enable): + remix - https://github.com/kfish/remix + libsndfile (at least 1.0.22) + libvorbis + libogg + libflac + libasound (alsa) + +Edje is a graphical layout and animation library for animated resizable, +compressed and scalable themes. It is meant to abstract UI from the +programmer to make it possible to plug in any replacement look at feel +that can be generated any time after an application or library has +already been developed, thus allowing full flexibility of look and +feel without having to involve the software developers. + +------------------------------------------------------------------------------ +COMPILING AND INSTALLING: + + ./configure + make +(as root unless you are installing in your users directories): + make install diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..00116ea --- /dev/null +++ b/autogen.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +rm -rf autom4te.cache +rm -f aclocal.m4 ltmain.sh + +touch README +touch ABOUT-NLS + +echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1 +echo "Running autoheader..." ; autoheader || exit 1 +echo "Running autoconf..." ; autoconf || exit 1 +echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1 +echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1 + +W=0 + +rm -f config.cache-env.tmp +echo "OLD_PARM=\"$@\"" >> config.cache-env.tmp +echo "OLD_CFLAGS=\"$CFLAGS\"" >> config.cache-env.tmp +echo "OLD_PATH=\"$PATH\"" >> config.cache-env.tmp +echo "OLD_PKG_CONFIG_PATH=\"$PKG_CONFIG_PATH\"" >> config.cache-env.tmp +echo "OLD_LDFLAGS=\"$LDFLAGS\"" >> config.cache-env.tmp + +cmp config.cache-env.tmp config.cache-env >> /dev/null +if [ $? -ne 0 ]; then + W=1; +fi + +if [ $W -ne 0 ]; then + echo "Cleaning configure cache..."; + rm -f config.cache config.cache-env + mv config.cache-env.tmp config.cache-env +else + rm -f config.cache-env.tmp +fi + +if [ -z "$NOCONFIGURE" ]; then + ./configure -C "$@" +fi diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..199f042 --- /dev/null +++ b/configure.ac @@ -0,0 +1,648 @@ +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +m4_define([v_maj], [1]) +m4_define([v_min], [7]) +m4_define([v_mic], [0]) +m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v '\(export\|Unversioned directory\)' || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n'])) +m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))]) +##-- When released, remove the dnl on the below line +m4_undefine([v_rev]) +##-- When doing snapshots - change soname. remove dnl on below line +dnl m4_define([relname], [ver-pre-svn-07]) +dnl m4_define([v_rel], [-release relname]) +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +m4_ifdef([v_rev], [m4_define([v_ver], [v_maj.v_min.v_mic.v_rev])], [m4_define([v_ver], [v_maj.v_min.v_mic])]) +m4_define([lt_cur], m4_eval(v_maj + v_min)) +m4_define([lt_rev], v_mic) +m4_define([lt_age], v_min) +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## + +AC_INIT([edje], [v_ver], [enlightenment-devel@lists.sourceforge.net]) +AC_PREREQ([2.52]) +AC_CONFIG_SRCDIR([configure.ac]) +AC_CONFIG_MACRO_DIR([m4]) + +AC_CONFIG_HEADERS([config.h]) +AH_TOP([ +#ifndef EFL_CONFIG_H__ +#define EFL_CONFIG_H__ +]) +AH_BOTTOM([ +#endif /* EFL_CONFIG_H__ */ +]) + +AM_INIT_AUTOMAKE([1.6 dist-bzip2]) +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_LIBTOOL_WIN32_DLL +define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl +define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl +AC_PROG_LIBTOOL + +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +m4_ifdef([v_rev], , [m4_define([v_rev], [0])]) +m4_ifdef([v_rel], , [m4_define([v_rel], [])]) +AC_DEFINE_UNQUOTED(VMAJ, [v_maj], [Major version]) +AC_DEFINE_UNQUOTED(VMIN, [v_min], [Minor version]) +AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version]) +AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison]) +version_info="lt_cur:lt_rev:lt_age" +release_info="v_rel" +AC_SUBST(version_info) +AC_SUBST(release_info) +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## +VMAJ=v_maj +AC_SUBST(VMAJ) + +AC_DEFINE_UNQUOTED([SHARED_LIB_SUFFIX], ["$shrext_cmds"], [Suffix for shared objects]) + +### Default options with respect to host +AC_CANONICAL_BUILD +AC_CANONICAL_HOST + + +case "$host_os" in + mingw32ce*) + MODULE_ARCH="$host_os-$host_cpu" + install_vim="no" + have_edje_cc="no" + ;; + *) + MODULE_ARCH="$host_os-$host_cpu-v_maj.0.0" + install_vim="yes" + have_edje_cc="yes" + ;; +esac + +requirement_edje="" + +AC_SUBST(MODULE_ARCH) +AC_DEFINE_UNQUOTED(MODULE_ARCH, "${MODULE_ARCH}", "Module architecture") + +### Additional options to configure + +AC_ARG_ENABLE([amalgamation], + [AC_HELP_STRING([--enable-amalgamation], [enable generation of one single file with all source code in it, helps compiler optimizations.])], + [if test "x${enableval}" = "xyes"; then + do_amalgamation="yes" + else + do_amalgamation="no" + fi + ], + [do_amalgamation="no"] +) +AM_CONDITIONAL([EDJE_AMALGAMATION], [test "x${do_amalgamation}" = "xyes"]) + +EFL_WITH_BIN([edje], [edje-cc], [edje_cc]) + +EFL_ENABLE_BIN([edje-cc]) +EFL_ENABLE_BIN([edje-decc]) +EFL_ENABLE_BIN([edje-recc]) +EFL_ENABLE_BIN([edje-player]) +EFL_ENABLE_BIN([edje-inspector]) +EFL_ENABLE_BIN([edje-external-inspector]) +EFL_ENABLE_BIN([edje-watch]) + +# Optional EDJE_PROGRAM_CACHE (use much more ram, but increase speed in some cases) +want_edje_program_cache="no" + +AC_ARG_ENABLE([edje-program-cache], + [AC_HELP_STRING( + [--enable-edje-program-cache], + [enable EDJE_PROGRAM_CACHE support. [[default=disabled]]] + )], + [want_edje_program_cache=$enableval] +) +AM_CONDITIONAL([EDJE_PROGRAM_CACHE], [test "x${want_edje_program_cache}" = "xyes"]) + +if test "x${want_edje_program_cache}" = "xyes" ; then + AC_DEFINE([EDJE_PROGRAM_CACHE], [1], [Cache result of program glob matches - this uses up extra ram with the gain of faster program matching]) +fi + +# Optional EDJE_CALC_CACHE (use more ram, but increase speed by reducing the need to recalculate static stuff) +want_edje_calc_cache="yes" + +AC_ARG_ENABLE([edje-calc-cache], + [AC_HELP_STRING( + [--enable-edje-calc-cache], + [enable EDJE_CALC_CACHE support. [[default=disabled]]] + )], + [want_edje_calc_cache=$enableval] +) +AM_CONDITIONAL([EDJE_CALC_CACHE], [test "x${want_edje_calc_cache}" = "xyes"]) + +if test "x${want_edje_calc_cache}" = "xyes" ; then + AC_DEFINE([EDJE_CALC_CACHE], [1], [Cache result of edje_part_recalc - this uses up extra ram with the gain of reducing CPU usage when edje object are not resized]) +fi + +# Enable Fixed Point use +want_fixed_point="no" + +AC_ARG_ENABLE([fixed-point], + [AC_HELP_STRING( + [--enable-fixed-point], + [reduce use of FPU by using Fixed Point provided by Eina and Eet, [[default=disabled]]] + )], + [want_fixed_point=$enableval] +) +AM_CONDITIONAL([BUILD_EDJE_FP], [test "x${want_fixed_point}" = "xyes"]) + +if test "x${want_fixed_point}" = "xyes" ; then + AC_DEFINE([BUILD_EDJE_FP], [1], [Use Fixed Point instead of FPU]) +fi + +install_vim="yes" +AC_ARG_WITH([vim], + [AC_HELP_STRING([--with-vim=DIR], [Location of Vim data files [[autodetect]]])], + [ + if test -d "${withval}"; then + vimdir="${withval}" + fi + ] +) + +if test "x${vimdir}" = "x" ; then + if test -d "${prefix}/share/vim"; then + vimdir="${prefix}/share/vim" + elif test -d "/usr/share/vim"; then + vimdir="/usr/share/vim" + elif test -d "/usr/local/share/vim"; then + vimdir="/usr/local/share/vim" + elif test -d "/opt/share/vim"; then + vimdir="/opt/share/vim" + else + install_vim="no" + fi +fi + +AC_MSG_CHECKING([for location of Vim data files]) + +if test "${install_vim}" = "yes"; then + AC_MSG_RESULT([$vimdir]) +else + AC_MSG_RESULT([Not found, EDC syntax file will not be installed]) +fi + +AC_SUBST(vimdir) + +### Checks for programs +AC_PROG_CC + +# doxygen program for documentation building + +EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"]) + +# python + +AM_PATH_PYTHON([2.5], , [:]) +AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != : ]) + +# pkg-config + +PKG_PROG_PKG_CONFIG + +# Check whether pkg-config supports Requires.private + +if $PKG_CONFIG --atleast-pkgconfig-version 0.22; then + pkgconfig_requires_private="Requires.private" +else + pkgconfig_requires_private="Requires" +fi +AC_SUBST(pkgconfig_requires_private) + + +### Checks for libraries + +# Evil library for compilation on Windows + +EFL_EDJE_BUILD="" +case "$host_os" in + mingw*) + PKG_CHECK_MODULES([EVIL], [evil >= 1.6.99]) + AC_DEFINE([HAVE_EVIL], [1], [Set to 1 if Evil library is installed]) + requirement_edje="evil ${requirement_edje}" + EFL_EDJE_BUILD="-DEFL_EDJE_BUILD" + ;; +esac +AC_SUBST(EFL_EDJE_BUILD) + +# Dependencies for the library + +# Lua pkg-config hack for different naming conventions +have_lua="yes" +requirement_lua="" +lua_libs="" +PKG_CHECK_MODULES([LUA], [lua >= 5.1.0], requirement_lua="lua", + [PKG_CHECK_MODULES([LUA], [lua5.1 >= 5.1.0], requirement_lua="lua5.1", + [PKG_CHECK_MODULES([LUA], [lua-5.1 >= 5.1.0], requirement_lua="lua-5.1", + [PKG_CHECK_MODULES([LUA], [lua51 >= 5.1.0], requirement_lua="lua51", + [have_lua="no"])])])]) + +if test "x${have_lua}" = "xno" ; then + AC_MSG_CHECKING([whether lua_newstate() is in liblua]) + AC_CHECK_LIB([lua], [lua_newstate], + [ + have_lua="yes" + lua_libs="-llua" + ], + [have_lua="no"]) + AC_MSG_RESULT([${have_lua}]) +fi +AC_SUBST(lua_libs) + +if test "x${have_lua}" = "xno" ; then + AC_MSG_ERROR([Cannot find lua library. Be sure that you have installed it and set CFLAGS and LDFLAGS correctly]) +fi + +PKG_CHECK_MODULES([MINIMAL], + [ + eina >= 1.6.99 + eet >= 1.6.99 + ]) + +PKG_CHECK_MODULES([EDJE], + [ + eina >= 1.6.99 + eet >= 1.6.99 + evas >= 1.6.99 + ecore >= 1.6.99 + ecore-evas >= 1.6.99 + ecore-file >= 1.6.99 + ecore-input >= 1.6.99 + embryo >= 1.6.99 + ]) + +EDJE_LIBS="${EDJE_LIBS} ${LUA_LIBS} ${lua_libs}" +EDJE_CFLAGS="${EDJE_CFLAGS} ${LUA_CFLAGS}" + +requirement_edje="embryo >= 1.6.99 ecore-evas >= 1.6.99 ecore >= 1.6.99 evas >= 1.6.99 eet >= 1.6.99 eina >= 1.6.99 ${requirement_edje}" +requirement_edje="${requirement_lua} ${requirement_edje}" + +have_ecore_imf="no" +PKG_CHECK_MODULES([ECORE_IMF], + [ + ecore-imf >= 1.6.99 + ecore-imf-evas >= 1.6.99 + ], + [ + AC_DEFINE([HAVE_ECORE_IMF], [1], [Input Method Support for Edje Entry]) + have_ecore_imf="yes" + requirement_edje="ecore-imf-evas >= 1.6.99 ecore-imf >= 1.6.99 ${requirement_edje}" + ], + [have_ecore_imf="no"]) + +PKG_CHECK_MODULES([EIO], + [eio >= 1.6.99], + [ + AC_DEFINE([HAVE_EIO], [1], [Eio is available for monitoring file assynchronously]) + have_eio="yes" + requirement_edje="eio >= 1.6.99 ${requirement_edje}" + ], + [have_eio="no"]) + +# Enable Multisense use +want_multisense="no" +dnl AC_ARG_ENABLE([multisense], +dnl [AC_HELP_STRING( +dnl [--enable-multisense], +dnl [multisense provides sound. tone and haptic effects support, [[default=disabled]]] +dnl )], +dnl [want_multisense=$enableval] +dnl ) +AM_CONDITIONAL([ENABLE_MULTISENSE], [test "x${want_multisense}" = "xyes"]) + +##sndfile library +have_sndfile="no" +want_sndfile="auto" +AC_ARG_ENABLE([sndfile], + [AC_HELP_STRING([--disable-sndfile], [disable sndfile support. @<:@default=detect@:>@])], + [want_sndfile=$enableval], []) + +if test "x${want_multisense}" = "xyes" -a "x$want_sndfile" != "xno"; then + + PKG_CHECK_MODULES([SNDFILE], + [sndfile >= 1.0.21], + [ + AC_DEFINE(HAVE_LIBSNDFILE, 1, [sndfile support for Edje]) + have_sndfile="yes" + requirement_edje="sndfile >= 1.0.21 ${requirement_edje}" + ], + [have_sndfile="no"; want_multisense="no"] + ) + + if test "x$want_sndfile" = "xyes" -a "x$have_sndfile" = "xno"; then + AC_MSG_ERROR([sndfile support requested, but not found by pkg-config.]) + fi +fi +AM_CONDITIONAL([HAVE_LIBSNDFILE], [test "x${have_sndfile}" = "xyes"]) + +##libremix library +have_libremix="no" +want_libremix="auto" +AC_ARG_ENABLE([remix], + [AC_HELP_STRING([--disable-remix], [disable remix support. @<:@default=detect@:>@])], + [want_libremix=$enableval], []) + +if test "x${want_multisense}" = "xyes" -a "x$want_libremix" != "xno"; then + PKG_CHECK_MODULES([REMIX], + [remix >= 0.2.4], + [ + AC_DEFINE(HAVE_LIBREMIX, 1, [remix support for Edje]) + have_libremix="yes" + requirement_edje="remix >= 0.2.4 ${requirement_edje}" + AC_DEFINE(__REMIX_PLUGIN__, 1, "Set to REMIX Plugin type") + REMIX_PLUGIN_DIR=`pkg-config --variable=libdir remix`"/remix" + AC_SUBST(REMIX_PLUGIN_DIR) + AC_DEFINE_UNQUOTED(REMIX_PLUGIN_DIR, "$REMIX_PLUGIN_DIR", [Set the remix plugin directory]) + ], + [have_libremix="no"; want_multisense="no"] + ) + + if test "x$want_libremix" = "xyes" -a "x$have_libremix" = "xno"; then + AC_MSG_ERROR([remix support requested, but not found by pkg-config.]) + fi +fi +AM_CONDITIONAL([HAVE_LIBREMIX], [test "x${have_libremix}" = "xyes"]) + +##vorbis/ogg library +have_vorbis="no" +want_vorbis="auto" +AC_ARG_ENABLE([vorbisenc], + [AC_HELP_STRING([--disable-vorbis], [disable ogg-vorbis support. @<:@default=detect@:>@])], + [want_vorbis=$enableval], []) + +if test "x${want_multisense}" = "xyes" -a "x$want_vorbis" != "xno"; then + PKG_CHECK_MODULES([VORBISENC], + [ + ogg >= 1.1.4 + vorbis >= 1.2.3 + vorbisenc >= 1.2.3 + ], + [ + AC_DEFINE(HAVE_VORBIS, 1, [vorbis support for Edje]) + have_vorbis="yes" + requirement_edje="ogg >= 1.1.4 vorbis >= 1.2.3 vorbisenc >= 1.2.3 ${requirement_edje}" + ], + [have_vorbis="no"; want_multisense="no"] + ) + + if test "x$want_vorbis" = "xyes" -a "x$have_vorbis" = "xno"; then + AC_MSG_ERROR([vorbisenc support requested, but not found by pkg-config.]) + fi +fi + +##alsa library +have_alsa_lib="no" +want_alsa_lib="auto" +AC_ARG_ENABLE([alsa], + [AC_HELP_STRING([--disable-alsa], [disable alsa support. @<:@default=detect@:>@])], + [want_alsa_lib=$enableval], []) + +if test "x${want_multisense}" = "xyes" -a "x$want_alsa_lib" != "xno"; then + PKG_CHECK_MODULES([ALSA], + [ + alsa >= 1.0.21 + ], + [ + AC_DEFINE(HAVE_LIBALSA, 1, [ALSA support for Edje]) + have_alsa_lib="yes" + requirement_edje="alsa >= 1.0.21 ${requirement_edje}" + ], + [have_alsa_lib="no"; want_multisense="no"] + ) + + if test "x$want_alsa_lib" = "xyes" -a "x$have_alsa_lib" = "xno"; then + AC_MSG_ERROR([alsa support requested, but not found by pkg-config.]) + fi +fi +AM_CONDITIONAL([HAVE_LIBALSA], [test "x${have_alsa_lib}" = "xyes"]) + + +##flac library +have_flac_lib="no" +want_flac_lib="auto" +AC_ARG_ENABLE([flac], + [AC_HELP_STRING([--disable-flac], [disable flac support. @<:@default=detect@:>@])], + [want_flac_lib=$enableval], []) + +if test "x${want_multisense}" = "xyes" -a "x$want_flac_lib" != "xno"; then + PKG_CHECK_MODULES([FLAC], + [ + flac >= 1.2.1 + ], + [ + AC_DEFINE(HAVE_LIBFLAC, 1, [flac support for Edje]) + have_flac_lib="yes" + # disabled because this adds flac include dirs to cflags... and + # FLAC has an assert.h in its include dirs that ends up + # overriding the system assert.h and thus causes all sorts of + # mayhem + #requirement_edje="flac >= 1.2.1 ${requirement_edje}" + ], + [have_flac_lib="no"; want_multisense="no"] + ) + if test "x$want_flac_lib" = "xyes" -a "x$have_flac_lib" = "xno"; then + AC_MSG_ERROR([flac support requested, but not found by pkg-config.]) + fi +fi + +if test "x${want_multisense}" = "xyes" ; then + AC_DEFINE([ENABLE_MULTISENSE], [1], [Use Multisense]) +fi +AC_SUBST([want_multisense]) + +# Dependencies for the binaries + +if test "x${have_edje_cc}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_CC], + [ecore-file >= 1.6.99 ecore-evas >= 1.6.99 ecore >= 1.6.99 evas >= 1.6.99 eet >= 1.6.0 eina >= 1.6.99]) + EDJE_CC_LIBS="${EDJE_CC_LIBS} ${LUA_LIBS} ${lua_libs}" +fi + +AM_CONDITIONAL([BUILD_EPP], [test "x${have_edje_cc}" = "xyes"]) + +if test "x${have_edje_decc}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_DECC], + [ecore-file >= 1.6.99 ecore-evas >= 1.6.99 ecore >= 1.6.99 evas >= 1.6.99 eet >= 1.6.99 eina >= 1.6.99]) +fi + +if test "x${have_edje_player}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_PLAYER], + [ecore-evas >= 1.6.99 ecore >= 1.6.99 evas >= 1.6.99 eina >= 1.6.99]) +fi + +if test "x${have_edje_inspector}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_INSPECTOR], + [ecore-evas >= 1.6.99 ecore >= 1.6.99 evas >= 1.6.99 eina >= 1.6.99]) +fi + +if test "x${have_edje_external_inspector}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_EXTERNAL_INSPECTOR], + [ecore >= 1.6.99 evas >= 1.6.99 eina >= 1.6.99]) +fi + +if test "x${have_edje_watch}" = "xyes" ; then + PKG_CHECK_MODULES([EDJE_WATCH], + [ecore >= 1.6.99 eina >= 1.6.99 eio >= 1.6.99], + [have_edje_watch="yes"], + [have_edje_watch="no"]) +fi + +AM_CONDITIONAL([BUILD_EDJE_WATCH], [test "x${have_edje_watch}" = "xyes"]) + +### Checks for header files +AC_CHECK_HEADERS([locale.h sys/resource.h]) + +EFL_CHECK_PATH_MAX + + +### Checks for types + + +### Checks for structures + + +### Checks for compiler characteristics +AM_PROG_CC_C_O +AC_C_CONST +AC_PROG_CC_STDC +AC_HEADER_STDC +AC_C___ATTRIBUTE__ + +case "$host_os" in + mingw32ce*) + EDJE_CFLAGS="${EDJE_CFLAGS} -D_WIN32_WCE=0x0420" + ;; +esac + + +### Checks for linker characteristics + +lt_enable_auto_import="" +case "$host_os" in + mingw*) + lt_enable_auto_import="-Wl,--enable-auto-import" + ;; +esac +AC_SUBST(lt_enable_auto_import) + + +### Checks for library functions + +AC_ISC_POSIX + +AC_FUNC_ALLOCA + +case "$host_os" in + mingw*) + AC_DEFINE([HAVE_REALPATH], [1], [Define to 1 if you have the `realpath' function.]) + ;; + *) + AC_CHECK_FUNCS([realpath]) + ;; +esac + +### Unit tests, coverage and benchmarking + +EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"]) + +EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"]) +EDJE_CFLAGS="${EDJE_CFLAGS} ${EFL_COVERAGE_CFLAGS}" +EDJE_LIBS="${EDJE_LIBS} ${EFL_COVERAGE_LIBS}" +if test "x$enable_coverage" = "xyes" ; then + EDJE_CFLAGS="${EDJE_CFLAGS} ${EFL_DEBUG_CFLAGS}" +fi + +## Examples + +build_examples="no" +AC_ARG_ENABLE([build-examples], + AC_HELP_STRING([--enable-build-examples], + [Enable building examples. This requires extra dependencies. If you don't have them installed yet, don't build with this option or it will fail. Build again when you have it, overriding the previous installation). @<:@default==disabled@:>@]), + [ + if test "x${enableval}" = "xyes" ; then + build_examples="yes" + else + build_examples="no" + fi + ], + [build_examples="no"]) +AM_CONDITIONAL([BUILD_EXAMPLES], [test "x${build_examples}" = "xyes"]) + +AC_SUBST(requirement_edje) + +AC_OUTPUT([ +edje.pc +edje.spec +Makefile +data/Makefile +data/include/Makefile +doc/Makefile +doc/Doxyfile +src/Makefile +src/lib/Makefile +src/bin/Makefile +src/bin/epp/Makefile +src/modules/Makefile +src/modules/alsa_snd_player/Makefile +src/modules/eet_snd_reader/Makefile +src/modules/multisense_factory/Makefile +src/tests/Makefile +utils/Makefile +src/examples/Makefile +]) + + +##################################################################### +## Info + +echo +echo +echo +echo "------------------------------------------------------------------------" +echo "$PACKAGE $VERSION" +echo "------------------------------------------------------------------------" +echo +echo "Configuration Options Summary:" +echo +echo " Amalgamation.........: ${do_amalgamation}" +echo " Ecore IMF............: $have_ecore_imf" +dnl echo " Multisense...........: $want_multisense" + +if test "x${want_multisense}" = "xyes" ; then +echo " LibRemix.............: $have_libremix" +echo " Libsndfile...........: $have_sndfile" +echo " Ogg/Vorbis...........: $have_vorbis" +echo " LibFLAC..............: $have_flac_lib" +echo " LibALSA..............: $have_alsa_lib" +fi + +echo " EDJE_PROGRAM_CACHE...: $want_edje_program_cache" +echo " EDJE_CALC_CACHE......: $want_edje_calc_cache" +echo " Fixed point..........: $want_fixed_point" +echo " Documentation........: ${build_doc}" +echo " Tests................: ${enable_tests}" +echo " Coverage.............: ${enable_coverage}" +echo " Examples.............: install:${install_examples} build:${build_examples}" +echo +echo "Programs:" +echo +echo " Build edje_cc................: $have_edje_cc" +echo " Build edje_decc..............: $have_edje_decc" +echo " Build edje_recc..............: $have_edje_recc" +echo " Build edje_player............: $have_edje_player" +echo " Build edje_inspector.........: $have_edje_inspector" +echo " Build edje_external_inspector: $have_edje_external_inspector" +echo " Build edje_watch.............: $have_edje_watch" +echo +echo "Compilation............: make (or gmake)" +echo " CPPFLAGS.............: $CPPFLAGS" +echo " CFLAGS...............: $CFLAGS" +echo " LDFLAGS..............: $LDFLAGS" +echo +echo "Installation...........: make install (as root if needed, with 'su' or 'sudo')" +echo " prefix...............: $prefix" +echo diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 0000000..bd673a0 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,10 @@ + +MAINTAINERCLEANFILES = Makefile.in + +SUBDIRS = include + +mimedir = $(datadir)/mime/packages +mime_DATA = edje.xml + +EXTRA_DIST = edc.vim edje-mode.el $(mime_DATA) + diff --git a/data/edc.vim b/data/edc.vim new file mode 100644 index 0000000..5ab4809 --- /dev/null +++ b/data/edc.vim @@ -0,0 +1,348 @@ +" Vim syntax file +" Language: EDC +" Maintainer: billiob +" Last Change: 05/08/2011 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +" +" Usage: +" 1) Copy this file to $HOME/.vim/syntax/ +" 2) Paste the following line to your $HOME/.vimrc file to load the syntax +" automatically: +" +" au BufNewFile,BufRead *.edc set syntax=edc +" +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" A bunch of useful C keywords +syn keyword cStructure images data fonts collections group externals +syn keyword cStructure part parts dragable description rel1 rel2 +syn keyword cStatement text image font fill origin size tag +syn keyword cStructure programs program script script_only lua_script lua_script_only styles style base +syn keyword cStructure spectra spectrum box +syn match cType "+ + +;" contained + +syn keyword cLabel item name min max type effect +syn keyword cLabel mouse_events repeat_events clip_to +syn keyword cLabel color_class text_class x y confine +syn keyword cLabel state visible align step aspect aspect_preference fixed +syn keyword cLabel relative offset to to_x to_y normal tween +syn keyword cLabel border color color2 color3 font size fit align +syn keyword cLabel signal source action transition in target after +syn keyword cLabel text smooth inherit scale middle ignore_flags +syn keyword cLabel alias events entry_mode select_mode multiline +syn keyword cLabel source1 source2 source3 source4 source5 source6 +syn keyword cLabel text_source transitions layout padding +syn keyword cLabel size_w size_h size_max_w size_max_h size_min_w size_min_w +syn keyword cLabel spread scale_hint elipsis ellipsis pointer_mode prefer +syn keyword cLabel precise_is_inside use_alternate_font_metrics options +syn keyword cLabel aspect_mode position span angle repch api +syn keyword cLabel external params size_range border_scale + +syn keyword cConditional if else switch +syn keyword cRepeat while for do +syn keyword cConstant COMP RAW LOSSY USER +syn keyword cConstant RECT TEXT IMAGE SWALLOW TEXTBLOCK GRADIENT +syn keyword cConstant GROUP BOX TABLE EXTERNAL ITEM +syn keyword cConstant SOLID AUTOGRAB NOGRAB +syn keyword cConstant NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW +syn keyword cConstant SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW +syn keyword cConstant FAR_SOFT_SHADOW FAR_SHADOW GLOW +syn keyword cConstant STATE_SET ACTION_STOP SIGNAL_EMIT +syn keyword cConstant SCRIPT LUA_SCRIPT +syn keyword cConstant DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE +syn keyword cConstant LINEAR SINUSOIDAL ACCELERATE DECELERATE +syn keyword cConstant VERTICAL HORIZONTAL ON_HOLD BOTH EDITABLE EXPLICIT +syn keyword cConstant FOCUS_SET "default" NEITHER +syn keyword cConstant DYNAMIC STATIC + +syn keyword cTodo contained TODO FIXME XXX + +" cCommentGroup allows adding matches for special things in comments +syn cluster cCommentGroup contains=cTodo + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +if !exists("c_no_utf") + syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" +endif +if exists("c_no_cformat") + syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial + " cCppString: same as cString, but ends at end of line + syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial +else + syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + syn match cFormat display "%%" contained + syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat + " cCppString: same as cString, but ends at end of line + syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat +endif + +syn match cCharacter "L\='[^\\]'" +syn match cCharacter "L'[^']*'" contains=cSpecial +if exists("c_gnu") + syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'" + syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'" +else + syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'" + syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +endif +syn match cSpecialCharacter display "L\='\\\o\{1,3}'" +syn match cSpecialCharacter display "'\\x\x\{1,2}'" +syn match cSpecialCharacter display "L'\\x\x\+'" + +"when wanted, highlight trailing white space +if exists("c_space_errors") + if !exists("c_no_trail_space_error") + syn match cSpaceError display excludenl "\s\+$" + endif + if !exists("c_no_tab_space_error") + syn match cSpaceError display " \+\t"me=e-1 + endif +endif + +"catch errors caused by wrong parenthesis and brackets +syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom +if exists("c_no_bracket_error") + syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString + " cCppParen: same as cParen but ends at end-of-line; used in cDefine + syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString + syn match cParenError display ")" + syn match cErrInParen display contained "[{}]" +else + syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString + " cCppParen: same as cParen but ends at end-of-line; used in cDefine + syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString + syn match cParenError display "[\])]" + syn match cErrInParen display contained "[\]{}]" + syn region cBracket transparent start='\[' end=']' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString + " cCppBracket: same as cParen but ends at end-of-line; used in cDefine + syn region cCppBracket transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString + syn match cErrInBracket display contained "[);{}]" +endif + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal +" Same, but without octal error (for comments) +syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal +syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero +syn match cOctalZero display contained "\<0" +syn match cFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn match cOctalError display contained "0\o*[89]\d*" +syn case match + +if exists("c_comment_strings") + " A comment can contain cString, cCharacter and cNumber. + " But a "*/" inside a cString in a cComment DOES end the comment! So we + " need to use a special type of cString: cCommentString, which also ends on + " "*/", and sees a "*" at the start of the line as comment again. + " Unfortunately this doesn't very well work for // type of comments :-( + syntax match cCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region cCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError +syn match cPreCondit display "^\s*#\s*\(else\|endif\)\>" +if !exists("c_no_if0") + syn region cCppOut start="^\s*#\s*if\s\+0\+\>" end=".\|$" contains=cCppOut2 + syn region cCppOut2 contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip + syn region cCppSkip contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=cSpaceError,cCppSkip +endif +syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match cIncluded display contained "<[^>]*>" +syn match cInclude display "^\s*#\s*include\>\s*["<]" contains=cIncluded +"syn match cLineSkip "\\$" +syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti +syn region cDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@cPreProcGroup +syn region cPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup + +syn match cUserLabel display "\I\i*" contained + + + +if exists("c_minlines") + let b:c_minlines = c_minlines +else + if !exists("c_no_if0") + let b:c_minlines = 50 " #if 0 constructs can be long + else + let b:c_minlines = 15 " mostly for () constructs + endif +endif +exec "syn sync ccomment cComment minlines=" . b:c_minlines + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_c_syn_inits") + if version < 508 + let did_c_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink cFormat cSpecial + HiLink cCppString cString + HiLink cCommentL cComment + HiLink cCommentStart cComment + HiLink cLabel Label + HiLink cUserLabel Label + HiLink cConditional Conditional + HiLink cRepeat Repeat + HiLink cCharacter Character + HiLink cSpecialCharacter cSpecial + HiLink cNumber Number + HiLink cOctal Number + HiLink cOctalZero PreProc " link this to Error if you want + HiLink cFloat Float + HiLink cOctalError cError + HiLink cParenError cError + HiLink cErrInParen cError + HiLink cErrInBracket cError + HiLink cCommentError cError + HiLink cCommentStartError cError + HiLink cSpaceError cError + HiLink cSpecialError cError + HiLink cOperator Operator + HiLink cStructure Structure + HiLink cStorageClass StorageClass + HiLink cInclude Include + HiLink cPreProc PreProc + HiLink cDefine Macro + HiLink cIncluded cString + HiLink cError Error + HiLink cStatement Statement + HiLink cPreCondit PreCondit + HiLink cType Type + HiLink cConstant Constant + HiLink cCommentString cString + HiLink cComment2String cString + HiLink cCommentSkip cComment + HiLink cString String + HiLink cComment Comment + HiLink cSpecial SpecialChar + HiLink cTodo Todo + HiLink cCppSkip cCppOut + HiLink cCppOut2 cCppOut + HiLink cCppOut Comment + + delcommand HiLink +endif + +let b:current_syntax = "edc" + +" vim: ts=8 diff --git a/data/edje-mode.el b/data/edje-mode.el new file mode 100644 index 0000000..33c6fe6 --- /dev/null +++ b/data/edje-mode.el @@ -0,0 +1,512 @@ +;;; edje-mode-el -- Major mode for editing Edje files + +;; Author: Gustavo Sverzut Barbieri +;; Created: 2007-07-23 +;; Keywords: Edje major-mode +;; Url: http://barbieri-playground.googlecode.com/svn/dot-files/edje-mode.el +;; (if you find this file have problems, check that Url and request update) + +;; Copyright (C) 2007 Gustavo Sverzut Barbieri + +;; This program is free software; you can redistribute it and/or +;; modify it under the terms of the GNU General Public License as +;; published by the Free Software Foundation; either version 2 of +;; the License, or (at your option) any later version. + +;; This program is distributed in the hope that it will be +;; useful, but WITHOUT ANY WARRANTY; without even the implied +;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +;; PURPOSE. See the GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public +;; License along with this program; if not, write to the Free +;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +;; MA 02111-1307 USA + +;;; Commentary: +;; +;; This mode is based on tutorial from Scott Andrew Borton: +;; http://two-wugs.net/emacs/mode-tutorial.html + + +(defvar edje-mode-hook nil) + +(defun number-or-nil-to-string (v &optional default) + (cond ((numberp v) (number-to-string v)) + ((stringp v) (if (string= v "") (number-to-string default) v)) + (t (number-to-string default)))) + +(defun non-empty-string (s) + (and (not (eq 'nil s)) + (not (string= "" s)))) + +(defun edje-new-program-action-signal-emit (source emission) + "Insert new program SIGNAL_EMIT" + (interactive "ssource: \nsemission: ") + (insert + (concat + " action: SIGNAL_EMIT \"" source "\" \"" emission "\";\n" + ))) + +(defun edje-new-program-action-state-set (state value target) + "Insert new program STATE_SET" + (interactive "sstate: \nsvalue (0.0): \nstarget: ") + (insert + (concat + " action: STATE_SET \"" state "\" " + (number-or-nil-to-string value 0.0) ";\n" + " target: \"" target "\";\n" + ))) + +(defun edje-new-program-action (action) + "Insert new program action" + (interactive "saction: ") + (setq action (upcase action)) + (cond ((string= action "STATE_SET") + (edje-new-program-action-state-set "" 0.0 "")) + ((string= action "SIGNAL_EMIT") + (edje-new-program-action-signal-emit "" "")) + )) + +(defun edje-new-program (name signal source action) + "Insert new program block" + (interactive "sname: \nssignal: \nssource: \nsaction: ") + (insert + (concat + "\n" + " program {\n" + " name: \"" name "\";\n" + + (if (non-empty-string signal) + (concat " signal: \"" signal "\";\n")) + + (if (non-empty-string source) + (concat " source: \"" source "\";\n")) + )) + + (edje-new-program-action action) + + (insert + (concat + " }\n" + "\n" + ))) + +(defun edje-new-desc-relative (x y &optional defx defy) + "Insert new part description 'relative' line" + (interactive "sx: \nsy: ") + (insert + (concat + " relative: " + (number-or-nil-to-string x defx) " " + (number-or-nil-to-string y defy) ";\n" + ))) + +(defun edje-new-desc-offset (x y &optional defx defy) + "Insert new part description 'offset' line" + (interactive "sx: \nsy: ") + (insert + (concat + " offset: " + (number-or-nil-to-string x defx) " " + (number-or-nil-to-string y defy) ";\n" + ))) + +(defun edje-new-desc-inherit (name val) + "Insert new part description 'inherit' line" + (interactive "sname: \nsvalue: ") + (insert + (concat + " inherit: \"" name "\" " + (number-or-nil-to-string val 0.0) ";\n" + ))) + +(defun edje-new-desc-text (font size text) + "Insert new part description 'text' block" + (interactive "sfont: \nssize: \nstext: ") + (insert + (concat + " text {\n" + " font: \"" font "\";\n" + " size: " (number-or-nil-to-string size) ";\n" + " text: \"" text "\";\n" + " }\n" + ))) + +(defun edje-new-desc-image (name) + "Insert new part description 'image' block" + (interactive "sname: ") + (insert + (concat + " image {\n" + " normal: \"" name "\";\n" + " }\n" + ))) + +(defun edje-new-desc-color (r g b a &optional defr defg defb defa) + "Insert new part description 'color' line" + (interactive "sred: \nsgreen: \nsblue: \nsalpha: ") + (insert + (concat + " color: " + (number-or-nil-to-string r defr) " " + (number-or-nil-to-string g defg) " " + (number-or-nil-to-string b defb) " " + (number-or-nil-to-string a defa) ";\n" + ))) + +(defun edje-new-desc (name val &optional + r1_rx r1_ry + r2_rx r2_ry + r1_ox r1_oy + r2_ox r2_oy + part_type) + "Insert new part description block" + (interactive "sName: \nsValue: ") + (insert + (concat + " description {\n" + " state: \"" name "\" " (number-or-nil-to-string val 0.0) ";\n")) + (if (string= part_type "RECT") (edje-new-desc-color 255 255 255 255)) + (insert " rel1 {\n") + (edje-new-desc-relative r1_rx r1_ry 0.0 0.0) + (edje-new-desc-offset r1_ox r1_oy 0 0) + (insert + (concat + " }\n" + " rel2 {\n" + )) + (edje-new-desc-relative r2_rx r2_ry 1.0 1.0) + (edje-new-desc-offset r2_ox r2_oy -1 -1) + (insert " }\n") + (cond ((string= part_type "IMAGE") (edje-new-desc-image "")) + ((string= part_type "TEXT") (edje-new-desc-text "" 10 "contents")) + ) + (insert " }\n") + ) + +(defun edje-new-part (name type &optional + r1_rx r1_ry + r2_rx r2_ry + r1_ox r1_oy + r2_ox r2_oy) + "Insert new part" + (interactive "sName: \nsType: ") + (setq type (upcase type)) + (insert + (concat + "\n" + " part {\n" + " name: \"" name "\";\n" + " type: " type ";\n" + " mouse_events: 0;\n" + )) + (edje-new-desc "default" 0.0 r1_rx r1_ry r2_rx r2_ry r1_ox r1_oy r2_ox r2_oy type) + (insert + (concat + " }\n" + ))) + +(defun edje-setup-compile () + (set (make-local-variable 'compile-command) + (concat "edje_cc " (buffer-file-name)) + )) + +(defun edje-cc () + "Runs edje_cc with current buffer." + (interactive) + (compile (edje-setup-compile))) + +(defvar edje-mode-map + (let ((edje-mode-map (make-sparse-keymap))) + (define-key edje-mode-map "\C-j" 'newline-and-indent) + (define-key edje-mode-map "\C-cp" 'edje-new-part) + (define-key edje-mode-map "\C-cd" 'edje-new-desc) + (define-key edje-mode-map "\C-cr" 'edje-new-desc-relative) + (define-key edje-mode-map "\C-co" 'edje-new-desc-offset) + (define-key edje-mode-map "\C-ch" 'edje-new-desc-inherit) + (define-key edje-mode-map "\C-cc" 'edje-new-desc-color) + (define-key edje-mode-map "\C-ci" 'edje-new-desc-image) + (define-key edje-mode-map "\C-ct" 'edje-new-desc-text) + (define-key edje-mode-map "\C-cg" 'edje-new-program) + (define-key edje-mode-map "\C-ca" 'edje-new-program-action) + (define-key edje-mode-map "\C-cs" 'edje-new-program-action-state-set) + (define-key edje-mode-map "\C-ce" 'edje-new-program-action-signal-emit) + edje-mode-map) + "Keymap for Edje major mode") + +(add-hook 'c-mode-hook 'edje-setup-compile) +(add-to-list 'auto-mode-alist '("\\.edc$" . edje-mode)) + +(defconst edje-font-lock-keywords-1 + (eval-when-compile + (list + (list (concat "[ \t]*\\<" + (regexp-opt + '( + "collections" + "data" + "description" + "dragable" + "fill" + "fonts" + "group" + "image" + "images" + "origin" + "part" + "parts" + "program" + "programs" + "rel1" + "rel2" + "script" + "spectra" + "style" + "styles" + "text" + ) t) "\\>\\([ \t]*{\\|\\.\\)") + '(1 font-lock-function-name-face)) + + )) + "Major keywords") + +(defconst edje-font-lock-keywords-2 + (eval-when-compile + (append edje-font-lock-keywords-1 + (list + (list + (concat "^\\([ \t]*\\|[ \t]*[a-z]+\\.\\|\\)\\<" + (regexp-opt + '("action" + "after" + "alias" + "align" + "angle" + "aspect" + "aspect_preference" + "base" + "border" + "clip_to" + "collections" + "color" + "color2" + "color3" + "color_class" + "color_classes" + "confine" + "data" + "description" + "dragable" + "effect" + "elipsis" + "events" + "fill" + "fit" + "fixed" + "font" + "fonts" + "gradient" + "group" + "ignore_flags" + "image" + "images" + "in" + "inherit" + "item" + "max" + "middle" + "min" + "mouse_events" + "name" + "normal" + "offset" + "origin" + "part" + "parts" + "pointer_mode" + "precise_is_inside" + "program" + "programs" + "rel1" + "rel2" + "relative" + "repeat_events" + "signal" + "size" + "smooth" + "source" + "spectra" + "spectrum" + "spread" + "state" + "step" + "style" + "styles" + "tag" + "target" + "text" + "text_class" + "text_source" + "to" + "to_x" + "to_y" + "transition" + "tween" + "type" + "use_alternate_font_metrics" + "visible" + "x" + "y" + ) t) "\\>[ \t]*[:,]") + '(2 font-lock-keyword-face)) + ))) + "Minor keywords") + +(defconst edje-font-lock-keywords-3 + (eval-when-compile + (append edje-font-lock-keywords-2 + (list + (list + (concat "\\<" + (regexp-opt + '(; image options (st_images_image) + "RAW" + "COMP" + "LOSSY" + "USER" + ; part types (st_collections_group_parts_part_type) + "NONE" + "RECT" + "TEXT" + "IMAGE" + "SWALLOW" + "TEXTBLOCK" + "GRADIENT" + "GROUP" + ; ignore flags (st_collections_group_parts_part_ignore_flags) + ;"NONE" + "ON_HOLD" + ; pointer mode (st_collections_group_parts_part_pointer_mode) + "AUTOGRAB" + "NOGRAB" + ; aspect (st_collections_group_parts_part_description_aspect_preference) + "NONE" + "VERTICAL" + "HORIZONTAL" + "BOTH" + ; text effect (st_collections_group_parts_part_effect) + "NONE" + "PLAIN" + "OUTLINE" + "SOFT_OUTLINE" + "SHADOW" + "SOFT_SHADOW" + "OUTLINE_SHADOW" + "OUTLINE_SOFT_SHADOW" + "FAR_SHADOW" + "FAR_SOFT_SHADOW" + "GLOW" + ; image fill (st_collections_group_parts_part_description_fill_type) + "SCALE" + "TILE" + ; program action (st_collections_group_programs_program_action) + "STATE_SET" + "ACTION_STOP" + "SIGNAL_EMIT" + "DRAG_VAL_SET" + "DRAG_VAL_STEP" + "DRAG_VAL_PAGE" + "SCRIPT" + ; program transition (st_collections_group_programs_program_transition) + "LINEAR" + "SINUSOIDAL" + "ACCELERATE" + "DECELERATE" + ) t) "\\>") + '(1 font-lock-builtin-face)) + ))) + "Enumerate values") + +(defconst edje-font-lock-keywords-4 + (eval-when-compile + (append edje-font-lock-keywords-3 + (list + (list + (concat "[ \t]*#" + (regexp-opt + '("if" + "ifdef" + "ifndef" + "define" + "else" + "endif" + "include" + "undef") t) "[ \t]*") + '(1 font-lock-builtin-face)) + ))) + "CPP directives") + +(defconst edje-font-lock-keywords-5 + (eval-when-compile + (append edje-font-lock-keywords-4 + (list + (list "[ \t]*#undef[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)" + '(1 font-lock-variable-name-face)) + (list "[ \t]*#define[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)(" + '(1 font-lock-function-name-face)) + (list "[ \t]*#define[ \t]+\\([a-zA-Z_][a-zA-Z0-9_]*\\)" + '(1 font-lock-variable-name-face)) + ))) + "CPP directives that define constants") + + +(defvar edje-font-lock-keywords edje-font-lock-keywords-5) + +(defvar edje-mode-syntax-table + (let ((edje-mode-syntax-table (make-syntax-table))) + ; This is added so entity names with underscores can be more easily parsed + (modify-syntax-entry ?_ "w" edje-mode-syntax-table) + (modify-syntax-entry ?/ ". 124b" edje-mode-syntax-table) + (modify-syntax-entry ?* ". 23" edje-mode-syntax-table) + (modify-syntax-entry ?\n "> b" edje-mode-syntax-table) + + edje-mode-syntax-table) + "Syntax table for edje-mode") + +(c-add-style + "edje" + '("gnu" + (indent-tabs-mode . nil) + (tab-width . 8) + (c-basic-offset . 3) + (c-backslash-column . 72) + (c-hanging-braces-alist . + ((block-open after) + (brace-list-open after) + (substatement-open after)) + ) + (c-offsets-alist . + ((statement-block-intro . +) + (defun-open . 0) + (substatement-open . 0) + (defun-block-intro . +) + (block-open . 0) + (label . +) + )))) + + +(define-derived-mode edje-mode c-mode "Edje" + "Major mode for editing Edje files" + (interactive) + (use-local-map edje-mode-map) + (set-syntax-table edje-mode-syntax-table) + (set (make-local-variable 'font-lock-defaults) '(edje-font-lock-keywords)) + (set (make-local-variable 'require-final-newline) t) + (c-set-style "edje") + (run-hooks 'edje-mode-hook) + ) + +(provide 'edje-mode) + +;;; edje-mode.el ends here diff --git a/data/edje.xml b/data/edje.xml new file mode 100644 index 0000000..eb299e7 --- /dev/null +++ b/data/edje.xml @@ -0,0 +1,11 @@ + + + + Edje source file + + + + Edje file + + + diff --git a/data/include/Makefile.am b/data/include/Makefile.am new file mode 100644 index 0000000..478813c --- /dev/null +++ b/data/include/Makefile.am @@ -0,0 +1,10 @@ + +MAINTAINERCLEANFILES = Makefile.in + +FILES = edje.inc + +incdir = $(pkgdatadir)/include +inc_DATA = $(FILES) + +EXTRA_DIST = $(FILES) + diff --git a/data/include/edje.inc b/data/include/edje.inc new file mode 100644 index 0000000..dfa5416 --- /dev/null +++ b/data/include/edje.inc @@ -0,0 +1,219 @@ +/* Edje exported calls */ + +/************************************************/ +/* Basic data storage/retrieval (it's explicit) */ +/************************************************/ +/* Example: + * + * In the "global" script section of a group: + * + * script { + * public global_value1; + * public global_value2; + * public global_value3; + * } + * + * In the program script sections, OR in any global functions/routines: + * ( several examples of setting/getting values) + * + * set_int(global_value1, 7); + * set_float(global_value2, 42.0); + * set_str(global_value3, "I am a smelly fish!"); + * new value1 = get_int(global_value1); + * new Float:value2 = get_float(global_value2); + * new value3[100]; get_str(global_value3, value3, 100); + * set_int(global_value1, value1); + * set_float(global_value2, value2); + * set_str(global_value3, value3); + */ +native get_int (id); +native set_int (id, val); +native Float:get_float (id); +native set_float (id, Float:val); +native get_strlen(id); +native get_str (id, dst[], maxlen); +native set_str (id, str[]); + +/********************/ +/* Edje list calls */ +/********************/ +native count (id); +native remove (id, n); +native append_int (id, v); +native prepend_int(id, v); +native insert_int (id, pos, v); +native replace_int (id, pos, v); +native fetch_int (id, pos); +native append_str (id, str[]); +native prepend_str(id, str[]); +native insert_str (id, pos, str[]); +native replace_str(id, pos, str[]); +native fetch_str (id, pos, dst[], maxlen); +native append_float (id, Float:v); +native prepend_float(id, Float:v); +native insert_float (id, pos, Float:v); +native replace_float(id, pos, Float:v); +native Float:fetch_float (id, pos); + +/********************/ +/* Edje timer calls */ +/********************/ +native timer (Float:in, fname[], val); +native cancel_timer(id); + +/*******************/ +/* Edje anim calls */ +/*******************/ +native anim (Float:len, fname[], val); +native cancel_anim(id); + +/***********************************************************/ +/* Edje utility calls for dealing with edjes/programs etc. */ +/***********************************************************/ +/* Example: + * + * emit("this_thing", "clicked"); + * emit("state", "playing"); + * + * set_state(PART:"logo", "glowing", 0.0); + * set_state(PART:"button", "default", 0.0); + * + * set_tween_state(PART:"button", 0.5, "default", 0.0, "clicked", 0.0); + * + * run_program(PROGRAM:"program_name"); + */ +native emit (sig[], src[]); +native get_part_id (part[]); +native set_state (part_id, state[], Float:state_val); +native get_state (part_id, dst[], maxlen, &Float:val); +native set_tween_state (part_id, Float:tween, state1[], Float:state1_val, state2[], Float:state2_val); +native run_program (program_id); +native get_drag_dir (part_id); +native get_drag (part_id, &Float:dx, &Float:dy); +native set_drag (part_id, Float:dx, Float:dy); +native get_drag_size (part_id, &Float:dx, &Float:dy); +native set_drag_size (part_id, Float:dx, Float:dy); +native get_drag_step (part_id, &Float:dx, &Float:dy); +native set_drag_step (part_id, Float:dx, Float:dy); +native get_drag_page (part_id, &Float:dx, &Float:dy); +native set_drag_page (part_id, Float:dx, Float:dy); +native set_text (part_id, str[]); +native get_text (part_id, dst[], maxlen); +native get_min_size (&w, &h); +native get_max_size (&w, &h); +native get_color_class (class[], &r, &g, &b, &a); +native set_color_class (class[], r, g, b, a); +native set_text_class (class[], font[], Float:size); +native get_text_class (class[], font[], &Float:size); +native get_geometry (part_id, &x, &y, &w, &h); +native get_mouse (&x, &y); +native get_mouse_buttons(); +native stop_program (program_id); +native stop_programs_on (part_id); +native set_min_size (Float:w, Float:h); +native set_max_size (Float:w, Float:h); +native part_swallow (part_id, GROUP:str[]); + +native external_param_get_int(id, param_name[]); +native external_param_set_int(id, param_name[], value); +native Float:external_param_get_float(id, param_name[]); +native external_param_set_float(id, param_name[], Float:value); +native external_param_get_strlen(id, param_name[]); +native external_param_get_str(id, param_name[], value[], value_maxlen); +native external_param_set_str(id, param_name[], value[]); +native external_param_get_choice_len(id, param_name[]); +native external_param_get_choice(id, param_name[], value[], value_maxlen); +native external_param_set_choice(id, param_name[], value[]); +native external_param_get_bool(id, param_name[]); +native external_param_set_bool(id, param_name[], value); + +enum Msg_Type +{ + MSG_NONE = 0, + MSG_STRING = 2, + MSG_INT = 3, + MSG_FLOAT = 4, + MSG_STRING_SET = 5, + MSG_INT_SET = 6, + MSG_FLOAT_SET = 7, + MSG_STRING_INT = 8, + MSG_STRING_FLOAT = 9, + MSG_STRING_INT_SET = 10, + MSG_STRING_FLOAT_SET = 11 +}; + +native send_message(Msg_Type:type, id, ...); + +/**********************/ +/* Custom state calls */ +/**********************/ + +/* Example: + * + * Create the custom state for "my_part", based on the + * default description of the same part: + * + * custom_state(PART:"my_part", "default", 0.0); + * + * Later, use set_state_val() to change the properties of the custom + * state: + * + * set_state_val(PART:"my_part", STATE_ALIGNMENT, 0.5, 0.5); + * + * get_state_val() works the same way. + */ + +native custom_state(part_id, state[], Float:state_val = 0.0); + +enum State_Param +{ + STATE_ALIGNMENT = 1, + STATE_MIN = 2, + STATE_MAX = 3, + STATE_STEP = 4, + STATE_ASPECT = 5, + STATE_ASPECT_PREF = 6, + STATE_COLOR = 7, + STATE_COLOR2 = 8, + STATE_COLOR3 = 9, + STATE_COLOR_CLASS = 10, + STATE_REL1 = 11, + STATE_REL1_TO = 12, + STATE_REL1_OFFSET = 13, + STATE_REL2 = 14, + STATE_REL2_TO = 15, + STATE_REL2_OFFSET = 16, + STATE_IMAGE = 17, + STATE_BORDER = 18, + STATE_FILL_SMOOTH = 19, + STATE_FILL_POS = 20, + STATE_FILL_SIZE = 21, + STATE_TEXT = 22, + STATE_TEXT_CLASS = 23, + STATE_TEXT_FONT = 24, + STATE_TEXT_STYLE = 25, + STATE_TEXT_SIZE = 26, + STATE_TEXT_FIT = 27, + STATE_TEXT_MIN = 28, + STATE_TEXT_MAX = 29, + STATE_TEXT_ALIGN = 30, + STATE_VISIBLE = 31, + STATE_MAP_ON = 32, + STATE_MAP_PERSP = 33, + STATE_MAP_LIGHT = 34, + STATE_MAP_ROT_CENTER = 35, + STATE_MAP_ROT_X = 36, + STATE_MAP_ROT_Y = 37, + STATE_MAP_ROT_Z = 38, + STATE_MAP_BACK_CULL = 39, + STATE_MAP_PERSP_ON = 40, + STATE_PERSP_ZPLANE = 41, + STATE_PERSP_FOCAL = 42 +}; + +native set_state_val(part_id, State_Param:p, ...); +native get_state_val(part_id, State_Param:p, ...); + +/* Multisense */ +native play_sample (sample_name[], Float:speed); +native play_tone (tone_name[], Float:duration); diff --git a/data/vim/autoload/edccomplete.vim b/data/vim/autoload/edccomplete.vim new file mode 100644 index 0000000..e2521e9 --- /dev/null +++ b/data/vim/autoload/edccomplete.vim @@ -0,0 +1,892 @@ +" Vim completion script +" Language: EDC +" Maintainer: Viktor Kojouharov +" Last Change: 2007 02 24 + +function! edccomplete#Complete(findstart, base) + if a:findstart + " locate the start of the word + let line = getline('.') + let start = col('.') - 1 + let compl_begin = col('.') - 2 + let lastword = -1 + if line =~ ':' && line !~ '\.' + while start > 0 && (line[start - 1] =~ '\k' || line[start - 1] =~ '"') + let start -= 1 + endwhile + else + while start > 0 + if line[start - 1] =~ '\k' + let start -= 1 + elseif line[start - 1] =~ '\.' + if lastword == -1 + let lastword = start - 2 + endif + let start -= 1 + else + break + endif + endwhile + endif + let b:compl_context = getline('.')[0:compl_begin] + + if lastword == -1 + let ppe = searchpos('\.', 'bcn') + let pps = searchpos('\w\+\.', 'bcn') + let b:sparent = '' + if ppe != [0, 0] && pps[0] == ppe[0] && pps[1] <= ppe[1] && pps[0] == line('.') + let b:scontext = line[pps[1] -1 : ppe[1] - 2] + call edccomplete#FindParent(pps[0], pps[1]) + return start + endif + + let startpos = searchpair('{', '', '}', 'bnW') + let lnum = startpos + let line = getline(lnum) + + if line !~ '\a\+' + let lnum = prevnonblank(lnum - 1) + let line = getline(lnum) + endif + + call edccomplete#FindParent(lnum, 1) + let b:scontext = matchstr(line, '\w\+') + + return start + else + let b:scontext = line[start : lastword] + + return lastword + 2 + endif + else + " find months matching with "a:base" + let res = [] + if exists("b:compl_context") + let line = b:compl_context + unlet! b:compl_context + else + let line = a:base + endif + + if b:scontext == 'part' + call edccomplete#AddLabel(res, line, a:base, s:partLabel) + call edccomplete#AddStatement(res, line, a:base, s:partStatement) + if line =~ 'type:\s*' + call edccomplete#AddKeyword(res, a:base, s:partTypes) + elseif line =~ 'effect:\s*' + call edccomplete#AddKeyword(res, a:base, s:partEffects) + elseif line =~ 'select_mode:\s*' + call edccomplete#AddKeyword(res, a:base, s:partSelectMode) + elseif line =~ 'ignore_flags:\s*' + call edccomplete#AddKeyword(res, a:base, s:partIgnoreFlags) + elseif line =~ 'pointer_mode:\s*' + call edccomplete#AddKeyword(res, a:base, s:partPointerMode) + elseif line =~ 'editable_mode:\s*' + call edccomplete#AddKeyword(res, a:base, s:partEditableMode) + endif + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'dragable' + call edccomplete#AddLabel(res, line, a:base, s:dragableLabel) + + elseif b:scontext == 'description' + call edccomplete#AddLabel(res, line, a:base, s:descriptionLabel) + call edccomplete#AddStatement(res, line, a:base, s:descriptionStatement) + if line =~ 'aspect_preference:\s*' + call edccomplete#AddKeyword(res, a:base, s:aspectPrefTypes) + elseif line =~ 'inherit:\s*"\?' + call edccomplete#FindStates(res, a:base, 1) + endif + + elseif b:scontext == 'rel1' || b:scontext == 'rel2' + call edccomplete#AddLabel(res, line, a:base, s:relLabel) + if line =~ 'to\%(_[xy]\)\?:\s*"\?' + call edccomplete#FindNamesIn(res, a:base, 'parts') + endif + + elseif b:scontext == 'map' + call edccomplete#AddLabel(res, line, a:base, s:mapLabel) + call edccomplete#AddStatement(res, line, a:base, s:mapStatement) + + elseif b:scontext == 'rotation' + call edccomplete#AddLabel(res, line, a:base, s:rotationLabel) + + elseif b:scontext == 'perspective' + call edccomplete#AddLabel(res, line, a:base, s:perspectiveLabel) + + elseif b:scontext == 'params' + call edccomplete#AddLabel(res, line, a:base, s:paramsLabel) + + elseif b:scontext == 'image' + call edccomplete#AddLabel(res, line, a:base, s:imageLabel) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + elseif line =~ 'middle:\s*' + call edccomplete#AddKeyword(res, a:base, s:imageMiddleTypes) + elseif line =~ 'scale_hint:\s*' + call edccomplete#AddKeyword(res, a:base, s:imageScaleHint) + endif + + elseif b:scontext == 'fill' + call edccomplete#AddLabel(res, line, a:base, s:fillLabel) + call edccomplete#AddStatement(res, line, a:base, s:fillStatement) + if line =~ 'type:\s*' + call edccomplete#AddKeyword(res, a:base, s:fillTypes) + endif + + elseif b:scontext == 'origin' || b:scontext == 'size' + call edccomplete#AddLabel(res, line, a:base, s:fillInnerStatement) + + elseif b:scontext == 'text' + call edccomplete#AddLabel(res, line, a:base, s:textLabel) + call edccomplete#AddStatement(res, line, a:base, s:textStatement) + + elseif b:scontext == 'program' + call edccomplete#AddLabel(res, line, a:base, s:programLabel) + call edccomplete#AddStatement(res, line, a:base, s:programStatement) + if line =~ 'transition:\s*' + call edccomplete#AddKeyword(res, a:base, s:transitionTypes) + elseif line =~ 'STATE_SET\s*"\?' + call edccomplete#FindStates(res, a:base, 0) + elseif line =~ 'action:\s*' + call edccomplete#AddKeyword(res, a:base, s:actionTypes) + elseif line =~ 'target:\s*"\?' + call edccomplete#FindNamesIn(res, a:base, 'parts') + elseif line =~ 'after:\s*"\?' + call edccomplete#FindNamesIn(res, a:base, 'programs') + endif + + elseif b:scontext == 'programs' + call edccomplete#AddLabel(res, line, a:base, s:programsLabel) + call edccomplete#AddStatement(res, line, a:base, s:programsStatement) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'box' && b:sparent == 'part' + call edccomplete#AddStatement(res, line, a:base, s:boxStatement) + + elseif b:scontext == 'items' + call edccomplete#AddStatement(res, line, a:base, s:boxItemsStatement) + + elseif b:scontext == 'item' + call edccomplete#AddLabel(res, line, a:base, s:boxItemLabel) + if line =~ 'type:\s*' + call edccomplete#AddKeyword(res, a:base, s:boxItemTypes) + elseif line =~ 'aspect_mode:\s*"\?' + call edccomplete#AddKeyword(res, a:base, s:boxItemAspectMode) + endif + + elseif b:scontext == 'box' && b:sparent == 'description' + call edccomplete#AddLabel(res, line, a:base, s:boxDescLabel) + if line =~ 'layout:\s*' + call edccomplete#AddKeyword(res, a:base, s:boxLayout) + endif + + elseif b:scontext == 'table' && b:sparent == 'description' + call edccomplete#AddLabel(res, line, a:base, s:tableDescLabel) + if line =~ 'homogeneous:\s*' + call edccomplete#AddKeyword(res, a:base, s:tableHomogeneousMode) + endif + + elseif b:scontext == 'group' + call edccomplete#AddLabel(res, line, a:base, s:groupLabel) + call edccomplete#AddStatement(res, line, a:base, s:groupStatement) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'parts' + call edccomplete#AddLabel(res, line, a:base, s:partsLabel) + call edccomplete#AddStatement(res, line, a:base, s:partsStatement) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'data' + call edccomplete#AddLabel(res, line, a:base, s:dataLabel) + + elseif b:scontext == 'fonts' + call edccomplete#AddLabel(res, line, a:base, s:fontsLabel) + + elseif b:scontext == 'spectra' + call edccomplete#AddStatement(res, line, a:base, s:spectraStatement) + + elseif b:scontext == 'spectrum' + call edccomplete#AddLabel(res, line, a:base, s:spectrumLabel) + + elseif b:scontext == 'gradient' + call edccomplete#AddLabel(res, line, a:base, s:gradientLabel) + call edccomplete#AddStatement(res, line, a:base, s:gradientStatement) + if line =~ 'type:\s*' + call edccomplete#AddKeyword(res, a:base, s:gradientTypes) + endif + + elseif b:scontext == 'styles' + call edccomplete#AddStatement(res, line, a:base, s:stylesStatement) + + elseif b:scontext == 'style' + call edccomplete#AddLabel(res, line, a:base, s:styleLabel) + + elseif b:scontext == 'color_classes' + call edccomplete#AddStatement(res, line, a:base, s:color_classesStatement) + + elseif b:scontext == 'color_class' + call edccomplete#AddLabel(res, line, a:base, s:color_classLabel) + + elseif b:scontext == 'images' + call edccomplete#AddLabel(res, line, a:base, s:imagesLabel) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'collections' + call edccomplete#AddLabel(res, line, a:base, s:collectionsLabel) + call edccomplete#AddStatement(res, line, a:base, s:collectionsStatement) + if line =~ 'image:\s*".\{-}"' + call edccomplete#AddKeyword(res, a:base, s:imageStorageMethod) + endif + + elseif b:scontext == 'externals' + call edccomplete#AddLabel(res, line, a:base, s:externalsLabel) + + elseif strlen(b:scontext) == 0 + call edccomplete#AddStatement(res, line, a:base, s:topStatement) + endif + + unlet! b:scontext + + return res + endif +endfunction + +function! edccomplete#AddLabel(res, line, base, label) + if a:line =~ ':' + return + endif + + for m in sort(keys(a:label)) + if m =~ '^' . a:base + call add(a:res, {'word': m . ':', 'menu': a:label[m]}) + endif + endfor +endfunction + +function! edccomplete#AddKeyword(res, base, label) + for m in sort(keys(a:label)) + if m =~ '^' . a:base + call add(a:res, {'word': m, 'menu': a:label[m]}) + endif + endfor +endfunction + +function! edccomplete#AddStatement(res, line, base, statement) + if a:line =~ ':' + return + endif + + for m in sort(a:statement) + if m =~ '^' . a:base + call add(a:res, m . ' {') + endif + endfor +endfunction + +function! edccomplete#FindStates(res, base, in_part) + let curpos = getpos('.') + call remove(curpos, 0, 0) + + let states_list = [] + if a:in_part == 1 " in the current part only + let part_start = search('^[ \t}]*\[ \t{]*$', 'bnW') + if part_start != 0 " found it + let line = getline(part_start) + if line !~ '{' + let part_start = nextnonblank(part_start) + endif + call cursor(part_start, 0) + let part_end = searchpair('{', '', '}', 'nW') + endif + else " in the current parts group + let part_start = search('^[ \t}]*\[ \t{]*$', 'bnW') + if part_start != 0 " found it + let line = getline(part_start) + if line !~ '{' + let part_start = nextnonblank(part_start) + endif + call cursor(part_start, 0) + let part_end = searchpair('{', '', '}', 'nW') + endif + endif + + let state_num = search('\%(state:\s*\)"\w\+"', 'W', part_end) + while state_num + let state = matchstr(getline(state_num), '\%(state:\s*\)\@<="\w\+"') + call extend(states_list, [state]) + let state_num = search('\%(state:\s*\)"\w\+"', 'W', part_end) + endwhile + call cursor(curpos) + + for m in sort(states_list) + if m =~ '^' . a:base + call add(a:res, m) + endif + endfor +endfunction + +function! edccomplete#FindNamesIn(res, base, str) + let curpos = getpos('.') + call remove(curpos, 0, 0) + + let names_list = [] + let part_start = search('^[ \t}]*\<' . a:str . '\>[ \t{]*$', 'bnW') + if part_start != 0 " found it + let line = getline(part_start) + if line !~ '{' + let part_start = nextnonblank(part_start) + endif + call cursor(part_start, 0) + let part_end = searchpair('{', '', '}', 'nW') + endif + + let name_num = search('\%(name:\s*\)"\w\+"', 'W', part_end) + while name_num + let name = matchstr(getline(name_num), '\%(name:\s*\)\@<="\w\+"') + call extend(names_list, [name]) + let name_num = search('\%(name:\s*\)"\w\+"', 'W', part_end) + endwhile + call cursor(curpos) + + for m in sort(names_list) + if m =~ '^' . a:base + call add(a:res, m) + endif + endfor +endfunction + +function! edccomplete#FindParent(lnum, cnum) + call setpos('.', [0, a:lnum, a:cnum, 0]) + let ppe = searchpos('\.', 'bcn') + let pps = searchpos('\w\+\.', 'bcn') + if ppe != [0, 0] && pps[0] == ppe[0] && pps[1] <= ppe[1] && pps[0] == line('.') + let b:sparent = line[pps[1] -1 : ppe[1] - 2] + return + endif + + let startpos = searchpair('{', '', '}', 'bnW') + let lnum = startpos + let line = getline(lnum) + + if line !~ '\a\+' + let line = getline(prevnonblank(lnum - 1)) + endif + + let b:sparent = matchstr(line, '\w\+') +endfunction + +" part +let s:partLabel = { + \ 'name': '"name"', + \ 'type': 'keyword', + \ 'effect': 'keyword', + \ 'clip_to': '"part_name"', + \ 'scale': '0-1', + \ 'mouse_events': '0-1', + \ 'repeat_events': '0-1', + \ 'ignore_flags': 'keyword ...', + \ 'pointer_mode': 'keyword', + \ 'select_mode': 'keyword', + \ 'precise_is_inside': '0-1', + \ 'use_alternate_font_metrics': '0-1', + \ 'image': '"filename" keyword', + \ 'font': '"filename" "name"', + \ 'entry_mode': 'keyword', + \ 'multiline': '0-1 (TEXTBLOCK only)', + \ 'source': '"group_name" (GROUP or TEXTBLOCK only)', + \ 'source2': '"group_name" (TEXTBLOCK only)', + \ 'source3': '"group_name" (TEXTBLOCK only)', + \ 'source4': '"group_name" (TEXTBLOCK only)', + \ 'source5': '"group_name" (TEXTBLOCK only)', + \ 'source6': '"group_name" (TEXTBLOCK only)', + \ } +let s:partStatement = [ + \ 'dragable', + \ 'images', + \ 'fonts', + \ 'description', + \ 'styles', + \ 'color_classes', + \ 'program', + \ 'programs', + \ 'box', + \ ] + +" dragable +let s:dragableLabel = { + \ 'x': '0-1 int int', + \ 'y': '0-1 int int', + \ 'confine': '"part_name"', + \ 'events': '"draggable_part_name"', + \ } + +" description +let s:descriptionLabel = { + \ 'state': '"name" index (float)', + \ 'inherit': '"description" index (float)', + \ 'visible': '0-1', + \ 'align': 'x y (float)', + \ 'fixed': 'width height (0-1)', + \ 'min': 'width height (int)', + \ 'max': 'width height (int)', + \ 'step': 'width height (int)', + \ 'aspect': 'min max (float)', + \ 'aspect_preference': 'keyword', + \ 'color_class': '"name"', + \ 'color': '0-255 0-255 0-255 0-255', + \ 'color2': '0-255 0-255 0-255 0-255', + \ 'color3': '0-255 0-255 0-255 0-255', + \ 'font': '"filename" "name"', + \ } +let s:descriptionStatement = [ + \ 'rel1', + \ 'rel2', + \ 'image', + \ 'fill', + \ 'text', + \ 'gradient', + \ 'images', + \ 'fonts', + \ 'styles', + \ 'color_classes', + \ 'program', + \ 'programs', + \ 'box', + \ 'map', + \ ] + +" rel +let s:relLabel = { + \ 'relative': 'x y (float)', + \ 'offset': 'x y (int)', + \ 'to': '"part_name"', + \ 'to_x': '"part_name"', + \ 'to_y': '"part_name"', + \ } +" map +let s:mapLabel = { + \ 'on': '0-1', + \ 'perspective': '"part_name"', + \ 'light': '"part_name"', + \ 'smooth': '0-1', + \ 'pespective_on':'0-1', + \ 'backface_cull':'0-1', + \ 'alpha': '0-1', + \ } +let s:mapStatement = [ + \ 'rotation', + \ ] + +let s:rotationLabel = { + \ 'center': '"part_name"', + \ 'x': '"degrees (float)"', + \ 'y': '"degrees (float)"', + \ 'z': '"degrees (float)"', + \ } + +" params +let s:paramsLabel = { + \ 'int': '"name" int', + \ 'double': '"name" double', + \ 'string': '"name" "string"', + \ } + +" perspective +let s:perspectiveLabel = { + \ 'zplane': 'int', + \ 'focal': 'int', + \ } + + +" image +let s:imageLabel = { + \ 'image': '"filename" keyword', + \ 'normal': '"filename"', + \ 'tween': '"filename"', + \ 'border': 'left right top bottom (int)', + \ 'middle': 'keyword', + \ 'border_scale': '0-1', + \ 'scale_hint': 'keyword', + \ } + +" fill +let s:fillLabel = { + \ 'smooth': '0-1', + \ 'angle': '0-360 (GRADIENT)', + \ 'spread': '0-1', + \ 'type': 'keyword', + \ } +let s:fillStatement = [ + \ 'origin', + \ 'size', + \ ] +" fill origin/size +let s:fillInnerStatement = { + \ 'relative': 'width height (float)', + \ 'offset': 'x y (int)', + \ } +" fill types +let s:fillTypes = { + \ 'SCALE': '', + \ 'TILE': '', + \ } + +" text +let s:textLabel = { + \ 'text': '"string"', + \ 'font': '"font_name"', + \ 'size': 'size (int)', + \ 'text_class': '"class_name"', + \ 'fit': 'x y (0-1)', + \ 'min': 'x y (0-1)', + \ 'max': 'x y (0-1)', + \ 'align': 'x y (float)', + \ 'source': '"part_name"', + \ 'text_source': '"text_part_name"', + \ 'style': '"style_name"', + \ 'elipsis': '0.0-1.0', + \ 'repch': '"string" (PASSWORD mode)', + \ } +let s:textStatement = [ + \ 'fonts', + \ ] + +" program +let s:programLabel = { + \ 'name': '"name"', + \ 'signal': '"signal_name"', + \ 'source': '"part_name"', + \ 'action': 'keyword ...', + \ 'transition': 'keyword time (float)', + \ 'filter': '"part_name" "state_name"', + \ 'in': 'from range (float)', + \ 'target': '"part_name"', + \ 'after': '"program_name"', + \ } +let s:programStatement = [ + \ 'script', + \ 'lua_script', + \ ] + + +" programs +let s:programsLabel = { + \ 'image': '"filename" keyword', + \ 'font': '"filename" "name"', + \ } +let s:programsStatement = [ + \ 'images', + \ 'fonts', + \ 'program', + \ ] + +" box and table +let s:boxStatement = [ + \ 'items', + \ ] +let s:boxItemsStatement = [ + \ 'item', + \ ] +let s:boxItemLabel = { + \ 'type': 'keyword', + \ 'name': '"name"', + \ 'source': '"group_name"', + \ 'min': 'width height (int)', + \ 'prefer': 'width height (int)', + \ 'max': 'width height (int)', + \ 'padding': 'left right top bottom (int)', + \ 'align': 'x y (float)', + \ 'weight': 'x y (float)', + \ 'aspect': 'w h (float)', + \ 'aspect_mode': 'keyword', + \ 'options': '"extra options"', + \ } +let s:boxDescLabel = { + \ 'layout': '"string" ["string"]', + \ 'align': 'float float', + \ 'padding': 'int int', + \ } +let s:tableItemLabel = { + \ 'position': 'col row (int)', + \ 'span': 'col row (int)', + \ } +let s:tableDescLabel = { + \ 'homogeneous': 'keyword', + \ 'align': 'float float', + \ 'padding': 'int int', + \ } + +" group +let s:groupLabel = { + \ 'name': '"name"', + \ 'alias': '"alias"', + \ 'min': 'width height', + \ 'max': 'width height', + \ 'image': '"filename" keyword', + \ 'font': '"filename" "name"', + \ 'script_only': '0-1', + \ } +let s:groupStatement = [ + \ 'data', + \ 'script', + \ 'lua_script', + \ 'parts', + \ 'images', + \ 'fonts', + \ 'styles', + \ 'color_classes', + \ 'program', + \ 'programs', + \ 'externals', + \ ] + +" parts +let s:partsStatement = [ + \ 'images', + \ 'fonts', + \ 'part', + \ 'styles', + \ 'color_classes', + \ 'program', + \ 'programs', + \ ] +let s:partsLabel = { + \ 'image': '"filename" keyword', + \ 'font': '"filename" "name"', + \ } + +" data +let s:dataLabel = { + \ 'item': '"key" "value"', + \ 'file': '"key" "filename"', + \ } + +" fonts +let s:fontsLabel = { + \ 'font': '"filename" "name"', + \ } + +"images +let s:imagesLabel = { + \ 'image': '"filename" keyword', + \ } + +"collections +let s:collectionsStatement = [ + \ 'group', + \ 'images', + \ 'fonts', + \ 'styles', + \ 'color_classes', + \ 'externals', + \ ] +let s:collectionsLabel = { + \ 'image': '"filename" keyword', + \ 'font': '"filename" "name"', + \ } + +" externals +let s:externalsLabel = { + \ 'external': '"name"', + \ } + +" spectra +let s:spectraStatement = [ + \ 'spectrum', + \ ] +" spectrum +let s:spectrumLabel = { + \ 'name': '"name"', + \ 'color': '0-255 0-255 0-255 0-255', + \ } +" gradient +let s:gradientLabel = { + \ 'type': '"keyword"', + \ 'spectrum': '"spectrum_name"', + \ } +let s:gradientStatement = [ + \ 'rel1', + \ 'rel2', + \ ] +" gradient types +let s:gradientTypes = { + \ '"linear"': '', + \ '"radial"': '', + \ '"rectangular"': '', + \ '"angular"': '', + \ '"sinusoidal"': '', + \ } + +" styles +let s:stylesStatement = [ + \ 'style', + \ ] +" style +let s:styleLabel = { + \ 'name': '"name"', + \ 'base': '".. default style properties .."', + \ 'tag': '"tagname" "style properties"', + \ } + +" color_classes +let s:color_classesStatement = [ + \ 'color_class', + \ ] +" color_class +let s:color_classLabel = { + \ 'name': '"name"', + \ 'color': '0-255 0-255 0-255 0-255', + \ 'color2': '0-255 0-255 0-255 0-255', + \ 'color3': '0-255 0-255 0-255 0-255', + \ } + +" toplevel +let s:topStatement = [ + \ 'fonts', + \ 'images', + \ 'data', + \ 'collections', + \ 'spectra', + \ 'styles', + \ 'color_classes', + \ 'externals', + \ ] + +" images image storage method +let s:imageStorageMethod = { + \ 'COMP': '', + \ 'RAW': '', + \ 'USER': '', + \ 'LOSSY': '0-100', + \ } +" image middle types +let s:imageMiddleTypes = { + \ '0': '', + \ '1': '', + \ 'NONE': '', + \ 'DEFAULT': '', + \ 'SOLID': '', + \ } +" image scale hint +let s:imageScaleHint = { + \ '0': '', + \ 'NONE': '', + \ 'DYNAMIC': '', + \ 'STATIC': '', + \ } + +" part types +let s:partTypes = { + \ 'TEXT': '', + \ 'IMAGE': '', + \ 'RECT': '', + \ 'TEXTBLOCK': '', + \ 'SWALLOW': '', + \ 'GRADIENT': '', + \ 'GROUP': '', + \ 'BOX': '', + \ 'TABLE': '', + \ 'EXTERNAL': '', + \ } +" part effects +let s:partEffects = { + \ 'NONE': '', + \ 'PLAIN': '', + \ 'OUTLINE': '', + \ 'SOFT_OUTLINE': '', + \ 'SHADOW': '', + \ 'SOFT_SHADOW': '', + \ 'OUTLINE_SHADOW': '', + \ 'OUTLINE_SOFT_SHADOW': '', + \ 'FAR_SHADOW': '', + \ 'FAR_SOFT_SHADOW': '', + \ 'GLOW': '', + \ } +" part select_mode +let s:partSelectMode = { + \ 'DEFAULT': '', + \ 'EXPLICIT': '', + \ } +" part ignore flags +let s:partIgnoreFlags = { + \ 'NONE': '', + \ 'ON_HOLD': '', + \ } +" part pointer mode +let s:partPointerMode = { + \ 'AUTOGRAB': '', + \ 'NOGRAB': '', + \ } +" part editable_mode +let s:partEditableMode = { + \ 'NONE': '', + \ 'PLAIN': '', + \ 'EDITABLE': '', + \ 'PASSWORD': '', + \ } + +" aspect_preference types +let s:aspectPrefTypes = { + \ 'VERTICAL': '', + \ 'HORIZONTAL': '', + \ 'BOTH': '', + \ } + +" program transition types +let s:transitionTypes = { + \ 'LINEAR': '0.0 - 1.0', + \ 'SINUSOIDAL': '0.0 - 1.0', + \ 'ACCELERATE': '0.0 - 1.0', + \ 'DECELERATE': '0.0 - 1.0', + \ } +" program action types +let s:actionTypes = { + \ 'STATE_SET': '"string" "0.0 - 1.0"', + \ 'ACTION_STOP': '', + \ 'SIGNAL_EMIT': '"string" "string"', + \ 'DRAG_VAL_SET': 'float float', + \ 'DRAG_VAL_STEP': 'float float', + \ 'DRAG_VAL_PAGE': 'float float', + \ 'FOCUS_SET': '', + \ } +" box item types +let s:boxItemTypes = { + \ 'GROUP': '', + \ } +" box item aspect mode +let s:boxItemAspectMode = { + \ 'NONE': '', + \ 'NEITHER': '', + \ 'VERTICAL': '', + \ 'HORIZONTAL': '', + \ 'BOTH': '', + \ } +" box layout +let s:boxLayout = { + \ '"horizontal"': '', + \ '"horizontal_homogeneous"': '', + \ '"horizontal_max"': '', + \ '"horizontal_flow"': '', + \ '"vertical"': '', + \ '"vertical_homogeneous"': '', + \ '"vertical_max"': '', + \ '"vertical_flow"': '', + \ '"stack"': '', + \ } +" table homogeneous mode +let s:tableHomogeneousMode = { + \ 'NONE': '', + \ 'TABLE': '', + \ 'ITEM': '', + \ } diff --git a/data/vim/ftdetect/edc.vim b/data/vim/ftdetect/edc.vim new file mode 100644 index 0000000..d8cc228 --- /dev/null +++ b/data/vim/ftdetect/edc.vim @@ -0,0 +1,3 @@ +au BufRead,BufNewFile *.edc set filetype=edc +au BufRead,BufNewFile *.sma set filetype=embryo +au BufRead,BufNewFile *.embryo set filetype=embryo diff --git a/data/vim/ftplugin/edc.vim b/data/vim/ftplugin/edc.vim new file mode 100644 index 0000000..5a90a56 --- /dev/null +++ b/data/vim/ftplugin/edc.vim @@ -0,0 +1,23 @@ +" Vim filetype plugin file +" Language: EDC +" Maintainer: Viktor Kojouharov +" Latest Revision: 2006-10-29 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< inc< fo< efm< mp<" + +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// +setlocal commentstring=/*%s*/ +setlocal formatoptions-=t formatoptions+=croql +setlocal include=^\s*#\s*include +setlocal efm=edje_cc:%s.\ %f:%l\ %m +setlocal mp=edje_cc\ % + +if exists('&ofu') + setlocal ofu=edccomplete#Complete + setlocal cfu=edccomplete#Complete +endif diff --git a/data/vim/indent/edc.vim b/data/vim/indent/edc.vim new file mode 100644 index 0000000..498be4a --- /dev/null +++ b/data/vim/indent/edc.vim @@ -0,0 +1,83 @@ +" Vim indent file +" Language: EDC +" Maintainer: Viktor Kojouharov +" Latest Revision: 2007 02 24 + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal indentexpr=GetEDCIndent() +setlocal indentkeys=0{,0},!^F,o,O + +if exists("*GetEDCIndent") + finish +endif + +function s:prevnonblanknoncomment(lnum) + let lnum = a:lnum + while lnum > 1 + let lnum = prevnonblank(lnum) + let line = getline(lnum) + if line =~ '\*/' + while lnum > 1 && line !~ '/\*' + let lnum -= 1 + endwhile + if line =~ '^\s*/\*' + let lnum -= 1 + else + break + endif + elseif line =~ '^\s*//' + let lnum -= 1 + else + break + endif + endwhile + return lnum +endfunction + +function s:count_braces(lnum, count_open) + let n_open = 0 + let n_close = 0 + let line = getline(a:lnum) + let pattern = '[{}]' + let i = match(line, pattern) + while i != -1 + if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'c\%(CommentL\|Comment\|StringQ\{1,2}\)' + if line[i] == '{' + let n_open += 1 + elseif line[i] == '}' + if n_open > 0 + let n_open -= 1 + else + let n_close += 1 + endif + endif + endif + let i = match(line, pattern, i + 1) + endwhile + return a:count_open ? n_open : n_close +endfunction + +function GetEDCIndent() + let line = getline(v:lnum) + if line =~ '^\s*\*' || line =~ '^\s*//' || line =~ '^\s*}' + return cindent(v:lnum) + endif + + let pnum = s:prevnonblanknoncomment(v:lnum - 1) + if pnum == 0 + return 0 + endif + + let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw + + let pline = getline(pnum) + if pline =~ '}\s*$' + let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw + endif + + return ind +endfunction diff --git a/data/vim/plugin-info.txt b/data/vim/plugin-info.txt new file mode 100644 index 0000000..e01cb42 --- /dev/null +++ b/data/vim/plugin-info.txt @@ -0,0 +1,8 @@ +{ + "name" : "edje", + "version" : "dev", + "author" : "viktor kojouharov ", + "repository" : {"type": "svn", "url": "http://svn.enlightenment.org/svn/e/trunk/edje/data/vim/"}, + "dependencies" : {}, + "description" : "Edje vim support addon" +} diff --git a/data/vim/snippets/edc.snippets b/data/vim/snippets/edc.snippets new file mode 100644 index 0000000..bb93e42 --- /dev/null +++ b/data/vim/snippets/edc.snippets @@ -0,0 +1,99 @@ +snippet col + collections { + ${1} + } + +snippet images + images { + ${1} + } + +snippet image + image: "${1:.png}" COMP; + +snippet group + group { name: "${1}"; + ${2} + parts { + ${3} + } + } + +snippet part + part { name: "${1}"; + type: ${2:RECT}; + mouse_events: 0; + description { state: "default" 0.0; + visible: 1; + color: 255 255 255 255; + rel1 { + to_x: "${2:bg}"; + to_y: "${3:bg}"; + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + to_x: "${4:bg}"; + to_y: "${5:bg}"; + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + +snippet bg + part { name: "${1:bg}"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + visible: 1; + color: 0 0 0 0; + } + } + +snippet event + part { name: "${1:event}"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + visible: 1; + color: 0 0 0 0; + } + } + +snippet IMAGE + part { name: "${1:image}"; + type: IMAGE; + mouse_events: 0; + description { state: "default" 0.0; + visible: 1; + image { + normal: "${2}"; + border: 0 0 0 0; + middle: 1; + } + } + } + +snippet desc + description { state: "${1}" ${2:0.0}; + inherit: "default" 0.0; + ${3} + } + +snippet programs + programs { + ${1} + } + +snippet program + program { name: "${1}"; + ${2} + } + +snippet clicked + program { name: "${1:mouse_clicked}"; + signal: "mouse,clicked,${2:1}"; + source: "${2:event}"; + action: SIGNAL_EMIT "${3}" "${4}"; + } diff --git a/data/vim/syntax/edc.vim b/data/vim/syntax/edc.vim new file mode 100644 index 0000000..e21c018 --- /dev/null +++ b/data/vim/syntax/edc.vim @@ -0,0 +1,235 @@ +" Vim syntax file +" Language: EDC +" Maintainer: Viktor Kojouharov +" Last Change: 2007 02 24 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" A bunch of useful keywords +syn keyword edcBlock images data fonts collections group contained +syn keyword edcBlock part parts dragable description contained +syn keyword edcBlock text font fill origin size image contained +syn keyword edcBlock programs program styles style contained +syn keyword edcBlock gradient spectra spectrum contained +syn keyword edcBlock color_classes color_class rel1 rel2 contained +syn keyword edcBlock items item file params externals contained +syn keyword edcBlock map rotation perspective script lua_script contained + +syn keyword edcLabel item name alias min max type effect contained +syn keyword edcLabel mouse_events repeat_events clip_to contained +syn keyword edcLabel x y z confine events scale contained +syn keyword edcLabel ignore_flags precise_is_inside contained +syn keyword edcLabel use_alternate_font_metrics entry_mode contained +syn keyword edcLabel source source2 source3 source4 contained +syn keyword edcLabel source5 source6 multiline pointer_mode contained +syn keyword edcLabel state visible step aspect fixed middle contained +syn keyword edcLabel aspect_preference ellipsis elipsis image contained +syn keyword edcLabel relative offset to to_x to_y contained +syn keyword edcLabel border border_scale scale_hint color color2 color3 font size contained +syn keyword edcLabel signal action transition in filter contained +syn keyword edcLabel target after fit align contained +syn keyword edcLabel text smooth inherit tag base style contained +syn keyword edcLabel text_source color_class text_class contained +syn keyword edcLabel spectrum angle spread normal tween contained +syn keyword edcLabel padding prefer weight aspect_mode contained +syn keyword edcLabel options layout position span contained +syn keyword edcLabel homogeneous contained +syn keyword edcLabel on perspective light perspective_on contained +syn keyword edcLabel backface_cull alpha center focus zplane contained +syn keyword edcLabel int double string external script_only contained + +syn keyword edcConstant COMP RAW LOSSY NONE ON_HOLD AUTOGRAB NOGRAB +syn keyword edcConstant TEXT IMAGE RECT TEXTBLOCK SWALLOW GRADIENT GROUP +syn keyword edcConstant NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW +syn keyword edcConstant SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW +syn keyword edcConstant GLOW FAR_SHADOW FAR_SOFT_SHADOW +syn keyword edcConstant STATE_SET ACTION_STOP SIGNAL_EMIT FOCUS_SET +syn keyword edcConstant DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE +syn keyword edcConstant LINEAR SINUSOIDAL ACCELERATE DECELERATE +syn keyword edcConstant VERTICAL HORIZONTAL BOTH BOX TABLE +syn keyword edcConstant EDITABLE PASSWORD "default" + +syn keyword edcTodo contained TODO FIXME XXX + +syn match edcLabelMatch "\w\+:" contains=edcLabel +syn match edcBlockMatch "\w\+\_s*{" contains=edcBlock +syn match edcBlockMatch "\w\+\.\a"me=e-2 contains=edcBlock +" edcCommentGroup allows adding matches for special things in comments +syn cluster edcCommentGroup contains=edcTodo + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match edcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=edcSpecial +syn match edcFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained +syn match edcFormat display "%%" contained +syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat + +syn match edcCharacter "L\='[^\\]'" +syn match edcCharacter "L'[^']*'" contains=edcSpecial +syn match edcSpecialError "L\='\\[^'\"?\\abfnrtv]'" +syn match edcSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +syn match edcSpecialCharacter display "L\='\\\o\{1,3}'" +syn match edcSpecialCharacter display "'\\x\x\{1,2}'" +syn match edcSpecialCharacter display "L'\\x\x\+'" + +"when wanted, highlight trailing white space +if exists("edc_space_errors") + if !exists("edc_no_trail_space_error") + syn match edcSpaceError display excludenl "\s\+$" + endif + if !exists("edc_no_tab_space_error") + syn match edcSpaceError display " \+\t"me=e-1 + endif +endif + +"catch errors caused by wrong parenthesis and brackets +syn cluster edcParenGroup contains=edcParenError,edcIncluded,edcSpecial,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcUserCont,edcUserLabel,edcBitField,edcCommentSkip,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom +if exists("edc_no_bracket_error") + syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup + syn match edcParenError display ")" + syn match edcErrInParen display contained "[{}]" +else + syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup,edcErrInBracket + syn match edcParenError display "[\])]" + syn match edcErrInParen display contained "[\]{}]" + syn region edcBracket transparent start='\[' end=']' contains=ALLBUT,@edcParenGroup,edcErrInParen + syn match edcErrInBracket display contained "[);{}]" +endif + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match edcNumbers display transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctalError,edcOctal +" Same, but without octal error (for comments) +syn match edcNumbersCom display contained transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctal +syn match edcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match edcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match edcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=edcOctalZero +syn match edcOctalZero display contained "\<0" +syn match edcFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match edcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match edcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match edcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn match edcOctalError display contained "0\o*[89]\d*" +syn case match + +if exists("edc_comment_strings") + " A comment can contain edcString, edcCharacter and edcNumber. + " But a "*/" inside a edcString in a edcComment DOES end the comment! So we + " need to use a special type of edcString: edcCommentString, which also ends + " on "*/", and sees a "*" at the start of the line as comment again. + " Unfortunately this doesn't very well work for // type of comments :-( + syntax match edcCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region edcCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=edcComment,edcCharacter,edcParenError,edcNumbers,edcCommentError,edcSpaceError +syn match edcPreCondit display "^\s*#\s*\(else\|endif\)\>" +syn region edcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match edcIncluded display contained "<[^>]*>" +syn match edcInclude display "^\s*#\s*include\>\s*["<]" contains=edcIncluded +syn cluster edcPreProcGroup contains=edcPreCondit,edcIncluded,edcInclude,edcDefine,edcErrInParen,edcErrInBracket,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcParen,edcBracket,edcMulti,edcUserLabel +syn cluster edcAlphaNum contains=edcSpecial,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom,edcString +syn region edcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@edcPreProcGroup +syn region edcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@edcPreProcGroup + +syn match edcUserLabel display "\I\i*" contained + +syn include @edcEmbryo syntax/embryo.vim +unlet b:current_syntax +syn region edcScript matchgroup=edcScriptTag start="\= 508 || !exists("did_edc_syn_inits") + if version < 508 + let did_edc_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink edcFormat edcSpecial + HiLink edcCommentL edcComment + HiLink edcCommentStart edcComment + HiLink edcLabel Label + HiLink edcUserLabel Label + HiLink edcConditional Conditional + HiLink edcRepeat Repeat + HiLink edcCharacter Character + HiLink edcSpecialCharacter cSpecial + HiLink edcNumber Number + HiLink edcOctal Number + HiLink edcOctalZero PreProc " link this to Error if you want + HiLink edcFloat Float + HiLink edcOctalError edcError + HiLink edcParenError edcError + HiLink edcErrInParen edcError + HiLink edcErrInBracket edcError + HiLink edcCommentError edcError + HiLink edcCommentStartError edcError + HiLink edcSpaceError edcError + HiLink edcSpecialError edcError + HiLink edcOperator Operator + HiLink edcStructure Structure + HiLink edcStorageClass StorageClass + HiLink edcInclude Include + HiLink edcPreProc PreProc + HiLink edcDefine Macro + HiLink edcIncluded edcString + HiLink edcError Error + HiLink edcBlock Function + HiLink edcScriptTag Function + HiLink edcLuaScriptTag Function + HiLink edcPreCondit PreCondit + HiLink edcConstant Constant + HiLink edcCommentString edcString + HiLink edcComment2String edcString + HiLink edcCommentSkip edcComment + HiLink edcString String + HiLink edcComment Comment + HiLink edcSpecial SpecialChar + HiLink edcTodo Todo + + delcommand HiLink +endif + +let b:current_syntax = "edc" + +" vim: ts=8 diff --git a/data/vim/syntax/embryo.vim b/data/vim/syntax/embryo.vim new file mode 100644 index 0000000..11175d8 --- /dev/null +++ b/data/vim/syntax/embryo.vim @@ -0,0 +1,195 @@ +" Vim syntax file +" Language: Embryo +" Maintainer: Viktor Kojouharov +" Last Change: 2006 10 06 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +" A bunch of useful keywords +syn keyword embryoConditional if else switch +syn keyword embryoRepeat while for do in +syn keyword embryoBranch break continue +syn keyword embryoOperator new +syn keyword embryoType Float State_Param Msg_Type enum +syn keyword embryoStatement return with native stock forward +syn keyword embryoLabel case default +syn keyword embryoReserved public +syn keyword embryoEdjeKey PART PROGRAM + +syn keyword embryoTodo contained TODO FIXME XXX + +" embryoCommentGroup allows adding matches for special things in comments +syn cluster embryoCommentGroup contains=embryoTodo + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match embryoSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +syn region embryoString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=embryoSpecial +syn match embryoFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained +syn match embryoFormat display "%%" contained +syn region embryoString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat + +syn match embryoCharacter "L\='[^\\]'" +syn match embryoCharacter "L'[^']*'" contains=embryoSpecial +syn match embryoSpecialError "L\='\\[^'\"?\\abfnrtv]'" +syn match embryoSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +syn match embryoSpecialCharacter display "L\='\\\o\{1,3}'" +syn match embryoSpecialCharacter display "'\\x\x\{1,2}'" +syn match embryoSpecialCharacter display "L'\\x\x\+'" + +"when wanted, highlight trailing white space +if exists("embryo_space_errors") + if !exists("embryo_no_trail_space_error") + syn match embryoSpaceError display excludenl "\s\+$" + endif + if !exists("embryo_no_tab_space_error") + syn match embryoSpaceError display " \+\t"me=e-1 + endif +endif + +"catch errors caused by wrong parenthesis and brackets +syn cluster embryoParenGroup contains=embryoParenError,embryoIncluded,embryoSpecial,embryoCommentSkip,embryoCommentString,embryoComment2String,@embryoCommentGroup,embryoCommentStartErr,embryoUserCont,embryoUserLabel,embryoBitField,embryoCommentSkip,embryoOctalZero,embryoFormat,embryoNumber,embryoFloat,embryoOctal,embryoOctalError,embryoNumbersCom +if exists("embryo_no_bracket_error") + syn region embryoParen transparent start='(' end=')' contains=ALLBUT,@embryoParenGroup + syn match embryoParenError display ")" + syn match embryoErrInParen display contained "[{}]" +else + syn region embryoParen transparent start='(' end=')' contains=ALLBUT,@embryoParenGroup,embryoErrInBracket + syn match embryoParenError display "[\])]" + syn match embryoErrInParen display contained "[\]{}]" + syn region embryoBracket transparent start='\[' end=']' contains=ALLBUT,@embryoParenGroup,embryoErrInParen + syn match embryoErrInBracket display contained "[);{}]" +endif + +syn region embryoBrace start='{' end='}' transparent +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match embryoNumbers display transparent "\<\d\|\.\d" contains=embryoNumber,embryoFloat,embryoOctalError,embryoOctal +" Same, but without octal error (for comments) +syn match embryoNumbersCom display contained transparent "\<\d\|\.\d" contains=embryoNumber,embryoFloat,embryoOctal +syn match embryoNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match embryoNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match embryoOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=embryoOctalZero +syn match embryoOctalZero display contained "\<0" +syn match embryoFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match embryoFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match embryoFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match embryoFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +" flag an octal number with wrong digits +syn match embryoOctalError display contained "0\o*[89]\d*" +syn case match + +if exists("embryo_comment_strings") + " A comment can contain embryoString, embryoCharacter and embryoNumber. + " But a "*/" inside a embryoString in a embryoComment DOES end the comment! So we + " need to use a special type of embryoString: embryoCommentString, which also ends + " on "*/", and sees a "*" at the start of the line as comment again. + " Unfortunately this doesn't very well work for // type of comments :-( + syntax match embryoCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region embryoCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=embryoComment,embryoCharacter,embryoParenError,embryoNumbers,embryoCommentError,embryoSpaceError +syn match embryoPreCondit display "^\s*#\s*\(else\|endif\)\>" +syn region embryoIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match embryoIncluded display contained "<[^>]*>" +syn match embryoInclude display "^\s*#\s*include\>\s*["<]" contains=embryoIncluded +syn cluster embryoPreProcGroup contains=embryoPreCondit,embryoIncluded,embryoInclude,embryoDefine,embryoErrInParen,embryoErrInBracket,embryoCommentSkip,embryoCommentString,embryoComment2String,@embryoCommentGroup,embryoCommentStartErr,embryoParen,embryoBracket,embryoMulti,embryoUserLabel +syn cluster embryoAlphaNum contains=embryoSpecial,embryoOctalZero,embryoFormat,embryoNumber,embryoFloat,embryoOctal,embryoOctalError,embryoNumbersCom,embryoString +syn region embryoDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@embryoPreProcGroup +syn region embryoPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@embryoPreProcGroup + +syn match embryoUserLabel display "\I\i*" contained + +syn match embryoFunctionName "\h\w*\s*\%((\@=\)" + +if exists("embryo_minlines") + let b:embryo_minlines = embryo_minlines +else + let b:embryo_minlines = 50 " #if 0 constructs can be long +endif +exec "syn sync ccomment embryoComment minlines=" . b:embryo_minlines +"syn sync fromstart + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_embryo_syn_inits") + if version < 508 + let did_embryo_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink embryoFormat embryoSpecial + HiLink embryoCommentL embryoComment + HiLink embryoCommentStart embryoComment + HiLink embryoLabel Label + HiLink embryoUserLabel Label + HiLink embryoConditional Conditional + HiLink embryoRepeat Repeat + HiLink embryoBranch Conditional + HiLink embryoReserved Keyword + HiLink embryoCharacter Character + HiLink embryoSpecialCharacter cSpecial + HiLink embryoNumber Number + HiLink embryoOctal Number + HiLink embryoOctalZero PreProc " link this to Error if you want + HiLink embryoFloat Float + HiLink embryoOctalError embryoError + HiLink embryoParenError embryoError + HiLink embryoErrInParen embryoError + HiLink embryoErrInBracket embryoError + HiLink embryoCommentError embryoError + HiLink embryoCommentStartErr embryoError + HiLink embryoSpaceError embryoError + HiLink embryoSpecialError embryoError + HiLink embryoOperator Operator + HiLink embryoStructure Structure + HiLink embryoEdjeKey Structure + HiLink embryoStorageClass StorageClass + HiLink embryoInclude Include + HiLink embryoPreProc PreProc + HiLink embryoDefine Macro + HiLink embryoIncluded embryoString + HiLink embryoError Error + HiLink embryoStatement Statement + HiLink embryoPreCondit PreCondit + HiLink embryoType Type + HiLink embryoConstant Constant + HiLink embryoCommentString embryoString + HiLink embryoComment2String embryoString + HiLink embryoCommentSkip embryoComment + HiLink embryoString String + HiLink embryoComment Comment + HiLink embryoSpecial SpecialChar + HiLink embryoTodo Todo + HiLink embryoFunctionName Function + + delcommand HiLink +endif + +let b:current_syntax = "embryo" + +" vim: ts=8 diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in new file mode 100644 index 0000000..5cd36f2 --- /dev/null +++ b/doc/Doxyfile.in @@ -0,0 +1,1532 @@ +# Doxyfile 1.6.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Edje + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = YES + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = @top_srcdir@/ src/ + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +# Aliases used by edcref +ALIASES = block="" +ALIASES += context="\code" +ALIASES += description="\endcode " +ALIASES += endblock="" +ALIASES += property=" 
" +ALIASES += parameters="" +ALIASES += effect="
 " +ALIASES += endproperty="
" +ALIASES += edcsection{2}="\anchor sec_\1 \ref sec_quickaccess \"\2\"" + +# Aliases used by luaref +ALIASES += luaclass{2}="\anchor \1 \n
\2
" +ALIASES += attributes="
Attributes:
" +ALIASES += methods="
Methods:
" +ALIASES += events="
Events:
" +ALIASES += setters="
Setters:
" +ALIASES += seealso{2}="See also: \1\n" +ALIASES += seealso{1}="See also: \1\n" + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = NO + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = YES + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = YES + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = YES + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = @srcdir@/examples.dox @top_srcdir@/src/bin/edje_cc_handlers.c @top_srcdir@/src/lib + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = @top_srcdir@/src/examples/ + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = img + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = @srcdir@/head.html + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = @srcdir@/foot.html + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = @srcdir@/e.css + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.enlightenment.Edje + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = YES + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP) +# there is already a search function so this one should typically +# be disabled. + +SEARCHENGINE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = YES + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = __UNUSED__= + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..b00aa03 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,35 @@ + +MAINTAINERCLEANFILES = Makefile.in + +.PHONY: doc + +PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc + +if EFL_BUILD_DOC + +doc-clean: + rm -rf html/ latex/ man/ xml/ $(top_builddir)/$(PACKAGE_DOCNAME).tar* + +doc: all doc-clean + $(efl_doxygen) + cp $(srcdir)/img/* html/ + cp $(srcdir)/img/* latex/ + rm -rf $(PACKAGE_DOCNAME).tar* + mkdir -p $(PACKAGE_DOCNAME)/doc + cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc + tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/ + bzip2 -9 $(PACKAGE_DOCNAME).tar + rm -rf $(PACKAGE_DOCNAME)/ + mv $(PACKAGE_DOCNAME).tar.bz2 $(top_builddir) + +clean-local: doc-clean + +else + +doc: + @echo "Documentation not built. Run ./configure --help" + +endif + +EXTRA_DIST = Doxyfile e.css foot.html head.html $(wildcard img/*.*) \ + $(wildcard examples/*.*) examples.dox diff --git a/doc/e.css b/doc/e.css new file mode 100644 index 0000000..44a9f25 --- /dev/null +++ b/doc/e.css @@ -0,0 +1,295 @@ +/* + Author: + Andres Blanc + DaveMDS Andreoli + + Supported Browsers: + ie7, opera9, konqueror4 and firefox3 + + Please use a different file for ie6, ie5, etc. hacks. +*/ + + +/* Necessary to place the footer at the bottom of the page */ +html, body { + height: 100%; + margin: 0px; + padding: 0px; +} + +#container { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -53px; +} + +#footer, #push { + height: 53px; +} + + +* html #container { + height: 100%; +} + +/* Prevent floating elements overflowing containers */ +.clear { + clear: both; + width: 0px; + height: 0px; +} + +/* Flexible & centered layout from 750 to 960 pixels */ +.layout { + max-width: 960px; + min-width: 760px; + margin-left: auto; + margin-right: auto; +} + +body { + /*font-family: Lucida Grande, Helvetica, sans-serif;*/ + font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif +} + +/* Prevent design overflowing the viewport in small resolutions */ +#container { + padding-right: 17px; + padding-left: 17px; + background-image: url(head_bg.png); + background-repeat: repeat-x; +} + +/****************************/ +/* Top main menu */ +/****************************/ +#header_logo { + background-image : url(logo.png); + width : 61px; +} + +#header_logo a { + position : absolute; + border : 0px; + background-color : transparent; + top : 0px; + width : 60px; + height : 60px; +} + +#header_menu { + background-image : url(header_menu_background.png); + font : normal 10pt verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif; + text-align : right; +} + +#header_last { + background-image : url(header_menu_background_last.png); + width : 15px; +} + +td.nav_passive { + background : url(header_menu_unselected_background.png) 0 0 no-repeat; + height : 63px; + font-family : "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; + font-size : 11px; + padding : 20px 10px 20px 10px; + vertical-align : middle; +} + +td.nav_active { + background : url(header_menu_current_background.png) 0 0 no-repeat; + height : 63px; + color : #646464; + font-family : "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; + font-size : 11px; + font-weight : bold; + padding : 20px 10px 20px 10px; + vertical-align : middle; +} + +#header_menu a { + display : block; + text-decoration : none; + cursor : pointer; + color : #cdcdcd; +} + + + +#header { + width: 100%; + height: 102px; +} + +#header h1 { + width: 63px; + height: 63px; + position: absolute; + margin: 0px; +} + +#header h1 span { + display: none; +} + +#header h2 { + display: none; +} + +/* .menu-container is used to set properties common to .menu and .submenu */ +#header .menu-container { +} + +#header .menu-container ul { + list-style-type: none; + list-style-position: inside; + margin: 0; +} + +#header .menu-container li { + display: block; + float: right; +} + +#header .menu { + height: 63px; + display: block; + background-image: url(menu_bg.png); + background-repeat: repeat-x; +} + +#header .menu ul { + height: 100%; + display: block; + background-image: url(menu_bg_last.png); + background-repeat: no-repeat; + background-position: top right; + padding-right: 17px; +} + +#header .menu li { + height: 100%; + text-align: center; + background-image: url(menu_bg_unsel.png); + background-repeat: no-repeat; +} + +#header .menu a { + height: 100%; + display: block; + color: #cdcdcd; + text-decoration: none; + font-size: 10pt; + line-height: 59px; + text-align: center; + padding: 0px 15px 0px 15px; +} + +#header .menu li:hover { + background-image: url(menu_bg_hover.png); + background-repeat: no-repeat; +} + +#header .menu li:hover a { + color: #FFFFFF; +} + +#header .menu li.current { + background-image: url(menu_bg_current.png); + background-repeat: no-repeat; +} + +#header .menu li.current a { + color: #646464; +} + + +/* Hide all the submenus but the current */ +#header .submenu ul { + display: none; +} + +#header .submenu .current { + display: block; +} + +#header .submenu { + font: bold 10px verdana,'Bitstream Vera Sans',helvetica,arial,sans-serif; + margin-top: 10px; +} + +#header .submenu a { + color: #888888; + text-decoration: none; + font-size: 0.9em; + line-height: 15px; + padding:0px 5px 0px 5px; +} + +#header .submenu a:hover { + color: #444444; +} + +#header .submenu li { + border-left: 1px solid #DDDDDD; +} + +#header .submenu li:last-child { + border-left: 0; +} + +#header .doxytitle { + position: absolute; + font-size: 1.8em; + font-weight: bold; + color: #444444; + line-height: 35px; +} + +#header small { + font-size: 0.4em; +} + +#footer { + background-image: url(foot_bg.png); + width: 100%; +} + +#footer table { + width: 100%; + text-align: center; + white-space: nowrap; + padding: 5px 30px 5px 30px; + font-size: 0.8em; + font-family: "Bitstream Vera","Vera","Trebuchet MS",Trebuchet,Tahoma,sans-serif; + color: #888888; +} + +#footer td.copyright { + width: 100%; +} + +table.edcref tr td.block { + vertical-align: top; + padding-top: 10px; +} + +table.edcref tr.section td.section, div.luaclass { + color: #888; + font-size: 16pt; + padding: 15px; + border-top: 1px solid #ccc; + text-align: center; +} + +table.edcref tr.section td.section a { + color: #888; + text-decoration: none; +} + +div.luaattrib { + color: #888; + border: 1px solid #ccc; +} diff --git a/doc/examples.dox b/doc/examples.dox new file mode 100644 index 0000000..d0efafe --- /dev/null +++ b/doc/examples.dox @@ -0,0 +1,1273 @@ +/** + * @page Examples Examples + * + * Here is a page with examples. + * + * @li @ref Example_Edje_Basics + * @li @ref tutorial_edje_swallow + * @li @ref tutorial_edje_swallow2 + * @li @ref tutorial_edje_text + * @li @ref tutorial_edje_table + * @li @ref tutorial_edje_color_class + * @li @ref Example_Edje_Signals_Messages + * @li @ref tutorial_edje_box + * @li @ref tutorial_edje_box2 + * @li @ref tutorial_edje_drag + * @li @ref tutorial_edje_perspective + * @li @ref tutorial_edje_animations + * @li @ref tutorial_edje_multisense + * @li @ref tutorial_edje_basic2 + * @li @ref tutorial_edje_signals_2 + * @li @ref tutorial_edje_animations_2 + */ + +/** + * @page Example_Edje_Basics Edje basics example + * + * In this example, we illustrate how to start using the Edje library, + * with the very basic one needs to instantiate an Edje object. + * + * We place, in the canvas, an Edje object along with a @b red border + * image to delimit its geometry. After we instantiate the Edje + * object, we @b have to set a file and a group, within that file, to + * bind to it. For this example, we're using an EDC file which + * declares two parts (blue and green rectangles) and an item data: + * @include basic.edc + * + * We start by trying to access an @b unexistant group in the file, so + * that you can see the usefulness of edje_object_load_error_get() and + * edje_load_error_str(). Check that the error message will tell you + * just that -- a group which didn't exist in the file was called for: + * @dontinclude edje-basic.c + * @skip file_path + * @until file_path + * @dontinclude edje-basic.c + * @skip edje_object_add + * @until } + * + * Than, we finally bind our Edje object to @c "example_group", + * printing a message afterwards: + * @dontinclude edje-basic.c + * @skip file_path, "example_group" + * @until object_show + * + * What follows is a series of Edje API calls which are of general + * use. The first of them is edje_object_data_get(), which we use to + * get the value we have put in the @c "example_data" data field, in + * our EDC object declaration: + * @dontinclude edje-basic.c + * @skip data field in group + * @until ; + * + * Than, we exemplify edje_object_part_exists(): + * @dontinclude edje-basic.c + * @skip Testing if + * @until ; + * + * The next call is to query @c "part_one"'s geometry, relative to the + * whole Edje object's area. The part will be situated in the middle + * of the Edje object's, because it has a restricted forced size (we + * set its minimum size equal to its maximum, for that) and, by + * default, parts are aligned to the center of their containers: + * @dontinclude edje-basic.c + * @skip part_geometry_get + * @until x, y, w, h + * + * We can grab a direct pointer on the rectangle implementing @c + * "part_one", by using edje_object_part_object_get(). Since we are + * not allowed to set properties on it, we just check its color, to + * assure its really blue, as declared in the EDC: + * @dontinclude edje-basic.c + * @skip color_get + * @until x, y, w, h + * + * The @c "min" and @c "max" EDC properties can be queried with the + * following calls: + * @dontinclude edje-basic.c + * @skip max_get + * @until min. size is + * + * The next two calls are to make size calculations on our + * object. Because of the minimum size declared for @c "part_one" part's + * default state description, that will be our exact minimum + * size calculated for the group (remember the @c "min" declaration at + * group level is just a @b hint, not an enforcement). We then + * exercise the edje_object_size_min_restricted_calc() function, + * passing a minimum size of 500, in each axis. Since we have @b no + * object bigger than that, it will be the minimum size calculated, in + * the end: + * @dontinclude edje-basic.c + * @skip min_calc + * @until size calculation is + * + * @c "part_two" part is there with a purpose: since it extrapolates + * the Edje object's boundaries, the edje_object_parts_extends_calc() + * function will report origin coordinates for the rectangle grouping + * both parts with @b negative values, indicating it extrapolates to + * the upper left of our group, just as we see it. + * + * To interact with the last features exemplified in the program, + * there's a command line interface. A help string can be asked for + * with the 'h' key: + * @dontinclude edje-basic.c + * @skip commands + * @until ; + * + * Those commands will change the scaling factors of our Edje objects. + * The first of them, @c 's', will change Edje's @b global scaling + * factor between @c 1.0 (no scaling) and @c 2.0 (double + * scale). Scaling will be applied to @c "part_one", only, because + * that's the part flagged to be scaled at EDC level: + * @dontinclude edje-basic.c + * @skip strcmp(ev->keyname, "s") == 0 + * @until } + * + * Note, finally, that the @c 's' command will depend on the 'r' one + * to have its effects applied. The latter will change @c "part_one"'s + * @b individual scaling factor, which @b overrides Edje's global + * scaling factor. Only when the individual one is set to zero, will + * the global one take effect: + * @dontinclude edje-basic.c + * @skip strcmp(ev->keyname, "r") == 0 + * @until } + * + * + * + * The example's window should look like this picture: + * + * @image html edje-basics-example.png + * @image rtf edje-basics-example.png + * @image latex edje-basics-example.eps width=\textwidth + * + * The full example follows. + * @include edje-basic.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-basic edje-basic.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc basic.edc + * @endverbatim + * @example edje-basic.c + */ + +/** + * @page tutorial_edje_swallow Swallow example + * @dontinclude edje-swallow.c + * + * This is a simple example in which we create a rect and swallow it. + * + * Focusing on the relevant parts of the code we go right to the creation of our + * rectangle. It should be noted that we don't resize or show our rect, that is + * because when an object is swallowed it's geometry and visibility is + * controlled by the theme: + * @skip 20 + * @skipline evas_object_rectangle_add + * @until swallow + * + * The other bit of code that is relevant to us now is our check that the + * swallow worked: + * @until printf + * + * The full source code follows: + * @include edje-swallow.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-swallow edje-swallow.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc swallow.edc + * @endverbatim + * @example edje-swallow.c + */ + +/** + * @page tutorial_edje_text Edje Text example + * + * + * This example shows how to manipulate TEXT and TEXTBLOCK parts from code. + * + * The very first we are going to do is register a callback to react to changes + * in the text of our parts: + * @dontinclude edje-text.c + * @skipline edje_object_text_change_cb_set + * + * + * @dontinclude edje-text.c + * @skipline text_change + * @note Since edje_obj represent a group we'll be notified whenever any part's + * text in that group changes. + * + * We now set the text for two our two parts: + * @dontinclude edje-text.c + * @skip text_set + * @until edje_object_part_text_set(edje_obj, "part_two" + * @note Since the "part_two" part is a TEXTBLOCK we can use formatting such as + * @ + * + * And we now move on to selection issues, first thing we do is make sure the + * user can select text: + * @dontinclude edje-text.c + * @skip edje_object_part_text_select_allow_set + * @until edje_object_part_text_select_all + * + * We then select the entire text, and print the selected text: + * @dontinclude edje-text.c + * @skipline printf("selection: %s\n", + * + * We now unselect the entire text(set selection to none), and print the + * selected text: + * @dontinclude edje-text.c + * @skip edje_object_part_text_select_none + * @until printf + * + * Our example will look like this: + * + * @image html edje-text.png + * @image rtf edje-text.png + * @image latex edje-text.eps width=\textwidth + * + * The full source code follows: + * @include edje-text.c + * + * + * The theme used in this example is: + * @include text.edc + * + * To compile use this command: + * @verbatim + * gcc -o edje-text edje-text.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc text.edc + * @endverbatim + * @example edje-text.c + */ + +/** + * @page tutorial_edje_table Table example + * + * In this example, we illustrate how to organize your objects on a table, using + * the edje_object_part_table functions. To be easier to understand the objects + * in this example will be four simple rects, when the user click over one + * item with the left button its is removed from the table, if any other button + * was used all items are removed. For each action is printed a message with + * the current number of rows and columns. + * + * We started creating an EDC file with one part of the type TABLE called + * @b "table_part", that is the part which we will refer to access the table: + * @include table.edc + * + * On the other hand, in the C file we first create the rectangles and added a + * callback for mouse down, as you can see bellow: + * @dontinclude edje-table.c + * @skip _rects_create + * @until } + * @skip } + * @until } + * + * With the objects created we have to pack them into the table, to do this, we + * just have to use the function edje_object_part_table_pack(). + * @dontinclude edje-table.c + * @skip (!edje_object_part_table_pack + * @until 4 + * + * The other bit of code that is relevant to us now is our event handler for + * when the user click over the rectangle. Here we use the function + * edje_object_part_table_unpack() to remove the item from the table or + * edje_object_part_table_clear() to remove all items, it depends on which mouse + * button the user uses. + * @dontinclude edje-table.c + * @skip _on_mouse_down + * @until } + * + * Finally, the last important thing in this example is about how to know how many + * columns and rows are there in the table, It should be noted that this function + * don't tell you how many items are there in the table, just the number of the + * columns and rows of the table. + * @dontinclude edje-table.c + * @skip _columns_rows_ + * @until } + * + * The example's window should look like this picture: + * + * @image html edje-table-example.png + * @image rtf edje-table-example.png + * @image latex edje-table-example.eps width=\textwidth + * + * The full source code follows: + * @include edje-table.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-table edje-table.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc table.edc + * @endverbatim + * @example edje-table.c + */ + +/** + * @page tutorial_edje_box Box example - basic usage + * + * This example shows how to append, insert and remove elements from an Edje box + * part. It will make use of the edje_object_part_box functions. + * + * To play with this example, use mouse left click to delete an existing + * rectangle from the box and right mouse click to add a new rectangle just + * before the clicked one. Use the keyboard keys "a" to append a rectangle, "i" + * to prepend, and "c" to remove all rectangles from the box. + * + * We will store our example global information in the data structure defined + * below, and also set some callbacks for resizing the canvas and exiting the + * window: + * + * @dontinclude edje-box.c + * @skip static const char + * @until ecore_evas_geometry_get + * @until } + * + * In the @c main function, we create our @c Ecore_Evas, add a background to it, + * and finally load our @c Edje file that contains a @c Box part. This part is + * named @c "example/box" in this case, and we use this name to append elements + * to it. + * + * The code until now is the one that follows: + * + * @dontinclude edje-box.c + * @skip main(int argc __UNUSED__, char *argv[]) + * @until ecore_evas_data_set(ee, "background", bg) + * + * Also notice that we set the callback @c _bg_key_down for @c "key down" events + * on the background object, and that object is the one with focus. + * + * Now we add some small rectangles to the box part, using the + * edje_object_part_box_append() API, and set some callbacks for @c "mouse down" + * events on every object. These callbacks will be used to add or delete objects + * from the box part. + * + * @dontinclude edje-box.c + * @skip bg = evas_object_rectangle_add(evas) + * @until evas_object_event + * @until } + * + * Now let's take a look at the callbacks for key down and mouse down events: + * + * @dontinclude edje-box.c + * @skip ecore_evas_geometry_get + * @skip static + * @until evas_object_event + * @until } + * @until } + * + * This callback for mouse down events will get left clicks and remove the + * object that received that left click from the box part, and then delete it. + * This is done with the edje_object_part_box_remove() function. + * + * However, on right clicks it will create a new rectangle object, and add it + * just before the right clicked object, using + * edje_object_part_box_insert_before(). + * + * And this is the key down callback: + * + * @until remove_all + * @until } + * + * It will insert elements at the beginning of the box if "i" was pressed, using + * edje_object_part_box_insert_at(). It will also append objects to the box if + * "a" was pressed, just exactly like we did in the @c main function. And will + * remove all objects (deleting them) if "c" was pressed. + * + * As you can see, this example uses the @c "horizontal_flow" layout for the + * box, where each item is put linearly in rows, in as many rows as necessary to + * store all of them. + * + * The example's window should look like this picture: + * + * @image html edje-box-example.png + * @image rtf edje-box-example.png + * @image latex edje-box-example.eps width=\textwidth + * + * The full source code follows: + * @include edje-box.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-box edje-box.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc box.edc + * @endverbatim + * @example edje-box.c + */ + +/** + * @page tutorial_edje_box2 Box example - custom layout + * + * This example shows how to register a custom layout to be used by the Edje box + * part. It will use edje_box_layout_register() for that. + * + * To play with this example, use the keyboard modifier keys and number keys + * together. The Ctrl key is used for adding elements, and Shift is used for + * removing them. For instance, Ctrl + 3 will insert a new rectangle object in + * the 3rd position of the box, while Shift + 6 will try to remove the 6th + * element of the box. + * + * This example is very similar to the other box example, has a structure with + * global data, a callback for key down events where we create or delete + * rectangle objects and add or remove them to/from the box part. + * + * But the important part is the next one: + * + * @dontinclude edje-box2.c + * @skip static void + * @until } + * + * This code implements our custom layout, which will position every object + * added to the box in a diagonal through the size of the box part. Notice that + * it just calculates the position and offset based on the size of the box and + * number of children, and then moves each child to the respective position. + * + * Later on the @c main function, everything we need to do is to register this + * custom layout function with edje: + * + * @dontinclude edje-box2.c + * @skipline edje_box_layout_register + * + * And use it inside the box.edc file: + * + * @dontinclude box.edc + * @skip example/group2 + * @skip example/title + * @skip part + * @until BOX + * @until example/box + * + * The example's window should look like this picture: + * + * @image html edje-box2-example.png + * @image rtf edje-box2-example.png + * @image latex edje-box2-example.eps width=\textwidth + * + * The full source code follows: + * @include edje-box2.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-box2 edje-box2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc box.edc + * @endverbatim + * @example edje-box2.c + */ + +/** + * @page tutorial_edje_drag Dragable parts example + * + * This example shows how to manipulate a dragable part through the + * edje_object_part_drag API. + * + * First, in the edc code, we are declaring a part which will be our movable + * part, called "knob". It is a normal rectangle, which contains a block called + * "dragable", that will define the area where this rectangle can be moved, and + * in which axis it can be moved. + * + * This is our part: + * + * @dontinclude drag.edc + * @skip // drag_area + * @skip part + * @until example/knob + * @until example/knob + * + * Notice that it defines, through its @c "x:" and @c "y:' properties, that the + * part will be only moved on the y axis (vertical). Check the edc reference + * docs for more info about this. + * + * Now, in our example C code, we just do the same as on the other examples, + * setting some global data on a structure, load the edje file and so: + * + * @dontinclude edje-drag.c + * @skip static const char *PARTNAME + * @until ; + * + * @skip main(int argc __UNUSED__, char *argv[]) + * @until evas_object_show + * + * We want to use the drag_page and drag_step functions, and in order to do so we + * need to define the step size and page size of our dragable part. They are + * defined as float values which represent a portion of the entire size of the + * dragable area: + * + * @until drag page step + * + * We are going to use the keyboard to move the @c knob part, through the key + * down callback @c _bg_key_down, but we also want to know when the user has + * moved the knob by using the mouse (which is possible, since we defined that + * this part will receive mouse events). Thus, we set a callback for the signal + * "drag", which comes from the dragable part: + * + * @dontinclude edje-drag.c + * @skipline evas_object_event_callback_add + * + * @skipline edje_object_signal_callback_add + * + * Now, let's take a look at our key down callback: + * + * @dontinclude edje-drag.c + * @skip _on_bg_key_down + * @until } + * @skip else + * @until } + * @skip else + * @until } + * @skip else + * @until } + * @skip else + * @until } + * @skip else + * @until } + * @skip else + * @until } + * @skip else + * @until } + * + * On this callback we define that the user will use the "up" and "down" arrows + * to move the dragable part, respectively, -1.0 and 1.0 times the step size. + * And that the "Page Up" (Prior) and "Page Down" (Next) keys will move -1.0 and + * 1.0 times the page size. Both of these will occur on the vertical axis, since + * we pass 0.0 as value to the respective horizontal axis parameters. And our + * dragable part also only supports being moved in the vertical axis (defined in + * the edc). + * + * We also define that the "m" key will be used to explicitly position the knob + * part in the middle of the dragable area. + * + * And here is the callback for the @c "drag" signal that is received from the + * theme: + * + * @dontinclude edje-drag.c + * @skip _on_knob_moved + * @until } + * + * The example's window should look like this picture: + * + * @image html edje-drag-example.png + * @image rtf edje-drag-example.png + * @image latex edje-drag-example.eps width=\textwidth + * + * The full source code follows: + * @include edje-drag.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-drag edje-drag.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc drag.edc + * @endverbatim + * @example edje-drag.c + */ + +/** + * @page tutorial_edje_perspective Perspective example + * + * This example demonstrates how someone can set a perspective to be used by an + * Edje object, but setting a global perspective. The API for setting a + * perspective for just one Edje object is almost the same and it's trivial, so + * we are not doing that on this example. + * + * Let's go first to the main function, where we start creating our objects and + * loading the theme. We also set some variables that will be used globally in + * our program: + * + * @dontinclude edje-perspective.c + * @skip main( + * @until focal = + * + * A boolean is used to indicate that we are animating. + * + * We also set the @c app.x and @c app.y to (0, 0) because the original position + * of our text + rectangle part will be on top left. This is a convention that + * we are using in this example, and setting x, y to 1, 1 would mean bottom + * right. We do this to later define the name of the signals that we are + * sending to the theme. + * + * After this, some boilerplate code to load the theme: + * + * @until evas_object_show(app.bg) + * + * Now we are going to setup a callback to tell us that the animation has ended. + * We do this just to avoid sending signals to the theme while it's animating. + * + * @until edje_object_signal + * + * Finally, let's create our perspective object, define its position, focal + * distance and z plane position, and set it as global: + * + * @until global_set + * + * Notice that if we wanted to set it just to our edje object, instead of + * setting the perspective as global to the entire canvas, we could just use + * edje_object_perspective_set() instead of edje_perspective_global_set(). The + * rest of the code would be exactly the same. + * + * Now, let's take a look at what we do in our callbacks. + * + * The callback for key_down is converting the arrow keys to a signal that + * represents where we want our text and rectangle moved to. It does that by + * using the following function: + * + * @dontinclude edje-perspective.c + * @skip part_move( + * @until } + * + * Notice that, after sending the signal to the Edje object, we set our boolean + * to store that we are animating now. It will only be unset when we receive a + * signal from the theme that the animation has ended. + * + * Now, on the key_down code, we just call this function when the arrows or + * "PgUp" or "PgDown" keys are pressed: + * + * @until unhandled + * @until } + * + * Notice that we also do something else when the numeric keyboard "+" and "-" + * keys are pressed. We change the focal distance of our global perspective, and + * that will affect the part that has a map rotation applied to it, with + * perspective enabled. We also need to call edje_object_calc_force(), otherwise + * the Edje object has no way to know that we changed the global perspective. + * + * Try playing with these keys and see what happens to the animation when the + * value of the focal distance changes. + * + * Finally we add a callback for the animation ended signal: + * + * @skip _animation_end_cb + * @until } + * + * + * The example's window should look like this picture: + * + * @image html edje-perspective-example.png + * @image rtf edje-perspective-example.png + * @image latex edje-perspective-example.eps width=\textwidth + * + * The full source code follows: + * @include edje-perspective.c + * + * The full .edc file + * @include perspective.edc + * + * To compile use this command: + * @verbatim + * gcc -o edje-perspective edje-perspective.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc perspective.edc + * @endverbatim + * @example edje-perspective.c + */ + +/** + * @page Example_Edje_Signals_Messages Edje signals and messages + * + * In this example, we illustrate how Edje signals and Edje messages + * work. + * + * We place, in the canvas, an Edje object along with a @b red border + * image to delimit its geometry. The object's group definition is so + * that we have four parts: + * - a blue rectangle, aligned to the right + * - a white rectangle, aligned to the left + * - a text part, aligned to the center + * - a clipper rectangle on the blue rectangle + * + * The left rectangle is bound to a color class, so that we can + * multiply its colors by chosen values on the go: + * @dontinclude signals-messages.edc + * @until visible + * @until } + * @until } + * @until } + * + * The @c \#define's on the beginning will serve as message + * identifiers, for our accorded message interface between the code + * and the this theme file. + * + * Let's move to the code, then. After instantiating the Edje object, + * we register two signal callbacks on it. The first one uses + * @b globbing, making all of the wheel mouse actions over the left + * rectangle to trigger @c _mouse_wheel. Note that those kind of + * signals are generated @b internally (and automatically) in Edje. The + * second is a direct signal match, to a (custom) signal we defined in + * the EDC, ourselves: + * @dontinclude edje-signals-messages.c + * @skip edje_object_add + * @until _mouse_over + * @dontinclude edje-signals-messages.c + * @skip print signals coming from theme + * @until } + * @until } + * + * That second callback is on a signal we emit on the theme, where we + * just translate Edje @c "mouse,move" internal events to the custom @c + * "mouse,over" one. When that signals reaches the code, we are, + * besides printing the signals' strings, sending a @b message back to + * the theme. We generate random values of color components and send + * them as an #EDJE_MESSAGE_INT_SET message type: + * @dontinclude signals-messages.edc + * @skip custom signal + * @until } + * @dontinclude edje-signals-messages.c + * @skip mouse over signals + * @until } + * + * In our theme we'll be changing the @c "cc" color class' values with + * those integer values of the message, so that moving the mouse over + * the right rectangle will change the left one's colors: + * @dontinclude signals-messages.edc + * @skip public message + * @until } + * @until } + * + * Now we're also sending messages from the Edje object, + * besides signals. We do so when one clicks with the left button + * over the left rectangle. With that, we change the text part's + * text, cycling between 3 pre-set strings declared in the EDC. With + * each new text string attribution, we send a string message to our + * code, with the current string as argument: + * @dontinclude signals-messages.edc + * @skip program + * @until } + * @until } + * @skip change text + * @until } + * @until } + * @dontinclude signals-messages.edc + * @skip set_text_string + * @until } + * + * To get the message in code, we have to register a message handler, as + * follows: + * @dontinclude edje-signals-messages.c + * @skip message_handler_set + * @until message_handler_set + * @dontinclude edje-signals-messages.c + * @skip print out + * @until } + * + * To interact with the last missing feature -- emitting signals + * from code -- there's a command line interface to exercise + * it. A help string can be asked for with the 'h' key: + * @dontinclude edje-signals-messages.c + * @skip commands + * @until ; + * + * The @c 't' command will send either @c "part_right,show" or @c + * "part_right,hide" signals to the Edje object (those being the + * emission part of the signal), which was set to react on them as the + * names indicate. We'll set the right rectangle's visibility on/off, + * respectively, for those two signals: + * @dontinclude signals-messages.edc + * @skip hide right rectangle + * @until } + * @until } + * @dontinclude edje-signals-messages.c + * @skip keyname, "t" + * @until } + * + * The example's window should look like this picture: + * + * @image html edje-signals-messages-example.png + * @image rtf edje-signals-messages-example.png + * @image latex edje-signals-messages-example.eps width=\textwidth + * + * The full example follows, along with its EDC file. + * + * @include signals-messages.edc + * @include edje-signals-messages.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-signals-messages edje-signals-messages.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc signals-messages.edc + * @endverbatim + * @example edje-signals-messages.c + */ + +/** + * @page tutorial_edje_color_class Edje Color Class example + * @dontinclude edje-color-class.c + * + * This example shows how to manipulate and change Color classes. In this example + * we will create two surfaces to show what happens when you change the color + * class at the process and object level. + * + * It's a very simple example, there are two surfaces created from the same EDC, + * but just in one of them we will set a specific color class, although both will be + * affected by color class set at the process level as you will see. + * + * It's important you know that all colors has the format R G B A. Just to be easier + * to understand this example, we will create a small set of colors that will be used + * along of the example. This piece of code is shown below: + * @skip static color colors_init_data + * @until return EINA_FALSE + * @until } + * + * Focusing on the relevant parts of the code we go right to the part where we set + * the new color class. For that we will use the functions edje_color_class_set ( + * which will affect all edjes) and edje_object_color_class_set (which affects just + * the specific object). + * @skip edje_color_class_set + * @until Text shadow + * @until Text shadow + * @note + * - argv[1] is the name of a color class used in the EDC. + * - The second and third colors only apply to text part. + * - The color class set for the object overrides the color previously set. + * + * After we have set the color class we will check the color classes, for that + * we created a function which prints all color classes and tries to get theirs + * values and print too. + * @dontinclude edje-color-class.c + * @skip _color_classes_print(void) + * @until free + * @until } + * @until } + * + * There are two other things that are worth mentioning, we added two callbacks for the + * objects, one for mouse down (that we use to delete the color class) and another + * for the signal emmited when a color class is deleted. + * @skip evas_object_event + * @until NULL + * @skip edje_object_si + * @until process + * + * And then we delete the color class: + * @dontinclude edje-color-class.c + * @skip _on_mouse_down + * @until } + * + * Our example will look like this, if you run with the parameters "green_class gray pink yellow": + * + * @image html edje-color-class-example.png + * @image rtf edje-color-class-example.png + * @image latex edje-color-class-example.eps width=\textwidth + * @n + * @image html edje-color-class-example2.png + * @image rtf edje-color-class-example2.png + * @image latex edje-color-class-example2.eps width=\textwidth + * + * The full source code follows: + * @include edje-color-class.c + * + * + * The theme used in this example is: + * @include color-class.edc + * + * + * To compile use this command: + * @verbatim + * gcc -o edje-color-class edje-color-class.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc color-class.edc + * @endverbatim + * @example edje-color-class.c + */ + +/** + * @page tutorial_edje_animations Edje Animations example + * + * In this example we will figure out how to manipulate the animations on + * an Edje object. After reading this document you will be able to manipulate + * the frametime, freeze, pause and stop, all animations on an Edje object. + * + * To play with this example you will use the keyboard. Below are listed the + * keys and what each does. + * + * - '+' Increase the frametime; + * - '-' Decrease the frametime; + * - '=' Prints the actual frametime and says if the animations is playing; + * - 'f' Freezes the animations in the Edje object; + * - 'F' Freezes the animations in all objects in the running program; + * - 't' Thaws the animations in the Edje object; + * - 'T' Thaws the animations in all objects in the running program; + * - 's' Pauses the animations; + * - 'p' Plays the animations previously stopped; + * - 'a' Starts the animation in the Edje object; + * - 'A' Stops the animations in the Edje object; + * + * Now that we've explained how to use our example, we will see how it is made. + * Let's start by looking at the piece of code responsible to the actions commented + * above. + * @dontinclude edje-animations.c + * @skip _on_key_down + * @until Stopping + * @until } + * @until } + * @note The actions for the keys 'f' and 'F' will have the same effect in + * our example, just because there is only one object in the running + * program, The same happens with the keys 't' and 'T'. + * + * As you may have seen these set of functions are pretty easy to handle. The other + * important part of this example is the EDC file. The animations used in the + * code were created there + * @dontinclude animations.edc + * @skip program + * @until after: "animation,state1" + * @until } + * @skip program + * @until } + * @skip program + * @until } + * @until } + * + * The example's window should look like this picture: + * + * @image html edje-animations.png + * @image rtf edje-animations.png + * @image latex edje-animations.eps width=\textwidth + * @n + * @image html edje-animations2.png + * @image rtf edje-animations2.png + * @image latex edje-animations2.eps width=\textwidth + * + * The full example follows. + * + * @include edje-animations.c + * @include animations.edc + * + * To compile use this command: + * @verbatim + * gcc -o edje-animations edje-animations.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc animations.edc + * @endverbatim + */ + + /** + * @page tutorial_edje_multisense Multisense example + * @dontinclude edje-multisense.c + * + * This is a simple example in which a rect is created and sound and tone + * are played on mouse down event. + * + * Focusing on the creation of sample and tone. It should be noted that + * creation of sample sound is from any supported (sndfile lib) audio file, + * tone from of specific audible frequency range are controlled by the theme: + * + * The full source code follows: + * @include edje-multisense.c + * @include multisense.edc + */ + +/** + * @page tutorial_edje_basic2 Edje basics example 2 + * + * In this example we will show how to load an image and move it across the window. + * + * To load the image to our program, it needs to be declared in the .edc using the images block: + * @dontinclude basic2.edc + * @skip images + * @until } + * + * @note COMP means that we are using a lossless compression + * + * Then to be able to use it in our window we must declare a part for this image: + * + * @skip part{ + * @until } + * @until } + * @until } + * + * Now we move to our .c file, you will notice this define: + * @dontinclude edje-basic2.c + * @skipline #define WALK + * + * This means how fast we want to move the image across the screen + * + * To load our edje file we will use this command, we do just like the last example (Basic example): + * + * @skip if(!edje_object + * @until evas_object_show + * + * If we want to move our image, we need to add a callback to be able to do this, so we define: + * + * @skipline evas_object_event_callback + * + * To get the position of the image we use this: + * @dontinclude edje-basic2.c + * @skipline evas_object_geometry + * + * Now we use the if's to check in what direction the user wants to move the image then we move it: + * + * @skip if(strcmp + * @until evas_object_move + * + * The example's window should look like this picture: + * + * @image html basic2final.png + * @image rtf basic2final.png + * @image latex basic2final.eps width=\textwidth + * + * The complete .edc file: + * @include basic2.edc + * + * And the source code: + * @include edje-basic2.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-basic2 edje-basic2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc -id /path/to/the/image basic2.edc + * @endverbatim + * + */ + +/** + * @page tutorial_edje_swallow2 Swallow example 2 + * + * This example will show you how to load an image using evas and fill a swallow with it. + * It's basically almost like the last example, but with a minor change. + * + * This variables are used to store the name of the image that is going to be used, + * the path to it and a variable that will store the error cause if something goes wrong. + * + * Here it is: + * @dontinclude edje-swallow2.c + * @skipline char edje_file + * @skipline const char *img + * @skipline Evas_Load + * + * + * Then we load the image with this command: + * + * @skip img = + * @until evas_object_image_file_set(img, + * + * To check if we had some problem we use: + * + * @skip err = evas + * @until } + * + * Now we are going to swallow it and check if worked. If you notice we are + * using "part_one" as argument. We do this because we must explicit what part of our + * .edc file we want to swallow: + * + * @skip edje_object_part + * @until printf + * + * The example's window should look like this picture: + * + * @image html swallow2final.png + * @image rtf swallow2final.png + * @image latex swallow2final.eps width=\textwidth + * + * The complete .edc file: + * @include swallow.edc + * + * And the source code: + * @include edje-swallow2.c + * + * To compile use this command: + * @verbatim + * gcc -o edje-swallow2 edje-swallow2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc swallow.edc + * @endverbatim + */ + +/** + * @page tutorial_edje_signals_2 Edje Signals example 2 + * + * In this example we will make use of signals to help to move an image away from the mouse pointer. + * + * Signals are software interruption, this means that when it happens and if the program is sensitive to it + * the program will stop whatever it is doing and handle the signal. + * + * In this example we are only sensitive to the "mouse,move" signal so we need to register a callback to it. + * To do this we will add a signal callback to our edje object that will detect "mouse,move" signal + * coming from the part "part_image" and when this happens we will call the function _on_mouse_over passing + * the evas pointer as a parameter. The evas pointer is passed as a parameter because we need to know + * where is the mouse pointer in the screen. + * + * We can see bellow how we can listen to the signal: + * + * @dontinclude signals2.c + * @skip edje_object_signal + * @until ); + * + * + * Now, let's pass to the callback function. If we want to keep the ball away from the mouse pointer + * we need to now where is the ball and where is the mouse and we can easily discovery these things using + * this: + * + * For the object position in the canvas: + * @dontinclude signals2.c + * @skipline evas_object_geometry + * + * For the mouse position relative to the screen: + * @skipline evas_pointer_output + * + * Now that we have the position of the mouse and the object we just need + * to set the new location and move the object. To set the new location we do this: + * @skip if + * @until y -= ( + * + * You can change the formula above if you like. Because we are changing the object's position + * we need to do something if the new position is beyond the canvas size. So here it is: + * + * @skip if + * @until y = 0 + * + * Then now what we need to do is move the object: + * @skipline evas_object + * + * Here is the complete callback function: + * + * @dontinclude signals2.c + * @skip _on_mouse_over + * @until } + * + * + * When you compile and run it you should see this: + * @image html signal2final.png + * @image rtf signal2final.png + * @image latex signal2final.eps width=\textwidth + * + * The .edc file: + * @include signalsBubble.edc + * + * The source code: + * @include signals2.c + * + * To compile use this command: + * @verbatim + * gcc -o signals2 signals2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc -id /path/to/the/image signalsBubble.edc + * @endverbatim + */ + +/** + * @page tutorial_edje_animations_2 Edje animations example 2 + * + * In this example we will make an animation of a bouncing ball. + * + * Our focus now will be in the .edc file, because in the C source code we just load the edje object and do + * nothing else. + * + * We want to give the freedom to the object to use the whole canvas of our program, so lets define + * the min, max of our group: + * + * @dontinclude animations2.edc + * @skipline max + * @skipline min + * + * You will notice that in our .c file the canvas will have this size + * + * Now we will define our part that's going to be our image, the ball: + * @skip part{ + * @until type: + * + * + * At the description block bellow we are saying that this part has an image, defining + * the max and min size and it's position on the edje_object. The default state is the first + * state of the part, this means that when the edje object is loaded this one is going to be showed to you. + * + * Here it is: + * @dontinclude animations2.edc + * @skip description + * @until } + * @until } + * + * Now in the next description block we are saying where the ball is going to stop. + * Note that we have the "inherit" property. This means we are inheriting everything from default, + * except rel1 and rel2, because we are redefining it. + * + * Check the code: + * + * @skip description + * @until } + * + * We defined how our object will look like and it's position during the animation, + * now we need to define how it's going to act during the time. To do this we will + * use the programs block + * + * The first program block will start the animation, it will wait for the 'load' signal. This signal + * is generated when the edje object is loaded. The 'after' property is saying to this program block exactly this: + * "When you finish, call the program 'animation,state1' ". The 'in' property is saying, wait 0.5 seconds until you execute this program block. + * + * Here is the code: + * + * @skip program { + * @until } + * + * Now lets make the ball move and bounce it. In the second program block we are defining what we need to do + * with the action property. So we are saying change to the state "down-state" using the transition BOUNCE + * and apply this to the part "part_bubble". You can notice that BOUNCE has three parameters, the first one + * is saying how much time the transition will last, the second one is the factor of curviness + * and the last one is saying how many times and object will bounce. + * + * The code is very easy: + * + * @skip program { + * @until } + * + * Now all you have to do is compile the code and run it! + * + * When you compile and run it you should see this: + * @image html signal2final.png + * @image rtf signal2final.png + * @image latex signal2final.eps width=\textwidth + * + * The .edc file: + * @include animations2.edc + * + * The source code: + * @include animations2.c + * + * To compile use this command: + * @verbatim + * gcc -o animations2 animations2.c -DPACKAGE_BIN_DIR=\"/Where/enlightenment/is/installed/bin\" + * -DPACKAGE_LIB_DIR=\"/Where/enlightenment/is/installed/lib\" + * -DPACKAGE_DATA_DIR=\"/Where/enlightenment/is/installed/share\" + * `pkg-config --cflags --libs evas ecore ecore-evas edje` + * + * edje_cc animations2.edc + * @endverbatim + */ diff --git a/doc/foot.html b/doc/foot.html new file mode 100644 index 0000000..d43cf8f --- /dev/null +++ b/doc/foot.html @@ -0,0 +1,18 @@ + +
+ + + + + + + + + + + diff --git a/doc/head.html b/doc/head.html new file mode 100644 index 0000000..e490e78 --- /dev/null +++ b/doc/head.html @@ -0,0 +1,71 @@ + + + $title + + + + + + + + + + + + + + +
+ + + +
+
diff --git a/doc/img/basic2final.eps b/doc/img/basic2final.eps new file mode 100644 index 0000000..ef47a8c --- /dev/null +++ b/doc/img/basic2final.eps @@ -0,0 +1,7715 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (basic2final.eps) +%%CreationDate: (2012-04-03T11:58:25-03:00) +%%BoundingBox: 0 0 393 246 +%%HiResBoundingBox: 0 0 393 246 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 393 246 +userdict begin +DisplayImage +0 0 +393 246 +12 +393 246 +0 +0 +C6C3C0C1BEBB3E3D393C3B374F4D484F4D484F4D484F4D494F4E494F4E494F4E494F4E494F4E49 +4F4E494F4E494F4E494F4E494F4E494F4E494F4E49504E49504E49504E49504E49504F49504F49 +504F4A504F4A504F4A504F4A504F4A504F4A504F4A504F4A504F4A504F4A514F4A514F4A514F4A +514F4A51504A51504A51504A51504A51504B51504B51504B51504B51504B51504B51504B52504B +52504B52504B52504B52504B52504B52514B52514B52514B52514B52514B52514B52514C52514C +52514C52514C53514C53514C53514C53514C53514C53514C53524C53524C53524C53524C53524C +53524C53524C53524C53524C54524D54524D54524D54524D54524D54524D54524D54534D54534D +54534D54534D54534D54534D54534D54534D54534D55534D55534D55534D55534E55534E55534E +55534E55544E55544E55544E55544E55544E55544E55544E55544E55544E56544E56544E56544E +56544E56544E56544F56544F56554F56554F56554F56554F56554F56554F56554F56554F57554F +57554F57554F57554F57554F57554F57554F57554F57564F575650575650575650575650575650 +575650575650585650585650585650585650585650585650585650585650585750585750585750 +585750585751585751585751595751595751595751595751595751595751595751595751595751 +5958515958515958515958515958515958515958525A58525A58525A58525A58525A58525A5852 +5A58525A58525A58525A58525A59525A59525A59525A59525A59525A59525B59525B59525B5953 +5B59535B59535B59535B59535B59535B59535B59535B5A535B5A535B5A535B5A535B5A535C5A53 +5C5A535C5A535C5A535C5A535C5A535C5A545C5A545C5A545C5A545C5A545C5B545C5B545C5B54 +5C5B545C5B545D5B545D5B545D5B545D5B545D5B545D5B545D5B545D5B545D5B545D5B555D5B55 +5D5C555D5C555D5C555D5C555E5C555E5C555E5C555E5C555E5C555E5C555E5C555E5C555E5C55 +5E5C555E5C555E5C555E5D565E5D565E5D565E5D565F5D565F5D565F5D565F5D565F5D565F5D56 +5F5D565F5D565F5D565F5D565F5D565F5D565F5E565F5E565F5E565F5E57605E57605E57605E57 +605E57605E57605E57605E57605E57605E57605E57605E57605E57605F57605F57605F57615F57 +615F57615F57615F58615F58615F58615F58615F58615F58615F58615F58615F58615F58615F58 +616058616058626058626058626058626058626058626059626059626059626059626059626059 +626059626059626059626159636159636159636159636159636159636159636159636159636159 +63615A63615A63615A63615A63615A63615A63625A64625A64625A64625A64625A64625A64625A +64625A64625A64625A64625A64625A64625A64625B64625B64625B64635B65635B65635B65635B +65635B65635B64635B64625B64625B64625B64625A64625A64625A64625A64625A64625A64625A +64625A64625A64625A64625A64625A63625A63615A63615A63615A63615A63615A63615A636159 +636159636159636159636159636159636159636159636159626159626059626059626059626059 +626059626059626059ECECEC3F3E3A474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746423F3E3A474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746423F3E3A474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4443403C3B383A3A363B3A373C3B373B3A363B3A36393834373733363632363632363632363632 +3636323636323636323636323636323636323837333938343A39353A39353A3935393834383734 +363632363632363632363632363632363632363632363632363632363632363632383733393834 +3A39353A39353A39353938343C3B3743433E474642464541474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424544403E3E393C3B373C3B363C3A363D3A363C39363D3A363C3A363C3B363C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373B3A363B3A363B3A363A39353A39353A3935393835393834 +3938353A39353A39353A39353B3A363B3A363B3A363C3B373C3B373C3B373C3B373B3A363B3A36 +3A39353938353A39353938353938343938353A39353938353A39353D3D39454440464541474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424544423D3B373B3A363C39368A5E4EC0795FE0896BF79674E1896BC17A5F +8D5F4F3D3A363B3A363C3B373C3B373C3B373C3B373B3A363B3B363B3A36393835393835595854 +74736E87868298979287868275746F5A59553A39363938353A39353B3B363B3A363C3B373B3A36 +3C3B363B3A363A393539383554534F77767187878294938E8887827978745756513A3936393835 +3B3936454440464541474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247453F43413D403F3F454642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247454144423E403F3D434442474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424544403D3B383C3A3657463DDC8364F8916BF78F68F78D66 +F68B64F78D66F78F68F8916BDF846559473D3C3A363C3B373C3B373C3B373B3A363A3935393834 +43433F81807C94938D91908B8E8D898C8B858E8D8991908B94938D82817D4444403938343B3A35 +3B3A363C3B373B3A363A393539383442413C7B7A7692918C91908B8E8D898C8B858E8D8991908B +94938D81807A4544403938343C3A37464541474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247453F424753636E74807A614C413E45453E3D3937373739 +3F4241474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474541444243525E67757B76694E3F424442 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247453E3D39373737393F4241474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746423F3D393B3A365C473DEA8763F5875F +F38156F38156F38156F38156F38156F38156F38156F5875EEC88645B463C3B3A363C3B373C3B37 +3B3A363938354544418988848D8D8688878187878086857F86857F86857F8787808887818D8D86 +8A89854544413938353B3A363C3B373B3A3639383542413D8685808D8D86888781878780878680 +86857F86857F8787808887818D8D8689888443423F3938353F3E3A474642474642474642474642 +47464247464247464247464247464247464247464247464247453F3E3736363635363635363635 +3636353636353636384144414746424746424746424746424540373F68A9DCD9D1DFC687543C3A +3B405A8EB4C3D5C7A481513D3F4241474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464247453E393D5FABD5D0 +DEDBC49B5B3D3C4141474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247453E3D405A8EB4C3D5C7A481513D3F4241474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746424746424444403C3B373D3A36 +D77955F07D51EE7647EE7647ED7647EE7647EE7647EE7647ED7647EE7647EE7647F17E51D87753 +3F3A363C3B373B3A373A39353938347D7C7689888184837D83827C82817B81807A807F7981807A +82817B83827C84837C8988827D7C753A39353A39353B3A373A393538373479797389888184837D +82817B81807A807F797F7E78807F7981807A82817B84837D8988827D7C753A39353A3935474642 +47464247464247464247464247464247464247464247464247464247464247453F3D3A508BC4D0 +DEDBD2DFDBD2DFDBD2DFDBD2DFDBD2DFDBB075453A4144414746424746424746424540373F68A9 +DCD9D1DFC687543B38394C7DC1D7CFDDDAD0B670433B4041474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47453E393D5FABD5D0DEDBC49B5B3D3C4141474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464246433B3A4D7DC1D7CFDDDAD0B67043 +3B4041474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +3E3E3A3B3A3686543FED784BEB6E39EB6E39D56334C0592FEA6D39EB6E39EA6E39C45B30D06133 +EB6E39EB6E39EF794A88553F3C3A363B3A3639383455544F85847E7F7E787F7E777E7D767C7B74 +7B7A737A79737B7A737C7B747E7D767F7E777F7E7886857F5555503938343B3A3639383551504C +85847E7F7E787F7E783F3E3A3B3A363B3A363B3A363B3A363B3A363A39357E7D777F7E7886857F +555550393834474642474642474642474642474642474642474642474642474642474642474642 +47453F3D3A508BC4D0DEDBD2DFDAD0DCD8D0DCD8D0DCD8D0DCD1A770443B41454147453F413D39 +383736363635416AAADDD9D1DFC687543C3B3F3D4159738290836851403E444542474641423E3B +3938353636363737393D404046464247464247464247464247464247464247464244413B3B3936 +37363536373637393A41443E393D5FABD5D0DEDBC49C5D3D3736363638383C403F464642474642 +474642474641423F3B3A38363636363738393D3F3F464542474640413A36363635373C3F464642 +46433B38363637393E45464247453E3A36363636363C4141474642474642474642474641423E41 +59738290836851403E444540403B3838373636363536363537393A3E3E3B3C3937373636373738 +3C3E3F464642474642474641433D38383735363635363636383A3B414341474642474642474640 +423F3A3A37363736353636363738383B3E3F464642474642474641423E3B393835363636373739 +3D4040464642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642454440454440454440454440454440454440 +4544404544404544403C3B373A3935C36946EA6F3BE96A33E96A33BF5C32502817BB552AE76933 +C2582C522917B95A31E86A33E96A33EB6F3BC66A463C3A353B3A363938346D6D677D7C767A7973 +7A797379787178777077766F77766F77766F7877707978717A79737A79737D7C766E6E683A3935 +3B3A363938346A69637E7D767B7A737A79733F3E3A7E7D767E7D767E7D767E7D767F7E773F3E3A +7978727B7A737E7D76706F693A3935454440454440454440454440454440454440454440454440 +45444045444045444045433D3C3A508BC4D0DEDBD2C6864F3934333333333333333333373F433F +45433D3D3F517697ACC6CFCFDFDBCACECACFDFDBD2DFC687543B39373D5FABD5D0DEDBC49B5B3C +3C403E3E3A435D7D98B9C5C9DEDBCED2C3A9967251403D3D434440454440454440454440454440 +423E3B486584AABEC5DADAD2DFD9CACDB9936A4739383D5FABD5D0DEDBD2DED6D0DFDBD1D3C5AE +9E7753413D3D44444045443E3E3B425C7B96B6C2C6DBDBCDD0C1AA997654413C3B3E394473B2CF +DDDAD2D19A593E3A383A4D7FC2D9D1DDB36B46393A37426BB4D8D0DEDBC4995B3C3C403F454440 +45444045433D383D5FABD5D0DEDBC49B5B3C393B5080A0ADC3CBCADDDBD2DFDBCACDB99A8B818A +A8BCC3DADBD2D6CAB5A8835B443D3C44443F403B406092AECBD0CFDFDBD2DFD4C4C4AF8D72503E +3F403F45443E3E3B435E7D98B6C1C5DADAD1DFDACBD0C4B2AA8756423D3D44443E3E3A435D7D98 +B9C5C9DEDBCED2C3A9967251403D3D434440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +45444045444045444045444045444045444045444045444045444045444042413D42413D42413D +42413D42413D42413D42413D42413D42413D3C3B37393835E07146E96830E8662EE8662EEA713F +C273534F28179C4622502717BC6F51E97241E8662EE8662EE96830E172463C39353A3935383733 +79787277766F77766F76756E75746D75746D75746D74736C75746D75746D75746D76756E77766F +77766F7978723938343A393538373475746E78777077766F77766F3F3E3A75746D76756E75746D +76756E76756E3F3E3A76756E77766F7877707A797339383442413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42403B3B39508BC4D0DEDBD2C788513C3736363635 +363635373A3B42403C3D38436DA7C8DDDAD2DED9D0D9D2CDDDD9D1DFDBD2DFC687543B38363C5F +ABD5D0DEDBC49B5B3C3A373C578DB9DDDAD1DED9CFD4CECBDDD9D1DFDBC7A669443B3D3C41413D +42413D42413D41403939436CAFD6D0DEDBD2DECDBDC7C7C5D8CC9A613E38373C5FABD5D0DEDBD2 +DED9CDD7D7D0DDDBD2DFDBC49E5F403A3E3C3F3A3D598EBADDDAD2DEDAD0DDD8D0DDDAD1DFDBD1 +BD834F3D38374A7BB3DCDAD2DFBE7B4E3838436FAADBD9D1DFD098603D363C5B95D0D9D1DFD19C +613F383F403D42413D42413D42403B373C5FABD5D0DEDBC49B5B3C373C5FABD5D0DEDBD2DED7CB +D9D9D0DEDBD2DFDBD2DED9D0DAD7D0DDDBD2DFDBC9A767413B3E3B3F383B5C9AC1DAD4C7D0CBC6 +D9D9D0DEDBD2DFC386553B383C383D5F96BFDDDAD2DED9D0D1C4BACAD5D1DFDBD2DFB46B42393A +3E383C578DB9DDDAD1DED9CFD4CECBDDD9D1DFDBC7A669443B3D3C41413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B3C3B37393834E97140E66228 +E66228E66228E66228E76E39A05B4043221499583EE66E3DE66228E66228E66228E66329E97040 +3C39343A393538373379797273726B73726B74736C3C3B373B3A363B3A363B3A363B3A363B3A36 +3B3A3673726B73726B72716A7979723938343A393538373376756F73726B73726B74736C3F3E3A +74736C75746D75746D75746D75746D3F3E3A73726B73726B73726B7A7973393834403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403E393A39508BC4D0DEDBD2 +DFDBD2DFDBD2DFDBD2DFDBD2CD94563D3837384B7ABFD9D1DFDBC6A16944373435436FADDDD9D1 +DFC687543B37363C5FABD5D0DEDBC49B5B3C394670B5D8D0DEDBB88B573E38363A4E7AADDBDAD1 +DFB872483A393E3E3B403F3B403F3B403D373A5186C6D9D1DFDBB582503C36363436373A3E3E39 +373C5FABD5D0DEDBC49B5B3B35384D83BDD0DEDBD2D29C5A3E3A37384671B6D8D0DEDBCAB18058 +44383A517EAEDADAD1DFD4A2684136394E81C3D8D1DFD8A76E423F63A3C8DDDAD2DFDBBC8C533D +5084B8DDDAD2D8A964413A3A3F3F3B403F3B403F3B403F39373C5FABD5D0DEDBC49B5B3C373C5F +ABD5D0DEDBC49B5B3B37446CB1D6D0DEDBD2BD774637384B80BCD0DEDBD2D49F5C3E3A393E3F39 +3D383737393C4247494D5A7DBDD9D1DEDBB57D4A37394876BAD9D1DEDBC8AA6F46373539538BBC +DDDAD2DFB46B423837384570B5D8D0DEDBB88B573E38363A4E7AADDBDAD1DFB872483A393E3E3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393C3C37 +393835DC6839E65F25E55E23E55E23E45E23BF511F5129179A593F4F2818B94E20E45D23E55E23 +E55E23E66025DD67383C39353A3935383733706F6A706F68706F6871706A7A79737B7A737C7B74 +7C7B747C7B747B7A737A797371706A6F6F68706F68706F6A3938343A39353837336E6D68706F68 +706F6972716A3F3E3A73726B75746D75746D75746D75746D3F3E3A717069706F69706F6873726C +3938343E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3C38 +3939508BC4D0DEDBD2DFDACBD5D1C8D4D0C8D4D0C4BA89523C37353C5F9BD4D9D1DFD39E633E37 +3B3A353F68A9DCD9D1DFC687543B37353C5FABD5D0DEDBC49B5B3C3D5C97D1D9D1DFDBD2DEDAD1 +DEDAD1DEDAD1DEDAD1DEC98E583C363C3D393E3D393E3D393E3D38393C5691C2CEDCDAD1DFDBC7 +BFA48671533E3A3B38363C5FABD5D0DEDBC49B5B3C39363A5A99C4DDDAD2DEB1684137353C5C98 +D3D9D1DFD4A0643E373B3C3737436DB8D9D0DEDBBE8E543A3738508EC3D0DEDBC49C635F98C9D0 +DDD6C8DEDBD2BC7A5775B3CFDDDACEB26D43393A383E3D393E3D393E3D393E3D38363C5FABD5D0 +DEDBC49B5B3C373C5FABD5D0DEDBC49B5B3C38384D85BFD0DEDBD2C2814C39363A5A98C4DDDAD2 +DEB2694137373A3943648CA8CCDAD1DEDAD0DDD9D1DFDBD2DFDBBD8D533A3C5F9AD5D9D1DFD4A0 +643D373B3839538BBCDDDAD2DFB46B4238353C5B97D1D9D1DFDBD2DEDAD1DEDAD1DEDAD1DEDAD1 +DEC98E583C363C3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373A3935B75A32E45F23E35B1CE35B1CC04E1C512816BA6949E67140C26E4D +502717B94D1BE25B1CE35B1CE55F23BA5B323C3A353A39353938345F5E5A6D6C666C6B646E6D66 +706F6972716A73726B74736C73726B72716A706F686E6D666C6B646D6C66605F5B3A39353A3935 +3938345F5E5A6D6C666C6B656E6D673F3E39706F6873726B73726B73726B72716A3F3E396D6C66 +6C6B656D6C6664635E3938353C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3A363838508BC4D0DEDBD2C6864F3934333333333333333537373B39353B5E99 +D4D9D1DFD6A36840373939343F68A9DCD9D1DFC687543A36343C5FABD5D0DEDBC49B5B3B3D5F9C +D3D9D1DFDBC1AC958A908E89908E89908E898F81644A3B373B3B373C3B373C3B373C3B373C3B35 +363F557690A3C4D4CFDDDBD2DFDBB78D563C353C5FABD5D0DEDBC49B5B3C383739538BBCDDDAD2 +DFB46B4237343B5D98D2D9D1DFD4A1663F363A3A3637446EB8D9D0DEDBBE90543B3836395591BF +DDDAD2CBA39DC9DAD1BE8779ADD3D1D9B694B6D4D1DED8AB7245383A3A373C3B373C3B373C3B37 +3C3B36353C5FABD5D0DEDBC49B5B3C363C5FABD5D0DEDBC49B5B3C37374477B7D0DDDAD2C3824C +393639538BBCDDDAD2DFB46B4237353C609BD5D9D1DFD9B69D807173788CBFD8D1DFDBBD8D533A +3C5E9DD4D9D1DFD49F643E36393639538BBCDDDAD2DFB46B4237343C5E9CD3D9D1DFDBC1AC958A +908E89908E89908E898F81644A3B373B3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373B3A363B3A363B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373B3A367B4730E35E23E25817E25817CA5727BD6A48 +E4662FE25817E4642BC16C4BC75727E25817E25817E45E247A46313C3A363B3A363938344B4A45 +6A69636867616968626B6A646E6D666F6E67706F686F6E676E6D666B6A646968626766606B6A64 +4A49453938343B3A363938344B4A456A69636867616A69623E3D393B3A363B3A363B3A363B3A36 +3B3A363B3A366968616867616C6B654E4D483938343C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2C788513C3736363635363635 +363635373A35384874B9D8D0DEDBCDB67F523F3837416AAADDD9D1DFC687543A36343C5FABD5D0 +DEDBC49B5B3C384A77BBD8D0DEDBCDB683594339363636363B454C4A3F383A3B373C3B373C3B37 +3C3B373C3B373B3D4048413A373635363E5993C4D0DEDBD2C68750393D60ABD5D0DEDBC49B5B3C +383739538BBCDDDAD2DFB46B42383537466FB5D7D0DEDBCBB2835B453B3D5480B0DBDAD1DFD4A1 +6841373A38343A558DCAD9D1DFDBD2DFDBBB8B534971B0CEDDDAD2DFDBD2DCB26E4639373B3B37 +3C3B373C3B373C3B373C3B36353C5FABD5D0DEDBC49B5B3C363C5FABD5D0DEDBC49B5B3C373744 +77B7D0DDDAD2C3824C393639538BBCDDDAD2DFB46B4237364A7BB3DCDAD2DFBD7B4E3936363D5E +A5D1D0DEDBBD8D533A374C7ABED8D0DFDBCAB07A53433E486A9DC4DDDAD2DFB46B423835364977 +BBD8D0DEDBCDB683594339363636363B454C4A3F383A3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373B3A361C1B193938343B3A363C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3835C35626E2591A +E15511E35D1FE36228E15511E15511E15511E36127E35E22E15511E3591AB151273C39353C3B37 +3C3A363A39353938345E5E5966655F64635D65655E6867616968626A696269686268676165655E +64635D66655F5959543938353A39353C3A363A39353938345E5E5966655F64645E6D6C67706F69 +72716A72716B72716A706F696E6D6764645E66655F61615B3A39353A39353C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2DFDBD2 +DFDBD2DFDBD2DFDBD2DFDBC9B36F4337373E5D94BDDBD8D1DEDBD2DFD8CAD8DAD2DFDBD2DEC687 +543B36343C5FABD5D0DEDBC49B5B3C38373E5F96BEDBD9D1DEDBD2DFDBD0DBD9D2DFDBCCA9643E +383A373C3B373C3B373C3B373C39343B588FCCD9D1DACDBFC7C4C4DDDAD1DEDACBAC6A41363D5F +ABD5D0DEDBC49B5B3C383739538BBCDDDAD2DFB46B4238363A373C598EBADBD8D1DEDBD2DFDBD2 +DFDBD1DED9D0BF84503B38373C3B37373A5392C6D0DEDBD2DFC98C583B354571ABDBD9D1DFDBCE +B370453939373C3B373C3B373C3B373C3B373C3B36353C5FABD5D0DEDBC49B5B3C363C5FABD5D0 +DEDBC49B5B3C37374477B7D0DDDAD2C3824C393639538BBCDDDAD2DFB46B4237353C5990CCD7D0 +DEDBD2D6C7B5BAB8BBD8DAD1DEDABD8D533A36374267A0C3DBD9D1DEDAD1DEDAD1DEDBD2DFDBD2 +DFB36B4238363A373E5F96BEDBD9D1DEDBD2DFDBD0DBD9D2DFDBCCA9643E383A373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37393835000000191917373632 +3B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3B3A36523C30D0551DE15612E0520AE0520AE0520AE0520AE0520AE0520AE0520AE15612D2561C +4D3B323B3A363C3B373C3B373B3A363938353E3D3A605F5962615B61605A62615B63625C64635D +63625C62615B61605A62625C5F5E5A3D3C383938353B3A363C3B373B3A363938353F3E3B605F5B +62625C61605A62615B63625C64635D64635D62615B61605B62625C61605C403F3B3938343A3A35 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A3638394F +89C2CEDBD8D0DCD8D0DCD8D0DCD8D0DCD8D0DCD8D0B871433939373838435D7D96B6C1C3D8D8CF +DCD8CED4C9B6B49568473936353C61ACD5D0DEDBC49B5B3B383A353837415C7C95B4BEC1D7D8CF +DCD8CED1C2A99161413A3A373C3B373C3B373C3B373C3A353E5983ADBFC4D9D8CFDCD8CFD5C8B1 +A3835D443836343C5FA9D2CEDCD8C29A5A3C3837395289BADAD7CFDCB26A4238363C3B37383841 +5D7E99B8C3C6DBD8CDD1C1AC9C79554138363B3B373C3B363A37395086B8DAD7CFCE97583D3837 +364771B7D6CEDCD2A16941373A3B373C3B373C3B373C3B373C3B373C3B36353C5FA9D2CEDCD8C2 +9A5A3C363C5FA9D2CEDCD8C29A5A3C37374476B5CDDBD8D0C1814C3936395289BADAD7CFDCB26A +42383639383D557893B5C5C9DCD8CFDCD8D0DAD2C2C3B2916F49383A3A36373944627E8FA4ACAE +BAB1A4AEBECCDEDBD2DAAA634037373B3B353837415C7C95B4BEC1D7D8CFDCD8CED1C2A9916141 +3A3A373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37393834 +0000001515151A19183736333B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373B3A36483B32AA4A1FDD540EDF5207DF5106DF5004DF5106DF5207 +DE540DAC4B1E493B323B3A363C3B373C3B373C3B373B3A373A3A353938343B3A3754534E5E5D58 +5E5D585D5C575D5C575D5C575E5D585F5E5955544F3C3B373938343B3A353C3B373C3B373B3A37 +3A3A353938343C3B3855544F5E5D585E5D585E5D575E5D575E5D575E5D585F5E595C5B56403F3B +3938343B39353B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3A363834333333333333333333333333333333333333333538373C3B373C3B37 +3A37353534333333333333333434343536363836353B5382C4D9D1DFDBBA874F39393A373C3B36 +3938343534333333333333333334343739373C3B373C3B373C3B373C3B373C3B373C3A35363434 +3333333333333434343637363B3B373C3B363533333333343739373C3B373A3734333333333535 +3C3B373C3B373C3B373A38343434333333333334343737363B3B373C3B373C3B373C3B363A3734 +3333333437363C3B373C3A36353333333434393B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B363533333333343739373C3B363533333333343739373C3B373835333333333537373C3B37 +3A37343333333335353C3B373C3B373A3835353333333333333333333433343535393A373B3A38 +444C4A433A37363635373C5383B9CFDEDAD1C78A523B38363B3B373C3B36393834353433333333 +3333333334343739373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B37393834000000DCDCDC1111111B1B193837333B3A363C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A363A39356E3F28AC491ACF4E0E +DC5107D04E0EAE4919703F283B39353B3A363C3B373C3B373C3B373C3B373B3A363B3A373A3A35 +39383538373345444050504A58585259595458585351514B4544403837333938353A39353C3B36 +3B3A363C3B373B3A363C3A363A3A3539383538373348474252524C59595359585459595354544E +4948433938343938343A39353B3B363B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B36383A528BBAC5DBDBD2DFDBD1DDC88F +5C3D363B3A373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B3739374678B8CFDDDAD2DAD2C9DADBD2DFDAD1DDD7AC7C4B38383A373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B37393834000000FEFEFED6D6D60E0E0E1E1D1B3837333B3A36 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3B3A363A39353938353938343938353A39353B3A363C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373B3A363B3A373B3A363A39353938343938343837333837333837333938343938343A3935 +3B3A363B3A363B3A363C3B373C3B373C3B373B3A363B3A373B3A363A3935393834383734383733 +3837333837333837343938343A39353A3A363C3A363B3A363C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B36363E5EA0C7CE +DBD8CCCEBA9A7E573E3A39373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B36393A4A759AADC5CCCBDCD8CFDCD2C2C4B191795940393937 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37393834000000FBFBFBFFFFFFD0D0D0 +0C0C0C1F1F1D3837333B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A373B3A363B39353A39353A39353A3935 +3B39353B3A363B3B363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A36 +3B3A363A39353A39353A39353A39353A39353A3A363B3A363C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B363634333333333434343839373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B36393634353433333333333333 +3435343939373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37393834000000 +F7F7F7FEFEFEFFFFFFC9C9C90A0A0A21211E3837343B3A363C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B37393834000000F4F4F4FBFBFBFFFFFFFFFFFFC3C3C30A0A0A2322203938343B3A363C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B37393834000000F0F0F0F8F8F8FFFFFFFFFFFFFFFFFFBBBBBB0A0A0A +2524223938343B3A363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B37393834000000EDEDEDF4F4F4FBFBFBFFFFFF +FFFFFFFFFFFFB4B4B40A0A0A2726233938343B3A363C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37393834000000E9E9E9 +F1F1F1F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFAAAAAA0A0A0A2828253938353B3A363C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3C3B37000000E6E6E6EDEDEDF4F4F4FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFA1A1A10B0B0A2C2B28 +3D3C383E3D393F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3AFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF4F4F4000000E3E3E3EAEAEAF1F1F1F8F8F8FDFDFD2C2C2C0A0A0A0A0A0A +0A0A0A010101121212C5C5C5FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4000000DFDFDFE6E6E6D7D7D79C9C9CFCFCFC +909090282828949494A3A3A3A6A6A6ACACACCECECEF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4000000DCDCDCCBCBCB +1E1E1E0E0E0EEBEBEBF5F5F5121212989898E5E5E5F0F0F0F1F1F1F6F6F6FDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4 +000000C0C0C01A1A1A4C4C4C3636367F7F7FFCFCFC8080803E3E3EE4E4E4FDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF4F4F4000000181818535353BABABAB1B1B1111111EDEDEDEFEFEF0E0E0EB2B2B2 +F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F40101015C5C5CBEBEBEECECECF2F2F2414141818181 +FCFCFC3E3E3E767676EDEDEDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6818181CACACAEDEDEDFDFDFD +FCFCFCBDBDBD0E0E0E434343131313919191EEEEEEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF1F1F1 +F4F4F4FDFDFDFFFFFFFFFFFFF7F7F7B3B3B36F6F6F9A9A9AD7D7D7F8F8F8FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EDEDEDEEEEEEF9F9F9FEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEC2C2C2C6C6C6CBCBCBCFCFCFD2D2D2D6D6D6D9D9D9DBDBDBDEDEDEE0E0E0E1E1E1E1E1E1 +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +B8B8B8BDBDBDC1C1C1C5C5C5C8C8C8CBCBCBCECECED1D1D1D3D3D3D5D5D5D7D7D7D9D9D9DBDBDB +DCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E2E2E2E0E0E0FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEB8B8B8BABABABFBFBFC3C3C3C6C6C6C9C9C9CCCCCCCFCFCFD2D2D2D4D4D4D6D6D6D8D8D8 +DADADADCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E3E3E3E1E1E1FEFEFE +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEB3B3B3B7B7B7B7B7B7BBBBBBBFBFBFC2C2C2C6C6C6C9C9C9CCCCCCCFCFCFD1D1D1D4D4D4 +D9D9D9DEDEDEE2E2E2E6E6E6E8E8E8E9E9E9EAEAEAE9E9E9E7E7E7E6E6E6E6E6E6E7E7E7E8E8E8 +E8E8E8E7E7E7E6E6E6E4E4E4DEDEDEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEB5B5B5B6B6B6B6B6B6BABABABEBEBEC1C1C1C5C5C5C8C8C8CBCBCBCECECE +D1D1D1D8D8D8DEDEDEE4E4E4E9E9E9EEEEEEF1F1F1F4F4F4F6F6F6F6F6F6F6F6F6F4F4F4F1F1F1 +EDEDEDE9E9E9EAEAEAEBEBEBEBEBEBEBEBEBEAEAEAE8E8E8E6E6E6FEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEB0B0B0B3B3B3B3B3B3B4B4B4B8B8B8BCBCBCC0C0C0C3C3C3C6C6C6 +C9C9C9CCCCCCD1D1D1D8D8D8DFDFDFE6E6E6ECECECF2F2F2F6F6F6FAFAFAFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCF9F9F9F4F4F4EEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECEBEBEBE9E9E9 +F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEAEAEAEB0B0B0B0B0B0B2B2B2B7B7B7BABABABEBEBE +C1C1C1C4C4C4C7C7C7CACACACFCFCFD6D6D6DEDEDEE5E5E5ECECECF2F2F2F8F8F8FDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF7F7F7F1F1F1EFEFEFEFEFEFEFEFEF +EFEFEFEEEEEEEDEDEDEBEBEBF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEAAAAAAACACACADADADB0B0B0B5B5B5 +BBBBBBBFBFBFC2C2C2C4C4C4C5C5C5C8C8C8CBCBCBD2D2D2DADADAE1E1E1E9E9E9F0F0F0F6F6F6 +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8 +F1F1F1F0F0F0F0F0F0F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEA6A6A6A8A8A8A9A9A9 +AEAEAEB5B5B5BABABABFBFBFC2C2C2C5C5C5C6C6C6C7C7C7C9C9C9CDCDCDD5D5D5DCDCDCE4E4E4 +EBEBEBF2F2F2F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDF6F6F6F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F1F1F1F0F0F0F3F3F3FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEA2A2A2 +A4A4A4A6A6A6ACACACB3B3B3B9B9B9BEBEBEC1C1C1C4C4C4C6C6C6C7C7C7C7C7C7C9C9C9CECECE +D5D5D5DDDDDDE4E4E4EBEBEBF2F2F2F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F2F2F2 +F2F2F2F0F0F0F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEA0A0A09F9F9FA3A3A3A8A8A8AFAFAFB6B6B6BBBBBBBFBFBFC3C3C3C5C5C5C6C6C6C7C7C7 +C7C7C7C9C9C9CECECED5D5D5DCDCDCE3E3E3EAEAEAF1F1F1F7F7F7FDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF4F4F4F2F2F2F4F4F4 +F7F7F7FAFAFAFAFAFAF8F8F8F3F3F3F0F0F0F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFE9F9F9F9B9B9B9F9F9FA4A4A4ABABABB2B2B2B7B7B7BCBCBCC0C0C0C2C2C2 +C4C4C4C5C5C5C6C6C6C6C6C6C9C9C9CDCDCDD4D4D4DBDBDBE1E1E1E8E8E8EEEEEEF4F4F4FAFAFA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +F4F4F4F2F2F2F6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFCFCFCF5F5F5F0F0F0FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9F9F9F9B9B9B9B9B9BA0A0A0A6A6A6ADADADB2B2B2B7B7B7 +BCBCBCBFBFBFC1C1C1C3C3C3C4C4C4C4C4C4C6C6C6C8C8C8CBCBCBD1D1D1D8D8D8DEDEDEE5E5E5 +EBEBEBF0F0F0F6F6F6FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCF8F8F8F2F2F2F2F2F2F6F6F6FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF5F5F5 +F0F0F0FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9E9E9A9A9A9A9A9A9C9C9CA1A1A1A7A7A7 +ADADADB2B2B2B7B7B7BABABABDBDBDBFBFBFC1C1C1C1C1C1C2C2C2C5C5C5C8C8C8CBCBCBCFCFCF +D5D5D5DBDBDBE1E1E1E7E7E7ECECECF1F1F1F5F5F5F9F9F9FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F4F4F4F1F1F1F2F2F2F6F6F6FCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCF3F3F3F1F1F1FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9C9C9C9A9A9A9A9A9A +9D9D9DA1A1A1A7A7A7ACACACB1B1B1B5B5B5B8B8B8BBBBBBBDBDBDBEBEBEBFBFBFC2C2C2C5C5C5 +C7C7C7CACACACCCCCCD1D1D1D7D7D7DCDCDCE2E2E2E7E7E7EBEBEBF0F0F0F3F3F3F7F7F7F9F9F9 +FBFBFBFCFCFCFDFDFDFCFCFCFBFBFBF9F9F9F7F7F7F4F4F4F0F0F0F0F0F0F1F1F1F4F4F4FAFAFA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F0F0F0F2F2F2FDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9C9C9C +9A9A9A9A9A9A9A9A9A9D9D9DA1A1A1A6A6A6ABABABAFAFAFB3B3B3B6B6B6B8B8B8B9B9B9BCBCBC +BFBFBFC1C1C1C4C4C4C7C7C7C9C9C9CCCCCCCECECED2D2D2D7D7D7DCDCDCE1E1E1E5E5E5E9E9E9 +EDEDEDF0F0F0F2F2F2F4F4F4F5F5F5F6F6F6F6F6F6F5F5F5F3F3F3F1F1F1EFEFEFEFEFEFF0F0F0 +F1F1F1F2F2F2F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF3F3F3EEEEEEF3F3F3 +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9D9D9DA1A1A1A5A5A5A9A9A9ADADADB0B0B0B3B3B3 +B5B5B5B8B8B8BBBBBBBEBEBEC1C1C1C3C3C3C6C6C6C8C8C8CBCBCBCDCDCDD0D0D0D2D2D2D7D7D7 +DBDBDBDFDFDFE3E3E3E6E6E6E9E9E9EBEBEBEDEDEDEEEEEEEFEFEFEFEFEFEEEEEEEDEDEDEBEBEB +EDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F3F3F3F9F9F9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD +F6F6F6EFEFEFECECECF2F2F2F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9D9D9DA1A1A1A4A4A4A8A8A8 +ABABABAEAEAEB1B1B1B4B4B4B7B7B7BABABABDBDBDC0C0C0C2C2C2C5C5C5C8C8C8CACACACCCCCC +CFCFCFD1D1D1D3D3D3D5D5D5D9D9D9DCDCDCDFDFDFE2E2E2E4E4E4E6E6E6E7E7E7E8E8E8E8E8E8 +E8E8E8E9E9E9EBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F4F4F4F9F9F9FDFDFDFFFFFF +FFFFFFFFFFFFFCFCFCF6F6F6EFEFEFEDEDEDEAEAEAF0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C +A0A0A0A4A4A4A8A8A8ABABABAEAEAEB1B1B1B4B4B4B7B7B7B9B9B9BCBCBCBFBFBFC2C2C2C4C4C4 +C7C7C7C9C9C9CBCBCBCECECED0D0D0D2D2D2D4D4D4D6D6D6D9D9D9DBDBDBDCDCDCDEDEDEE0E0E0 +E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8E9E9E9EBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F0F0F0 +F4F4F4F8F8F8FBFBFBFCFCFCFCFCFCFAFAFAF5F5F5EFEFEFEDEDEDEBEBEBE7E7E7FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9D9D9DA2A2A2A6A6A6A9A9A9ACACACAEAEAEB0B0B0B3B3B3B6B6B6B8B8B8BBBBBB +BEBEBEC0C0C0C3C3C3C6C6C6C8C8C8CACACACDCDCDCFCFCFD1D1D1D3D3D3D5D5D5D7D7D7D9D9D9 +DBDBDBDDDDDDDFDFDFE1E1E1E2E2E2E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBECECECEDEDED +EEEEEEEFEFEFEFEFEFF0F0F0F2F2F2F5F5F5F7F7F7F7F7F7F6F6F6F2F2F2EFEFEFEDEDEDEBEBEB +E7E7E7E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9C9C9C +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9E9E9EA3A3A3A7A7A7ABABABADADADB0B0B0B1B1B1B2B2B2 +B5B5B5B7B7B7BABABABDBDBDBFBFBFC2C2C2C4C4C4C7C7C7C9C9C9CBCBCBCECECED0D0D0D2D2D2 +D4D4D4D6D6D6D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6E7E7E7E8E8E8 +EAEAEAEBEBEBECECECEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F1F1F1F2F2F2F1F1F1EFEFEF +EEEEEEEDEDEDEBEBEBE8E8E8E3E3E3FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF9E9E9E9A9A9A9A9A9A9A9A9A9B9B9B9D9D9D9E9E9E9F9F9FA4A4A4A8A8A8ABABABAEAEAE +B0B0B0B2B2B2B3B3B3B4B4B4B6B6B6B9B9B9BCBCBCBEBEBEC1C1C1C3C3C3C6C6C6C8C8C8CACACA +CCCCCCCFCFCFD1D1D1D3D3D3D5D5D5D7D7D7D9D9D9DBDBDBDCDCDCDEDEDEE0E0E0E1E1E1E3E3E3 +E4E4E4E6E6E6E7E7E7E8E8E8E9E9E9EBEBEBEBEBEBECECECEDEDEDEEEEEEEEEEEEEFEFEFEFEFEF +EFEFEFEEEEEEEEEEEEEDEDEDECECECEAEAEAE8E8E8E4E4E4DBDBDBFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9A9A9A9C9C9C9E9E9EA0A0A0A0A0A0A4A4A4 +A8A8A8ACACACAFAFAFB1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B8B8B8BABABABDBDBDBFBFBFC2C2C2 +C4C4C4C7C7C7C9C9C9CBCBCBCDCDCDD0D0D0D3D3D3D5D5D5D7D7D7D9D9D9DADADADBDBDBDDDDDD +DEDEDEE0E0E0E2E2E2E3E3E3E4E4E4E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECECECEC +EDEDEDEFEFEFF1F1F1F1F1F1F0F0F0EDEDEDECECECEBEBEBE9E9E9E7E7E7E4E4E4DDDDDDFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9B9B9B9E9E9EA0A0A0 +A1A1A1A2A2A2A4A4A4A8A8A8ACACACAFAFAFB1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B7B7B7B9B9B9 +BCBCBCBEBEBEC1C1C1C3C3C3C5C5C5C8C8C8CBCBCBCECECED1D1D1D4D4D4D7D7D7D9D9D9DADADA +DBDBDBDCDCDCDDDDDDDDDDDDDFDFDFE0E0E0E2E2E2E3E3E3E4E4E4E5E5E5E7E7E7E8E8E8E9E9E9 +EAEAEAEAEAEAEDEDEDF1F1F1F4F4F4F6F6F6F6F6F6F5F5F5F2F2F2EDEDEDEAEAEAE9E9E9E6E6E6 +E3E3E3DEDEDEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE9D9D9D9A9A9A9A9A9A +9D9D9D9F9F9FA1A1A1A2A2A2A3A3A3A4A4A4A8A8A8ABABABAEAEAEB1B1B1B2B2B2B3B3B3B3B3B3 +B3B3B3B5B5B5B8B8B8BABABABDBDBDBFBFBFC2C2C2C4C4C4C8C8C8CBCBCBCFCFCFD2D2D2D5D5D5 +D7D7D7DADADADBDBDBDCDCDCDDDDDDDEDEDEDDDDDDDDDDDDDFDFDFE0E0E0E1E1E1E3E3E3E4E4E4 +E5E5E5E6E6E6E7E7E7E8E8E8ECECECF0F0F0F5F5F5F8F8F8FAFAFAFBFBFBFAFAFAF7F7F7F2F2F2 +EBEBEBE7E7E7E6E6E6E3E3E3DEDEDEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0A0A0 +9B9B9B9A9A9A9B9B9B9E9E9EA0A0A0A2A2A2A3A3A3A4A4A4A4A4A4A7A7A7ABABABAEAEAEB0B0B0 +B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B6B6B6B9B9B9BBBBBBBEBEBEC0C0C0C4C4C4C8C8C8CCCCCC +CFCFCFD2D2D2D5D5D5D8D8D8DADADADCDCDCDDDDDDDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDEDEDE +E0E0E0E1E1E1E2E2E2E3E3E3E5E5E5E6E6E6E8E8E8EEEEEEF3F3F3F8F8F8FBFBFBFEFEFEFFFFFF +FEFEFEFBFBFBF7F7F7F0F0F0E7E7E7E4E4E4E2E2E2DEDEDED6D6D6FEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF9F9F9F9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6 +AAAAAAACACACAFAFAFB0B0B0B1B1B1B2B2B2B2B2B2B2B2B2B5B5B5B7B7B7BABABABCBCBCBFBFBF +C4C4C4C8C8C8CBCBCBCFCFCFD2D2D2D5D5D5D8D8D8DADADADCDCDCDDDDDDDEDEDEDEDEDEDEDEDE +DEDEDEDDDDDDDDDDDDDEDEDEDFDFDFE1E1E1E2E2E2E3E3E3E4E4E4EAEAEAF0F0F0F6F6F6FAFAFA +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF4F4F4EAEAEAE3E3E3E1E1E1DDDDDDD8D8D8FEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1A3A3A3A4A4A4 +A5A5A5A5A5A5A5A5A5A8A8A8ABABABADADADAFAFAFB0B0B0B0B0B0B0B0B0B1B1B1B3B3B3B6B6B6 +B8B8B8BBBBBBBFBFBFC3C3C3C7C7C7CBCBCBCECECED2D2D2D5D5D5D7D7D7D9D9D9DBDBDBDDDDDD +DDDDDDDEDEDEDEDEDEDDDDDDDCDCDCDBDBDBDCDCDCDEDEDEDFDFDFE0E0E0E1E1E1E5E5E5EBEBEB +F2F2F2F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF6F6F6EDEDEDE2E2E2DFDFDF +DCDCDCD9D9D9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9A9A9A9A9A9A9D9D9DA0A0A0 +A2A2A2A3A3A3A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A9A9A9ABABABADADADAEAEAEAFAFAFAFAFAF +AFAFAFB2B2B2B4B4B4B7B7B7BABABABEBEBEC2C2C2C6C6C6CACACACDCDCDD1D1D1D4D4D4D6D6D6 +D8D8D8DADADADCDCDCDDDDDDDDDDDDDDDDDDDCDCDCDBDBDBDADADADBDBDBDCDCDCDDDDDDDEDEDE +DFDFDFE6E6E6ECECECF2F2F2F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8 +EFEFEFE4E4E4DEDEDEDBDBDBD9D9D9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9A9A9A +9A9A9A9D9D9DA0A0A0A2A2A2A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A7A7A7A9A9A9ABABAB +ACACACADADADADADADAEAEAEB0B0B0B3B3B3B5B5B5B8B8B8BDBDBDC1C1C1C5C5C5C8C8C8CCCCCC +CFCFCFD2D2D2D5D5D5D7D7D7D9D9D9DADADADBDBDBDCDCDCDCDCDCDBDBDBDADADAD9D9D9D9D9D9 +DADADADBDBDBDCDCDCDFDFDFE6E6E6ECECECF3F3F3F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F0F0F0E5E5E5DCDCDCD9D9D9D8D8D8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF9E9E9E9A9A9A9A9A9A9D9D9DA0A0A0A2A2A2A3A3A3A4A4A4A5A5A5A5A5A5A5A5A5A4A4A4 +A5A5A5A7A7A7A9A9A9AAAAAAABABABABABABACACACAEAEAEB1B1B1B3B3B3B7B7B7BBBBBBBFBFBF +C3C3C3C7C7C7CACACACDCDCDD0D0D0D3D3D3D5D5D5D7D7D7D8D8D8D9D9D9DADADADADADADADADA +D9D9D9D7D7D7D7D7D7D8D8D8D9D9D9DBDBDBDEDEDEE5E5E5ECECECF2F2F2F8F8F8FDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F0F0F0E5E5E5DADADAD7D7D7D8D8D8FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF9E9E9E9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1A3A3A3A4A4A4A4A4A4 +A4A4A4A4A4A4A3A3A3A2A2A2A4A4A4A6A6A6A8A8A8A8A8A8A9A9A9AAAAAAADADADAFAFAFB1B1B1 +B5B5B5B9B9B9BDBDBDC1C1C1C5C5C5C8C8C8CBCBCBCECECED1D1D1D3D3D3D5D5D5D6D6D6D7D7D7 +D8D8D8D8D8D8D7D7D7D7D7D7D5D5D5D5D5D5D6D6D6D7D7D7D9D9D9DDDDDDE4E4E4EBEBEBF1F1F1 +F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8EFEFEFE3E3E3D8D8D8D5D5D5 +D6D6D6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9E9E9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1 +A2A2A2A3A3A3A4A4A4A4A4A4A3A3A3A3A3A3A2A2A2A2A2A2A3A3A3A5A5A5A6A6A6A6A6A6A8A8A8 +ABABABADADADB0B0B0B3B3B3B7B7B7BBBBBBBFBFBFC2C2C2C6C6C6C9C9C9CCCCCCCECECED0D0D0 +D2D2D2D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6DCDCDC +E2E2E2E9E9E9EFEFEFF5F5F5FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF6F6F6EDEDED +E1E1E1D6D6D6D3D3D3D5D5D5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A +9B9B9B9E9E9EA0A0A0A1A1A1A2A2A2A3A3A3A3A3A3A3A3A3A2A2A2A1A1A1A0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A6A6A6A9A9A9ABABABAEAEAEB0B0B0B4B4B4B8B8B8BCBCBCC0C0C0C3C3C3C6C6C6 +C9C9C9CBCBCBCDCDCDCFCFCFD1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D0D0D0D1D1D1D2D2D2 +D3D3D3D4D4D4DADADAE0E0E0E7E7E7EDEDEDF2F2F2F7F7F7FBFBFBFEFEFEFFFFFFFFFFFFFDFDFD +F9F9F9F3F3F3EAEAEADEDEDED4D4D4D1D1D1D3D3D3FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +9D9D9D9A9A9A9A9A9A9A9A9A9D9D9D9F9F9FA0A0A0A1A1A1A2A2A2A2A2A2A2A2A2A1A1A1A0A0A0 +9F9F9F9E9E9E9F9F9FA0A0A0A2A2A2A5A5A5A7A7A7A9A9A9ACACACAEAEAEB2B2B2B5B5B5B9B9B9 +BDBDBDC0C0C0C3C3C3C6C6C6C8C8C8CACACACCCCCCCDCDCDCECECECFCFCFCFCFCFCFCFCFCECECE +CDCDCDCFCFCFD0D0D0D1D1D1D2D2D2D7D7D7DEDEDEE4E4E4EAEAEAEFEFEFF4F4F4F8F8F8FAFAFA +FCFCFCFBFBFBF9F9F9F5F5F5EEEEEEE6E6E6DADADAD2D2D2CECECED1D1D1FEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9A9A9A9C9C9C9E9E9E9F9F9FA0A0A0A1A1A1A1A1A1 +A1A1A1A0A0A09F9F9F9E9E9E9D9D9D9C9C9C9E9E9EA0A0A0A3A3A3A5A5A5A7A7A7AAAAAAACACAC +AFAFAFB3B3B3B6B6B6B9B9B9BDBDBDC0C0C0C2C2C2C5C5C5C7C7C7C8C8C8CACACACBCBCBCBCBCB +CCCCCCCBCBCBCBCBCBCBCBCBCCCCCCCECECECFCFCFD0D0D0D4D4D4DBDBDBE0E0E0E6E6E6EBEBEB +F0F0F0F3F3F3F6F6F6F7F7F7F7F7F7F4F4F4F0F0F0EAEAEAE1E1E1D6D6D6CFCFCFCCCCCCCECECE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9E9E9E +9F9F9F9F9F9FA0A0A09F9F9F9F9F9F9E9E9E9D9D9D9C9C9C9B9B9B9B9B9B9E9E9EA1A1A1A3A3A3 +A5A5A5A8A8A8AAAAAAACACACAFAFAFB3B3B3B6B6B6B9B9B9BCBCBCBFBFBFC1C1C1C3C3C3C5C5C5 +C6C6C6C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9CACACACBCBCBCDCDCDCECECED1D1D1D7D7D7 +DDDDDDE2E2E2E7E7E7EBEBEBEFEFEFF1F1F1F2F2F2F1F1F1EFEFEFEAEAEAE4E4E4DBDBDBD0D0D0 +CCCCCCCACACACACACAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A +9C9C9C9E9E9EA1A1A1A3A3A3A6A6A6A8A8A8AAAAAAACACACAFAFAFB3B3B3B5B5B5B8B8B8BBBBBB +BDBDBDBFBFBFC1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C4C4C4C5C5C5C7C7C7C8C8C8C9C9C9CACACA +CBCBCBCECECED3D3D3D8D8D8DEDEDEE2E2E2E6E6E6E9E9E9EBEBEBECECECEBEBEBE8E8E8E4E4E4 +DDDDDDD5D5D5CCCCCCC9C9C9C7C7C7FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1A3A3A3A6A6A6A8A8A8AAAAAAACACACAFAFAF +B2B2B2B4B4B4B7B7B7B9B9B9BBBBBBBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C2C2C2C3C3C3C4C4C4 +C6C6C6C7C7C7C8C8C8C9C9C9CACACACFCFCFD4D4D4D9D9D9DDDDDDE0E0E0E3E3E3E5E5E5E5E5E5 +E4E4E4E2E2E2DDDDDDD7D7D7CECECEC9C9C9C6C6C6C4C4C4FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9D9D9D9F9F9FA1A1A1A4A4A4A6A6A6 +A8A8A8AAAAAAACACACAEAEAEB0B0B0B3B3B3B5B5B5B7B7B7B8B8B8BABABABBBBBBBCBCBCBEBEBE +BFBFBFC1C1C1C2C2C2C3C3C3C4C4C4C6C6C6C7C7C7C8C8C8CACACACFCFCFD3D3D3D7D7D7DADADA +DDDDDDDEDEDEDEDEDEDDDDDDDADADAD6D6D6CFCFCFC8C8C8C6C6C6C3C3C3C0C0C0FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9D9D9D +9F9F9FA1A1A1A3A3A3A6A6A6A8A8A8AAAAAAACACACAEAEAEB0B0B0B1B1B1B3B3B3B5B5B5B7B7B7 +B8B8B8BABABABBBBBBBDBDBDBEBEBEBFBFBFC1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6CACACA +CECECED1D1D1D4D4D4D6D6D6D7D7D7D7D7D7D6D6D6D3D3D3CECECEC8C8C8C5C5C5C2C2C2BFBFBF +BBBBBBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9D9D9D9F9F9FA1A1A1A3A3A3A5A5A5A7A7A7A9A9A9ABABABADADADAFAFAF +B1B1B1B3B3B3B4B4B4B6B6B6B7B7B7B9B9B9BABABABCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C2C2C2 +C2C2C2C3C3C3C5C5C5C8C8C8CBCBCBCECECECFCFCFD0D0D0D0D0D0CECECECBCBCBC6C6C6C3C3C3 +C1C1C1BFBFBFBABABAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +9E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9D9D9D9F9F9FA1A1A1A3A3A3A5A5A5A7A7A7 +A9A9A9ABABABADADADAEAEAEB0B0B0B2B2B2B3B3B3B5B5B5B6B6B6B8B8B8B9B9B9BABABABCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C5C5C5C7C7C7C8C8C8C9C9C9C8C8C8C6C6C6 +C3C3C3C1C1C1C0C0C0BEBEBEBBBBBBB6B6B6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF9C9C9C9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9C9C9C +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9E9E9E +A1A1A1A3A3A3A5A5A5A6A6A6A8A8A8AAAAAAACACACAEAEAEAFAFAFB1B1B1B2B2B2B4B4B4B5B5B5 +B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C1C1C1C0C0C0BFBFBFBEBEBEBCBCBCBABABAB6B6B6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9A9A9A9A9A9A9A9A9A9C9C9C9D9D9D +9D9D9D9E9E9E9D9D9D9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9C9C9C9F9F9FA1A1A1A4A4A4A6A6A6A8A8A8A9A9A9ABABABACACACADADADAEAEAE +B0B0B0B1B1B1B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBCBCBC +BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBABABAB8B8B8B6B6B6B1B1B1FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4A4A49D9D9D9A9A9A +9A9A9A9B9B9B9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9E9E9EA1A1A1A3A3A3A5A5A5A7A7A7A9A9A9AAAAAA +ABABABACACACADADADADADADAEAEAEB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7 +B8B8B8B9B9B9BABABABBBBBBBCBCBCBBBBBBBABABABABABAB9B9B9B8B8B8B7B7B7B4B4B4B1B1B1 +A9A9A9FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFA3A3A39C9C9C9A9A9A9B9B9B9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9C9C9C9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA2A2A2A4A4A4 +A6A6A6A8A8A8AAAAAAABABABACACACACACACADADADADADADADADADAEAEAEB0B0B0B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B6B6B6B8B8B8BABABABBBBBBBBBBBBBABABAB9B9B9B6B6B6B5B5B5B4B4B4 +B2B2B2B0B0B0ACACACFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1A1A19B9B9B9A9A9A9C9C9C9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0 +A0A0A0A0A0A0A3A3A3A5A5A5A7A7A7A8A8A8AAAAAAABABABABABABACACACACACACABABABABABAB +ADADADAEAEAEAFAFAFB0B0B0B1B1B1B3B3B3B5B5B5B7B7B7B8B8B8B9B9B9B9B9B9B8B8B8B6B6B6 +B3B3B3B2B2B2B0B0B0AEAEAEAAAAAAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A6A69E9E9E9B9B9B9B9B9B9C9C9C +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9B9B9B9C9C9C9E9E9E9F9F9F +A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A5A5A5A6A6A6A8A8A8A9A9A9AAAAAAAAAAAA +AAAAAAAAAAAAA9A9A9AAAAAAABABABACACACADADADAFAFAFB1B1B1B3B3B3B5B5B5B6B6B6B7B7B7 +B6B6B6B5B5B5B2B2B2AFAFAFADADADACACACA9A9A9A8A8A8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5A5A5 +9E9E9E9A9A9A9B9B9B9D9D9D9D9D9D9E9E9E9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9C9C9C +9D9D9D9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A6A6A6 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A8A8A8A9A9A9AAAAAAADADADAFAFAFB1B1B1 +B3B3B3B3B3B3B3B3B3B2B2B2B0B0B0ADADADAAAAAAA9A9A9A7A7A7A8A8A8FEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFA4A4A49D9D9D9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B +9A9A9A9B9B9B9C9C9C9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A5A5A5A5A5A5A4A4A4A5A5A5A5A5A5A8A8A8 +AAAAAAACACACAEAEAEAFAFAFAFAFAFAFAFAFAEAEAEABABABA8A8A8A6A6A6A6A6A6A7A7A7FEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4A4A49C9C9C9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9B9B9B9A9A9A9A9A9A9B9B9B9C9C9C9E9E9E9F9F9FA1A1A1A2A2A2A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1 +A1A1A1A3A3A3A5A5A5A7A7A7A9A9A9AAAAAAABABABABABABAAAAAAA8A8A8A5A5A5A3A3A3A3A3A3 +A5A5A5FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3A3A39C9C9C +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9E9E9E9F9F9FA1A1A1A2A2A2 +A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A3A3A3A2A2A2A1A1A1A0A0A0 +9F9F9F9E9E9E9E9E9E9E9E9E9F9F9FA1A1A1A3A3A3A4A4A4A5A5A5A6A6A6A5A5A5A4A4A4A1A1A1 +9F9F9FA0A0A0A2A2A2FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFA2A2A29B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9D9D9D +9F9F9FA0A0A0A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A3A3A3 +A2A2A2A1A1A19F9F9F9E9E9E9C9C9C9B9B9B9A9A9A9B9B9B9D9D9D9E9E9E9F9F9FA0A0A0A0A0A0 +9F9F9F9D9D9D9B9B9B9D9D9DA2A2A2FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1A1A19B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9E9E9EA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A4A4A4 +A4A4A4A3A3A3A2A2A2A1A1A1A0A0A09F9F9F9D9D9D9C9C9C9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9B9B9B9B9B9B9A9A9A9B9B9B9E9E9EA2A2A2FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1A1A19A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9D9D9D9E9E9EA0A0A0A1A1A1A2A2A2A3A3A3A3A3A3 +A3A3A3A4A4A4A3A3A3A3A3A3A2A2A2A1A1A1A0A0A09F9F9F9E9E9E9C9C9C9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9E9E9EA3A3A3FEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFA0A0A09C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9E9E9E9F9F9F +A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A0A0A09F9F9F9E9E9E9C9C9C9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9CA0A0A0A4A4A4FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9D9D9D +9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9D9D9DA1A1A1FEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D9D9D9C9C9C9C9C9C +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9C9C9C +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9E9E9E +A2A2A2FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF9D9D9D9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C +9D9D9DFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9D9D9D9D9D9D9D9D9D9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9C9C9C9C9C9C +9C9C9C9C9C9CFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFA1A1A1A0A0A09F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D +9C9C9CFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/basic2final.png b/doc/img/basic2final.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a2ebdfbc883f6f30fe75f453cb067a61769a40 GIT binary patch literal 9301 zcmdUVXIqm^6KGHn6qT-^)F6bQ(tDK-flxw;h%^ZxQX*A4JctO2Kp@mmq>D5G0SP2g zfzX2p(u>l2ktQX{$$NgqIs0LE?`vo0nw`FLZ-Tk0!L=*5t^fdlYet5;FaUrqfi^#4 zxDt zx(Cy{b+Z6KwAL44$(-1fSK3!7a1w|sJ; zA$g98*B%-(W$*N<*4UvSdZQPjas8wQBZ&CoJ`7y8`u(D4fw`lq|6^Bs>rhX#NFDh0 zKn4k9gG?DqU%#6#Y8slTE55&{qcDnof=bO1(P8q_!IM>>Xc^3N54iE zhN3MnFok4SD}TuF~0HwtRmrPFu@Rxl;VFVVGq)`E^mVacIce zO{?EV1VLQey#s5}aodJ<2k*7jgIB-!i+X!MHjtiG8G@Kkv{_G`S(${sOEKxO{?pP^ zkq;Z)TwcC0xDRzS0z=A&-@SWh{mZu2oJrd;wh(8dl9sRRKiVarc!D=8dHjOj1t#)$ zCZZ(bns(iOXB2`!(a^v*Oz%HEbcdcCc#w{aWVqL0+w+pA)58(PpKkk6Opl z)_o#NIVMCMes^)_a)|J8RWws+6;iSqziHAM%-M89P(SX>iy8b1ox7^qWny~N80H|b zHf!elA7v-3m7OcwE~%zBUvXXg8>(jnIo;?EBc$4zaop~KtFcwHS|I0Fm zu2_68;3DF>lQUHq6ltby#ot7yv*7NTtu(1Rl+XJC*qXleh3f-fnsbNEi8t{GRK6~{N<9R zpCtN{cwDqt%Z9U0Jq`z;1Bu|$r@iQ&^a(FV$NcyV3Huvyg*bIc1(7HlBPiv$H5q0N z%Sx`!WZ@LnFNt;B-N&auTw6Rysy#JJ$FrGAzK=KF?$EEr8kfYx6dXqg@wk}E3Gch;EOV6KRd_flf9s zRrdN(?q{F-;GuFiOm&1)d!&2RUXCn_ca};`jAdcOjH+bSs+ZDIiHqAvEFYA*-!FWu z-im^mX1U8s687$v59Fi-c5nFDk|&Wj)lY0d#@OCIkX!!V$=zElb5Ri2nDd%yj7F$O z4=!rD!?J&8>Le1t%~g|>Tqve@jjQA@4gvwH1U%Uy*P9VQ)@NGC097NJX#L=&`!^QRmyiCKrcP5=iK~m#Af~;)4k%a}HZB_|}0*{zGQn|qU|7}H5l8}^VTah*CYPq6L775X}KES>&~*WePPKM5>N3a!Xn3&o+4u1x+7?~mz0+2=l)Eo# z*1BwBs5LHM-w({yw09OP35iNrd2_)0U*ASuiX0@|H#Z6`x1w3=VO8J z0Szhnt*?9AQv*ms-B!_Q&ozVo93K9MTFwO!6P5M%6?REg!dEmO;qeb-glv6NuKzHA1@uEJ3nnG(yiM4*Q2Ubf$nUQGi3Qtl5dq% z?UoqdFfy5I)-R-&SeKMUT3?5h-dSm@txdi;_+Us!&9;MkXKihWu7i7HeZ8ip#tPy~ zO1N}&;-HQo#i{biuf+$bP~;^Z>879_S-z&|I|lUwM$9Ir89u)yB?0U0<fXc zmKxn^ANC$rZQGbs@Y((Tarzp064}>z(_uV#{D5PS@Ta3V>MXC7-@7qC9bDV`z-oZ^ zH40`DmCNG}>EXNi=XXce^xyT~q_-r#sKs*Av_`K5Wd5cS^-cS7LFj1!Y0ggvGUuovHc~*?t;)tmS||N9 zYafZmRqA5}dXr`@^G)5Sn=)NylqP00_q4AYCPc@}toe==_>OBidw%iQ-|W5YsJiiG zu}S`p3Kz;xJi})gl$ip1c6Q`F;q?g8lePF*<$802Q9Q-V&;G^6Xthe>W}}ijWau`s zD$&b~`w|4@;0dReHl0CB5Z&?K_A^DMYJ$Gquc(!jcK1h00tY*y%uUs^RY@3~^z5VN zC~8-udJMaK+OzYmyo+Y(HfpT`$dEl$fh2j0GB!;f*k4~aQwjaPfQiF?Vq6koaMh;|2phzsbk?^X-|l zec&S_%wQEZ((jG*v(S?scZb{$G)$8N76*_|jbDttZkTa2;wzm>b zgr``Ro-Po};^IOh{smVxGn{UzVH`Fgxt0t4&w06)%dI%eI2Gda@9W;dK5~DX0{gH3 zY#K`VwQz64H$k?H)1?ZBb2*Q_%vDi>PW4@8G8n8KX()*0gou+u!VKIE49fFEJZibF z1TLZsl&+685EIa72xKC2(4QE3cG`qQPW>Y22N4p)sI%&Gc>m4~<9yZQQQ~Dr$B3zy z@Ed9lg=XxD`GVs|>!~+M_>=xUM#sJCvznB`MTuia>Nf)U;3Co>P4CLHFRP@f!4IUy z<|U3aQE8Zir)B2*oWh{$;lt5X&Ab;~?(5fE=P?9q%)ws&HM8^W88zRo%a0svhk}+* zICwm%Q+Al_-;qt(H=e#1}--xJ87bYz}EhKqC!gtaiL>@Y-ZAR`%$}`?wZ~MpI={> z77cAqASI{o9z+#Y8Z9btxbVfyHOo&$sXV6MK{h#)_2-UD(ax-=Tt(&rE~M@HpJofIu6r&VXHb-`8?+k&0gpYu5aH{<177#@yu93})2l z#zmG~+2v2u#8LiqK1E;crXTn}OH|4U?rvBq5M07p|FFhLC^p}+W5$W>GDlcIaS3>n zUIABq?8)C>zL?p2ZQ~bjs9bdTsua_19#9qDptoDY;$SNr+f6v@A_THLlAEZN+2wkL zCNB{9YDrlSsThHKp=<5cCy1?)30crzZFt|uV~y>!nzXPLf)AC_F4^{1({n8R-?l0g z54`f1p@Q4r;FCaaDzHcj4TV-?J)}mbF6!!fQNW<>0HIPVE@o;=+19uTV-T0L`$`Oht{v!SlK3Z81>5~YbPI=voWelxys zv>I$yJAJpK(Fj#Bxh&NFDR?|tTG7JKFE;y{b4Ajs zBSd9_P|x|D<**}oS!H_0SIVKsJhbphjpZL1Snqx;;$F7jrMo$saGu>ag#wpSzigCE zuT~lhy?j3odeXsdc1H=6F^kmvH9N`y$;geQ+*fpze~S#6KSG{2W%ClB(w`MhGYL7^ z?=9!ZdnRd8{+W~&IZs-3`I@W0Yhkk&ekDCxJWXBA3V4h>{cLiat6S5%=Lc+*=$6>1 z3~8?wPq^F}&yfl1U0%-k`0=BcYgtiIjC2k9Z<}^ad2@OB>pDKD7?B$_-*E>dq-$xp z|HW56+eTT7aI^A0itXda-4x5^_aRv1DJJT;Ed8!6mu8l zLuF-UYePer)657})2CW~y~IwrP8|Au=U?y=$1&B%zB@R3jGTLY&gX>DY#`C{bfEwr=yI9E*foJN<05+~r=`(W{=3PZw;;>bh~^G%fA+AY z_uimbR&A!SKr^L3vF`aH%bN{@%ZX+=a&#Qb#9jw73-D|FE9a-nr=$W+Y7eMj`g6#} z(bm=}`z@DN?=w*Z2Y?O53cRZ0Z<|jf61(`rs!9X>!@?NnJxl~KfcQ6oX%RUiAuD;u zzhAN_$RpQRH-C-^+-@J3Vr&Upp>vM5FWC_7^5yN49t)*xx@%$vR|w}zk}XM=cB)D5 zokLzTaCrH!2mNqsR-#Jk+lm-WyMxvocUqfv|VA_KXh2s4@WHB2XfLO z*ZfXyk5{KaKh-wucp~}tA_&dRnbH{pZX5~pkaBgF33`BUtb-DugRTBDV4ms!etKPq zR?=3Wd%!D%0SG3gKmn`<-J*baVVZLMKMVGvO3}&89CGdOE^$16njOGhh*Q99sy)Jo zw`^b&biW7McljQ`NiCF*3l)Whbjl2@0{5=!botU$Q9sSJ)V(0W<~7O`_>!fAyMe%t zLi?Q_taXE<>pFG0|Kflclfna2fAg6BQ-xhEdiKBXFQdDO%f&tOkQ5zWmlB$$jCK3 z*A#r%!D05C6xg=zoWoP$p@K=hNZa~TX;iCBw(mFsTuRo?-4|r~dlIgaH`}no?j&Gc zGf{#LJ>Tn6UV(r)?v~xEZ|J$Ym*~8%O9~NBf07uI@2+BgdYja;5`wjFT$u%Z#eckK z;18)V5Qwl+OyG7YYxfpN9A^AYV-a!J%qRZ`eQtz#t-07{_A%3^9b| z!;}Flog*)RxGB>=#?WyU(q;mKXh|&VNqA(y92)>F-tZ>@_H1vyGn9lfWtEMWO#>Oj z6S$2Yt%1<69JmmWW+oXMg>$O}b%2<7`Ty`f`Yd);XDl#Kvd2mhdzVugNs2{D)awpO z@MVtJ2a&aP7qK-fA+&n`@hANgz6%d5CKA_5&?;FU9*&H&xn$~{vSKLuS4-Tb7__9$ zJueFd#u&lXjSb`S;joEDUI6hi55m$z3Y9L5T`P8X znylbld$1NwyO}~*kK6h^ z*)rMT;(+Z{EckCfmRzzSEIZn;04^AW!{G~$7y!j0+tBImXp%<49hn<%ug=Hyipo|^ z{c8L!br3OkOcrE{5oBtYl6n2Uu`$qWhc6ljui7Xx9O}4KU;dIMU8^d1?Mq>XMdzio z`pK1-8Kzdb$B4KT)K4SL+YnH+1=|MJW2i{)Xym_c5%X>p7oV(E9=xbb@&yiy69$+?&Ja!!p{>(7k2+biMKiO1{+T*GKE8%5>p= z5}oq7oBaFcdc*JUml)0<_ys6SKyPqsz)wqw0TDT9Zc9xi`e!FvLvftb60m!@^M#2b zr(51x*~Mh=aDC))zVvx1HVlfS?{(S*E(P5vwB8DpLiwniJcNx`gOcq z>%ID}P_N&ATK;6mq16>Wt3pvXtPxY2eJLA1J(4%sqj8SPzo4k6+;W(4rv^q~^>+8} zeVAg!{9`(swrR+ku|X3=_WsA2LkiuI$lgHNPnH&*#%u#bPbqk-RwYqRH4B*Fc3iT# z-I~A0$-{D8hrmjtaS}-5Q5a&U;|o8*kYRMna5k&uabd(Z?u&GIc+P(nq&tpXbVR^t2m zAs(qvA><}C!8}gh)OsBlRE=;m)PH1*0)2)jlwhulp2>iZ-mxD%X^rXvY;w$FphQEW zWtk4*Qb17n_`(-0_-BFUmG>JR(l3(g-D5X?9opL+;8^a6#$Qa#m+2P0H6Q91bmDT! zGDtEZK0s;$Rrm(J)5!R=U!}1#sa$Jk=*hb1SsCoq&-4QZpl=+4NTc*)lryRjuvBq} zA2O*>HqopAHqHu6_qyDgl*~8IxIz!B?1{_u!5GJD?JCh0a=$y0zO+y&XTlBiakug+ z=53KjJtA&4B^sBL?2g4Gah!BqwLwmVlm(^J#1>kJF?-)Ic=)TQ6uD1J(gGFog69+J zW(okVC2H%Ux5jTZv;3N9S8pA*>Ya`kNrfUxVI^~jW@2C=!cn+$1e(8+9rSN|jstKO zTi+vEpHw`d%w;PoW2;t=-FBWjmXv}9q(MFgL-Hu;5&L5HLD>koz_gvSGFSZ6@rAE= zq0tFBtHG!L8i9E`KN%2vNqEsX6R!ydbhiEj8-?tn7LusFVzvkUvd`E5X(@J2_oAI? zoW07m&h5L`UR`VZ`k-V2asAwPV;<_p{eihukjaEujVXqfvMTMEM9Z+#V*Z7Txio<5o$Wvlwzag$gJV>QRNNcTS$7`avm?1u!x_171wDtM z+@T`7Wq{P9UO^0dLaZ{MZhEewJDNEBp37#@P=ISC>F&l2Gn8R{w#-2OJ~&p4^GfRr zNx-H{uak*^u5re_JvFl%wTlCB`H>!I8+Funum>^y`bIalzSQ17TXi^_Zbl^YF*|jJ z$y}cnJmR0y0wI29%3pY(7P0_lS9kkkxIoJ|WE-YQWj_UF^N^}p61an(_2aK;0=-HM zc(;&R1OU*}{qHTnBOprZ#c5fd{hiE9t-VTj`5lYDB^_Jz$isqr)MK}_ay7Kwn-~H5 z@QD$q?m@S3a&UgRS?kiMH6t+4a`FA`YeBbTx-aAysSog9%wgz1M-D>?oArIYu8bGZ zD8F7&VCcU;uMc}XgKQCs<FA&z#_~Q9 zZL7dG)Xt(w`>(b5l{pMk)I&Riu+Os5X1n)M8m8AX%QUUUsV^PwVC&F&od)lyfC?P< z`7x)DozZdSxW;>RvO2(KGY0buTHeEZx9xPjvd@P=hep-+(`Z>Oe62Qk`!kFBsul8< z0;azL4e-!EWoDi(y}$&-WuP^Oe5fytTt zpM*UhDz0Yvd~ll2-C+J3x$R$YcO!yDryp;NuKw~9A1Eu#w@qHCX<5#} zIZ4u}#@)fhul~o#Z$28)?%nP_Y;N{J)#j-bU19frYz@IHW!3PA`y{;&)10m6HA8F8rcC*>aa z0M$%EMiP4b_amphC?0$U!%0@}Jp^G9{(DD&(lW@vC(&Hxl%&vpVLd?;K!}OKo`WD7 zNKR5r(_{Y7$NeLb)~`o*tFMfv@iC~Mo{PdoLogU}Wn~J2=`cfx_Gm)Z>0wf$wsaxr z{zS}}@{?n1n#}4_1%bwiF@Zelyy^DYxA!&fap{9U7(d+zkN$aBzWume*IM_V`?1LN z;`^T>#ITib2|J84OWjP$8M7)KZxNgz&CLX#Plo0{wuX~05Q=>t@2`&_VMdj#MM^jt zL=6c}H1#>~=~U<^iZ2`Dh+f_Qxi;{9xZSDm{`>?h+xKp-6PJ>o20|C~IL(2&;(1Dw z4rsButpEHz5{9Qi-w~!FqN7iow}yx>ZZCGI5sHy=`n*rtukqnI;03V?KC?m6l$~A+ zUmcRf0#I+?t#tU1LEDomuiN{bDRq;2LkXFnobB_i;S-@uWz8yMDv0-$*QE_TRAt&7 ze6`r-dEt&dU6=MWQu_LKC;Oe}&8g}8nq089=$rfNl`4c)tC6%1NjsjwJD&WR%527M z{FfDt%kug)W#U8Wgzs)==WXXokSW$V`QS3c_g? zr|Ea2qDhRR$EqJ`0bQWhyhd9nBXauCjekwVnK8Y24(5u(!8&g5!u!jyabvwVJpb-;FFq+g9;s{^GrSkEY+8T4 zwbx8cU44R%nmU`mXi|@rot=FZEck zmcqUsi6=R);HIt;oAwwq*zg?fG6kM(xg||0ZWdfoJopSZPM9@z`_E~p1qn}BSQwc+ ztP46t97FFiN$vZ-YfT0<^t_gkka(k=gJM_fxS)Y!luV8zyqoKKFr%bO6Gr*TnGkXK zZu99&+~6|?_~9WcFCs+C$S9prY&VfgMCt{Ddu@*5LQ$=@rvlKO^G2T~6oP#ERLSe* zRD?E~YM1k(MA772s;YL>Uuz}~LxdbuI2Gg-=XOqxA;K3UE#Pln1N}s5Qh3^|WL1d? zS9FPv%_xM*5mu2`pTN<^u)A>1RT0FZ?OopBLKJ&75}`p{7B;-xZ-WY$f{@4D&Z#9{ z4f_-iN<8Iu{Yvyyxc6*IF(o%fL+RBAD5Y`Pi#6r%sHTODAas}Z^6dDER%WHY+H&prC*i;#q3>P*&%4wcjvZrn4guRW{S^eXS1(x3{(V>r@&0 zI4-w&Cd-+Zqf-Z)lD!kd)Ag4*+?y;q$rf^tBK9njE%nSo8@=!V1!#xmpR?up${Va9 zStj}!6>b-u+xYv50=X|79XE6q`%@*+nk--kpmcNo1eM!}x_StXT=b%2|H07fK}XlVY{}+MZzTDq|y3QR7bE`?L@HQ?~2r?>Yp+x?Xzxy*VSzP-dF{ z>hPAD*FJ?qk4mb`oRr;gx6R{>4wO(7l~C#9Y4?*s@9X0&n+|4l#IN>q1n4v-U2ue7 zpm+!f2tFcgPDFaTf@Q%s_$gm~mDt${s9F_W8BxSC;}I)k>~lCo-`@b&NQMKD^3lye`$2nk*6T ztX$teV>!jr_qp+Ue_6g$%nx0T!F;4SOr7NmN-*IzPsCv ztzsel+99fd`g6!eJ|#f4uLNOrveHOM;b5jBa-#2tBn+eEP3MCbB(lhpfYBALs0|~J z4SSaNDFg8v2Q3fJB@FHec_Hj7r5s_Mot^ndN2`eVBTNq}?iX@u;Ikh+F?k_o^2y(l z>a0$?LSF?P^@jNjIjT!srsYItGsFbi7%UR)nKU_fsnBGP?`DqryCauU^<-@mH7wsi zb_2#ip&6@EgJ$P$ALWhuh0Vw<M19zU-wyWp{Z^h)MsaVn@7tPck>IL|Z3mpXie4i=l=GeR8@b~3xsP%5|O5E8Tu zwSlf2@4C^46C1b-c`!YHz8M=8KDLR7gfw?PB)6_Ub~0DD;|gYol-}~`lKTq7d&gc?a7#V4tWWCwlExz!AMwM9 zEi-p_chfmK|GKzCQDCAlfZ=#591W%hDl|Zv+dqJwtF8dH zx_UqVw#qUj(^QYdpN7bOxviODE>1Vg`?wk2;qzx%Q9&U-Q$A7}2@EMq(45lcn0$h9 zsqQF-Ydg$#ki|sh<>ebU`lBBi86sTpF80RrWrAmEgH5Z!r0;{cA>Eyk^y|%`MAn!v zeHRTmKgQ?Jk?|>Ub|;HQiEGS-N4r;6{EoLr(qA)n@@aW$%IdaPI@Mr5=aMmE zWx&{R1BR&*vY3aY6Rg_vV!M$n*mNsLa~XGgbJMj2bfFK>w3)eiRR~p?Q7bQKKiJ6c zJoRs`F>!E46y)Xe7Rr%mA|u2lQY^I~t^EA_=;Y+WajG)CIz|A7@FdC3kOnIdkUwWK zBv3s(JOmLi7k!aLV`YzGkt7LabV;qF%u9wuPcJT7<&gJPQy&91FX>S8XkaZ|G&Cj@ zrp)q`;u5;5FnFINd~stR9np*T==GM z(eh#4l^c`06*9qr-zJcB;nI+cVu>SHA&&9BTc#{2DOrhlCere`d##!xvai&tuGwVr zi;^$yXC%qNJ>=7_g#~X>W8-B#?m}Vsl|@dT1zn7{XH%?6`@pX7pl9OYSvQ7rB;qME zxq}k-5-;Kzp4uDHV;uTXMm(=Qv3Xt?t;h!I3Yk3ixT=8~>!)L3XgJiVpO8lt-$oGK z9UaLjGK44ZcuHIjAN%DM@vq1*X}(ZXNeMxVB6J=J9Xmsxq`HI+b@agn*ad16%NOhV6ogqKbi<>{lcnK ziJpL3whv&cRIKcioS~6)zW3jZ7svDSy>qjF*%0q^O2w zKR=7J23oi{#LW0RAU3IP3rg$?FQ zM-oU`vIfoKii^I4rogcKBVM8XdC#>4Re03=boHB9UWo%}_yPb2{mu(JDYa;D&P8o0JIfaO}J*U|ljmC#Pa&E3ob{3( zfR27uJd3aInK#9(e~m{%;#TMP_^<>O@BB!8f14luDhx6Kz$I!YhE^hO`)B4`8jU@Z z=jn*utpMt$*w|-ee>|5XgQjEYWgY}Q&!0=Yb?H%I@CmF3jW%F||3}(OR!X=JfKRMf zUOw-#cFw?JgHDCB6)c(wj$wA-O1gu6);2c&bLtHv{s5hVp(X3WPg$EeI5Hw~fA#Cl zC{L>5dSCJtc%$Sp>%mk}8HEXioC!zM%S6?;x$aGDsO3xh?5(YhUxagX6f2k8YL`@o zqvTv)UEvH24kAEpx7+D{<5c*s!FZmJv$>LFo|cot&iigWT5F%^zU;XZVc3uROqk3a z>?Nk|V4Od0pe~jMafg{@2s8t6J(bgVn5XS|lXu4eW|esal+ZeqYXDP}lMH)bE}k*6 zLZ@o^LQYPOln)H^V=%S3)zar!l+t)?mqAO6oQQImt)@*tj|fUQ)GF1WgzihV%Hja% z*idrcJ*et*6f=y8fNrS${+|5=)320;)+_s!&kcC9%bP%fubi%R`xOa&`E_sxcHAvN zvCtyR^4-;ejyOfr+h3J4ZmlB3qQ04eA3kRJJ=}WB%d$`ZoT@bP?guoM5r3JSAMnK$ z+s*5Xi}XkE4PN9VI+i0B@tkx%`nL3%eewX)DWhiLXb(E4r>74{=dpE(eps>R4S0AV z@@}z-%L&|&U+6zAL_AJc>F3Q^1O#r8YR~lqG_cTe!ld&(Ra_+iGWm>4wXgi!CnP-l zkHRJFJwK&X_PTrPlJRBwt9Q$7dvkeGSmtJC>vL06Q)s59ri4_uGUN9h9UU^yUi)US z(FrQNtGl~CdCVQLVtp#5uRl-VFYyylcgvQ55F)dQ70{S323jM2RT>>wH|U$z&6(8A z;gOSj2J&i-XR4=%hT+B!CWv1M4mea* zXqPo&_wF#a=4S32%0Qh-@Bch6^`(3Mi&}vX*I!eaQ8n(rr7%@in#z~agLA=6!LVmQ z3emh7{?H+-)2rU@9`a0l3cp|s&X3OO$%rG$;=J!IR-(b1KEels?Z!?mh%K_K?w`_; zXe7ceZNvRVwW%~vql(eHE2I`-qlA<{pnhZ9^CBtQ&GD?DNKVdiU_fZ z#s_fSvTC+b+(9}{!a;FEWcQHu73K>?G;yROm-B>p9xLQAWpRnswKdbiuS=Fx>vRM3 zWAY4R2iPXaA67ihI}r8HEg16aV=2xd?7S6qU0rnO>)6;>4YBGDKd1^Jg5ttBEf(=3 zn$*PO`YGnJ-)beAu@b@9&9bh$k8u);iSi79McOhIzKqQ>F4L~?qFa9LcBrdnz9FHx zJnkg$MyBm0(=aRTam!XHbaar__6iH7<;EoUa0d8$|Nsz1HM(m z&&NvZz#Lbcs5u^;XEwuCLt5pJdMm2v+5r9CJUV)T^eS6S9V5{)C$&ub%+^rDt;&Ps(O%MF{k(`Qp!35%Lv zTDop3xV+(mD(q&;1!D0Am;+&aj2gP>u0x{e9-)~LWFebKU0~KUM67Bc!>a*n{EI8< zaZu5SY}T+ZzKF6hINbYRmf;Cv&OMNSxW(EO2Xo#c*_d#WNou6??Ug4dkkkg+h0AMD zamBx+p{cxG59iocI}XNy(Df^{(Q$E?`TQO}9-vWwjNy5|tw;}l1#kvw?$t9>0gAyB zlXIcCAJR01^E0xA1k!mlk&I6QV@9ENV-CDwO@|>%XFffmJe0R0p0-p&M>K(=3*tPU z>qA(K9zWy&?YWr3+h&m#w!z4ohf$Y4pCHHb+N_naMqp1=imk7X@e{eMS~I~C(vYv6?L?og z(KUSwE*0~_GebpZF;-s{j;<#vI%H5da>$;Jh=r1}-4Y35G?}SC3uh6RPpFX>6i>H7 zVIY)g{`!t+vnOgI9UY<9nT=NtjdH54EpFt-R)}FBgh_c{P=)y#C3LODPYZu}Ii#XllykDjZ77bgI~; z|1|wF_EvgSF$j8;Q~2)y6^{j)2Yl&-;iGsxiwl87m9?~VaOwcASE@G;bh!i6MtSn! zC4`0v_@FjjPE$+_-Uxss;)9Turi_$w`QXsd-5D4d%3q)_dCEA3xEF#1tI|lCuK43V zcY8$@65`^5>Z6lzeEQQV0Q&w!BJy0EAd}=fk=UY8i+J_)_VxL;0$h0p!!6_BniX=@T=>0dh9>U zS!#bkPC)+gt1)VI!)kFqSxzI+MINHut8rNPN;EzT1ObkJZNLXY2P4p!RlB^2em`l% z>b;Ay^3Nd9`Qrg>e7KlzcuNj++-m)b2>puS#>PfGeEi(VkPsV6e0==3oMifYS9fGd zmI7jUr<;TE0RRM1Vu+FnxLEv9;ApRZgMF4RBpv~>hXJ?Z{pDv&NJ_6%5|}!kfB2VxgE}mVPIgay!JeojKM#Zq&wt#J5$~O zzEL|_@F)2~e;Ra8Kot(kwactdmfPPRFE*R!_Sk+R%Si!DrqO3BQO61e6?NwE&q-%& zdO9nrcap7@TG=!@I=ZNnQ}qSd&O03scL#I8FKFdpg8xk6+E5Dbjnk;mZ|HdS>Xma) zP>>Ywk^71dUxIxgTf)~CWJN|`UHEPEMGF0}`j5lfN&@JtRaO-SjSt3n$c#)(*8M;^SSgHfU-$U|=7QN9 z&#lCKfbATbtVgpt84QTTFm&ypG$5e`eYKt3=I(bc)~oyC1TK%^HK20y1qILFM?VuW z(*T-1yHQI518<)*Wh-F5J}Ozlq1;a+3*q#nMd$U~%1?D&qS%3qbhGxEdRed0amlzP z)bIY_jRCMJE}r%~i-TT}4yf>7EGQQ+rD|O^ze?SjJc@?c0>0?lT*dmgd0D1p(Tyv< ze-K`p_ySL3O}k7>F{-QMdfEHkbg`PbJkTqfp$*(RFdZ_pL^IHYfwq$;hglVIZoj1LikByCu=*N$L*#f?e zHh#`Ba~wgW(jLg?9sy#`E4eWWENDboP6<1F=aa}TRHhZJx`7h2sffp ze_}r~Xms=edoCXPt(8u>t}{$Ppc!0fFq^3k-Ea90bfDXB{M%8y);}|vWt{C^%;9_d zYgwI6lshN53qWfR2ZRSjokh`F>XQ_bJfGE%lsQ{l+mohzB>-b7+`yI`hV41Q04Vkh?FB*X6D*QNN=Ng2%qA;L1PQ+Er$lj-I~8W;~B3&-JU8 z1^L9K{4a35_{v4^Q-u&8hB-QW)a*Q2q2-m8mG?sl%yOV8UL*@M^j6mj8*FZJKsG?5 zSqGh6DBSp!#mU|@=yv(o-8V3V3a|>@dK)zw%Vc*^+8m>nW^IJA{VT7P-$x6tpKDt; zZ}o%m#FK=WfCK&Kyxv0$dbZC96`X~zt^i(U(8%8L=eV`Htxfp9FeH>R(CpS=!?nKh zdD4oCKSqF~kyp_ZE5^m0&X|$~T8DzNqT-ZnbC$i+86F$uRn|KQAO@*U1Y~g>dPxzD+6ufB~iOnpk<#9x*iHL}R zP#6cJ%D73*&VD=t(hJ|WEk1kN#yubZ^Z@5VaiD)9wjg3i>#YkGQQIV9hgvrHYx)k3&*TnQ< z{hxyyUvJKU`|jPlo7-E<9DX7-qD`BH6k<_RK>R$^JW0vP1>WS3*FO|-DR^a?raVB) zQqKEW>2vlE0UJ%*!lU#;LKJ2$3j3)}VtAG6U(HbAIqC$Gk<$6ehBD{p=O(=A?=%dE z=T%`X()#Fqp-&a>!H`>izVZP8#%w0U%38Q(-CS5(ja0NfFjdRT*@D$yTtFFofPi9# zzJd98czOnH@9eC^6#L|;*G|N!n#@V$k5ARl*-zY4sxWV51g;tk%PdB&%b-ENrqBHexX{R@+-wB?HDe#g@HSc z9AOhzWRnxsPU~-59GbSkfBjj+?LB&YY#|)pdyZ!*$rpZ}_zeDOqbWHnaKKZ3w(X#PJeg6n?Fg5&;9RuI2INb>%lW7Lp@*eJ<3sRsLs+tjOsrt*ao^YrCCtZtpHEYwZJN z1SmRwI0Ftx;Rf(&wA8pGbu2v=stGLL#9Hc$ukb)tNFER5%eR<@KjF=ihc&YOdG)c| zvP^9-I29dP(Q{=QPEIE)7ngJOeTKv}+#XqEtHd76ie!XEG^bnkQ6Ky8fBxDmtLpHISieE}ZA&Q;R$T_ba1p?^#KX>%X?*WG z9uMd0CPP0Kejd*El8}v;!jhY#BLO}xMqM{Z!U}9k23L;z5r{mX zh4)V2vHNXd#z)cp=L1?xwk+pXhkW5Y+NyU`+t-CIV!WvU*~{;Kci8CYvr0*CFqj0y zl}o)nJSc-$r3WODPZtJU-NCkK;7(VTz>q7Bz_;L*)v zR5nF>8pg_)d{fX81w3^XOn1$WC0LJB2WLqTlHa_TMo7_|ygpNs>6Sula%5GEO0LP>_%ibB}qR0!NebD$Vt34D}7-cS%((i0oIk|TziAvk2N2KS9_T*XHHIQcC$}9Eo zKxjZU;0MZ;14;PSGO*eSxw*NO)#jm+>{1%F+f#_FLYrb1I4-Zi;t#z*5QIg@?a)U2 zVL`s>nQl@Lm;@HQ>F;4@GMlb$&@dQX9~BuV!xO$r-Z?TYB7Ygc_(=I748ON3W{X@} zl`rFCl~_ITOWBxAQ6AJax=4BjuXtn$W2W>ivhO^barUodX8(!|`dzJtEn+e_eC{Tm zWtNnbv}e>0-iJkfBK*V3-Y7vNmMo-~5R1B;X-{vIb%~7*X|g1iR&=k;it!hc9nl|? zlOt-5pX=+G-CM3T30J*i!X_y2*tY{I};&SsR9rE!uy3Y-1cG`Szl=R;*?c(VlFQ1*oiMu^vt~EpD|{i{!JS`1h7ysmpHCL5Cy%Kr z*j=UZU6c$Xnc(>my5%Lx3Q88&Kh9mFRmFOlAx-J%oK0;ekLDX1 zw9BqIVAh^297lf|k;;lCs03ZdSWJ{+&**u1-2x@=HRyKRfV*%6QbX&if?8s+`!*wK zFA2feBDAcolAO8+wbuH#(Rn7X;s=0)Rr#|lib#@5ib~7O%*@{dF$nWQn&qR-=u4O& z;21yNuY!U{F&iosXFitvQ>db@9`^y1jL6`-3Q43g)EuKGCsU15>c`)^f4HxVr1PE6 zth0S)P#KVZDm-rje4Y%{)-$_oSys|%Utiy&2x)q-wNV)YegP%nUj*m(<{;q+cnPJr zLVY^jzrCbygoEUjW7HU{VVxt~wiCcLbMNi%r;dZ6?;$w%{Q9pA7@w}=2>39&vguM* z7_5s4crkP+#dHfRfTt>_j97tQT~Y5)lL-_F9}hq}GPxJk-LM4&{4{Z^qo`k_LW;7o z=vdcM>}1d(z?P{2Xitt~pmG~dt2%PVcnn}SJ!)Z=gU9sy<AYu zWBALg26^6|_vX(ZG`R)T9AN9^`-zHnCB!qS__9lk%9kSteCvYXRqqV9rh0Z~YY36x zo|n7$z(iWmG8>C=p=amgyDkUKOAr_*zlqwJ^_6dLZ>#6*S3Nt9KU4e8CZfs?C%w=K zD@iYdiUF953h4Pa^YoQ#uTq%HtYn`NYu zY=h!VAoMgq%IHhu3;97%Ali+Tgd`8R@vR2+Hu$m#5eI;bM}Ge<&QFOuYtIXaixpvs z_%{&2a6iDr!U{iEGN{mIGi*Ao1w_}=!@~xc@lM?q+|Fjl2RS)84+K;xZa}19($LVD z?wQorjzY>Y)6;GMeZ9W<{m!#ebR%;X2!;#a-yP5ItLnI8u>%U(Ac496Q+TC$e-tes z4u9e;^=|I&%)rd8xIUb_AceLU-gS!T7Ro2WfY0YDc!Yw2LJD@RigCxs+tGtxRZOow z-l%e>Dn?B11%gbHe?R~}6_t??BO~L`% zz7Pgibs-Z$hW{zfm`kdqnvh9(akk~d+ZDhqjb-HC)XJ-|k|H<&I@b;|7haQQHIm@^ zghIXWvEZJ6Z)&v4`(hFkgJ>m!Gk_6#oqc_>vH}3by9(VJvrC{DWvh~qeD*hs_5=U+ zV)XT68}=&Zcyk%##5Roie*1@~EwCZ`UEaUHo+(z_pc2Ddb>i>35N0D8HXpDSS_gMG zCM6|hw*erVR$^jZE#lt#L{^=wsyCglUW4dXPjz**ST-=a@a?vNQl0~xLaAK0XzJGw zzJR>e0mmx#i3ytgFF|v)mOdh)6pSbE9nWXrb?0zRSo@t1LEyl#x2K0~i~nbMV9#y7 zMVPa6p?b+b;Yn?7ES+qe-n5z8&3SUG4FAxRiDbFlOkk#g&v|aqf zU<{4y zxsuG=e{KE8NbdWo{V0vvy{_IpPZWz~ncs88{C8DiQ0Gjk*6Uk02coY1YcYX}xA1f-T@Jd1NdqKXre7y2Hqz;K=g0Dl2Ci`oDQ z{|h4+Q1*LtLn|?K?|?a2wIm=4zStPD)e9e z0sN#N#2+7!Et{MW@q%$EX1)T6d0}szLm`>nAt5X40huAwKHLQ4Yy;f{GaYY0Gv-ya zLytua4`4;p-uU&#@BRn)WyznYiv*^T@D%PlUvJxrgDSz+&G{Dy$*okcegERVR4A{i zs`3T3`R32;WJ=C%d+x^pUbc!Zl z5+EZ0H@i4;{Sre;oBqj@CyrqJ{E3f?`}^uj+gXHsfZtAh7!$=nlTHuLZ-1;l_e_F-57up6Aq0 zBflhNXH!$+_Gf~xQWgX{2u_k^GZ5=4^}v3osK@jGiOCTr#gu9dMFrL61lBE)MN5Ia zDqEhXQxyh$maAQ#sLHk9szKTy(qWgX_{IO9gro)>Y2kn9*3HA?rT_?8U=$sK;KVVI zfwFR3xAA%tRHX=Nl#4Dhz!O?=b>N8FhynBq)P2K+&8H8*c3!czu;9^_$IkDh%J9Ik%@6B^p%Ek~JCX+}zyT z&imgBDw20ozzFL?!6Gr__x{bM5zEleiEYnopbv=Y&wq>E0mrVWRpzk>sqo09|7xYhO?lfw4DKs38Iz+>I1WVon6?{*{U|wE07e$6a z^&&TT4@~yakdP2^?Cxq}IZ>eg)_s=vjC({w@Blu$&(U`JeGuS*Uwo;GW`RM(+|ELx zbGLOokSnkogj+zJd7K5Go}QM12*`0ZkYr(`_>Bukwm{XVSJ%*}Q$6&yORlyy?n{F0 zv@n;t^2El*Hh|W2PTcRjyoEpl@c==!4@|_3-s`r@2?Zq3f7{6!meN@g2udXdg{Y~i zpAgJ-?Sat;M*6Y5Ko+7j2H0IsJ;4rsOXRfxTi4U(2`HzOeQyuVgNSa2C!k8D=L8Qx zSv~}+;%}kN`>3uiQAXh2QZpDa4jUop{~R$u5^V*+yjE~dVQk2h&}YQ1;nggd_;3Ab zQW)wOBV{bocpdgvKxpIl+S-~DXy@wjrev9e7I%L@#?c+@>S!b&KKlH)Xv-Pn8#hqp zbJ-ji(XaUGt4H=Pp8@!_8n^{$#g;lO{cof$^;~VuUP4R2i)vhIeqW@aN0tcM(scCe zhbHCkMmB<75oBEJiC}QO7#tnF76iK`LwU>NG9`s9FgSP}xI4on?1oL~3{)-($Y0#| zCM->Whc#8pZwW?Sjm2Qxso}4DJI~0JYT-!%JR%C=cM(lR#EM|DUeGAaO0- z4oaZ^_u*W(@LO$OF+99y&p`k3GXb(~m4+7=zR5FSV#NXjVkMD5UAJO}3y6yk2n=;k zwa|4L=+*%&IrDXNJmzs99<||ls0Tr$Ib_u!qMQ^E1v7CF6Z@@SJHaMR5%K2Dv{2-Vq|(84EIyg3SXc%fATKX) z!mLfXX!3F+`ZaDc0#U2W){sVMXedDB=AotEFR#P0@*II1X4vVQc?7;FowA>*)9=w2 zGm;#ne6E2?PcIOKrQ!8XULF&O@w@k613r@?*LpqlL*t(%HmIkkN8Lid3mha3g{+<4 zLwmC+!Bzkr;{P>B)g+cLY=> zD{1g zIzR}3I_;8)#VMIC(69MPH2TJ$?UR^y7Ac>~YN7#)T1{?J%a% z3(lvJpxN}da!0v2a)qOGp&%n8{{=^R3Lyr>QF~tMd}s@T!{JaiNb&KpjJlMSYlJa? z)FC(o~h|#$876wIphQ=r-#lVoU#iXk`O>+pszgL zFROAK92{hJuBsOoxHk~AY1Y6Hl|KqQ0i#VHXNY|t*`yUH^|Xa&U?PGOGG!JYhlhID z5{;{<5HV8ETc3iSXMBZsAy8bUO}A8$DK0MO#Hs=Ey&f-DgV^NI*^_Etc8 zm|m58ea5jyH%j)CQY03zqm3*UOBOl0K~{Z^{Jmf%jE!ya#kfnDcm@*u9vqa?I9_i5 zQyOA<%(3{Bm?ySln?Rb>(K)m4XY!iGfr{QLkblqggu zmYWC5>dbXbgiw3QpErZOiv~tzW?o+2wk=QESK^o6T2sP|?k`@vzya$L1Emw)Bd4US z{LtOsFEay~ai_+_#^NIdJq6LTHwwX~AEhuv=;@JwKMWb(nt$~1iOtOPG04LuNmSzv z{fzAg-~&1Ecuhf`{_ZOs#ZD1I+@;{?#VH5_g1DAE$sgc59j&wH=Hx(N9W;gY5CjlV zX#{;n&ZbL`m#3%J$ml4?G=AB17?{)O{;Dtpl8PC;=c2A4d$rv8@z$ju73b-XNgE!A z2iwCuKW{IunNO^BhHBZB#_grENxf!gs&RD|Mp4LO=&FmJtrL3k6U`!3|WkU(-@IYz4a9 z5u!n#$8G-p!@L|&3YJcA0Rf@d+y6GFz7va3;>si`b`n3yTecdKSVe$?EFUpK($rjJ zvR+sr991W&e&4B3$~2o8CNBeI2W}SCq=YFE*5pQR2^)=1>3xt6YHlqwsG&{BrB$60 zD6W_l8?jzck?32^hSfAAlicc6NrR5EH7yttDdN^&bLr*dD!>`t$0q2Fj#K>+u}2Rw zmS8~Bvun`LaeZpu$(>{>4JIEV)C$vKZen#~Eh^$rYAwJhDTKU{b#Tiy5>eQ)b~G&i zG6^P&t&S%BGH6CO!oVDU2ErJ?z_90FcxXdBBOTeUTa`b)z{z@rQUlxn7%_4C%=rCv z1Tc$mFn!PD1&BPdb{^d(b9kPX36n9(CKYOl4=WNSF?>s$KKfAyg`1MaBdfB(2e^~g z7#QyQSjL}z?mlZ*5AgK#9JArcR6WCcS%NLiG&`D%_bBdfDWT?e=gN@QPy*!fR%TI@ zgbl9$hVY$ft;o+mv2tj!Ep9FVKhTlIaBt_bSoF6P!@~2hx(}1hQmhOkw;+bV!HGSI z-?hhmtQ5dnWr}B^-Z;!KN-A`WM5FczqsxS|%Z6trkkz@4SS9u)Nuh-F6oHK3-PE^4 zQ-|)!G46nG5OA#g5gX|?7a-qY*7pPsuEYs8BuXEjFgE~htyX2+e&q2rZ)V~;ba;Y| z-Yf+Y4rHaa3)$FoaWspywqI-m=hyxO+#F= zZ+kJfdfD`C>SI$CK3w+!Xq^}y9X(oX0UsRaF2jEDpSr)jI*NdmpIwHd5yKq!Y%@-; zmKR#$)eJacI#>rF=iDP+R{p z-Ey$OK~8-=I%`i5bTRMj?DX?%I;U-s>%?q~sGw}Hm(UR3mP*L4;e`CDD6)IOKv z`Atpy2yjmGz6c_sWaCpYXR9+*C@sdfk=~lMDemysKNe13t3IS<)MeDK30;EOJi0ei zkq!=SV4bgjl`Kouie2&pIr>0wmi7zKa__Z>c0}1#@;FH#9iY<<0Q5z53r^pmfV4J& z189<%#>U1KB^9vDJz-WpBnr82I^i?r&Q7z#4o&MJHDoHpf};JRPB>rPTr) zTI(N+d_hM?CwOpmSN(5eEOq*I+Hl5-074oBg4W|my~oI|1DKhj*-tPq$bs-0KLkA2t-RUdoBZ`(9gbueZYnF zt3n6jO+PXpdAh*mN~u~}^k|*W7`!v0nV%KS^DRZvIr>is;qo0Z?WL4%;pAT2ATJ$e zr3Pnr|d08Rq$pdllpgA+H4GD()+c@IZozpaxV@v5~6zaNL1={QsYdXx(8AOmz7 zRFqwy~8IW zR`3Z6`bal`9f(l;?*w#mR|Ys#jLwp{4>L^6?6I5+*i8-ot`(MBi;y6h;I_0@$~f&0 zfpfTCRc+_;uS(>#T>l||pL4$#O{HaHy~(BcUj9O+JXaBwa}?&glF^RnR{SasJxgRRm7dfNzbUS$;Qo*B%7G^+#`jT5(`TqroKnBIw^DX)b%x>kVX~b5g^g z*Y@0A?D(o~Q5&U-AVPEtGH=~LAqZqpNJ7rz_lpWPx$^?T8xaY~3_kKV$;kBF@@+SH zKW#JfBX$#msWOHC?#lo!ssnPLI=UE|{9UpOh_O9di&Oo77U0vk4KgGQl!1_l2p*sp z`Qm@Wv=vmgwNn(B?94H_(*elL8RV3FJohFFrS=LzIBwUl!A=V&fz79oPT|lV)Zi#U zfbJ55Eu?Jnf2{b6-_|nw2!z@N%^W#lcmE?IuVX8CV83q&wJ1wjv`YUWUCFv>0XG~EsRR8b3k3claW&DawZJ#{ce-?t{_g z(p?tf4HAmdAUX5|^qRM@qvhuf7>rsbe~BleC$&i^3Ln2r7IFe~|3uX=JyB+lPQuLK z&F~Kv)kEg{+#i0Fmi%0Uia9s!ts_Dw!p0hWga}chxzC zNApaGVFBaQ{wT-hpBLnJgX%&EDj0G(7mNH5TOya!tmPe>CU5no@HHj(;k4)or2}zZ zem`WATOiUh>HXX%{{$bQBW<_H2B}=?ykpv;6O(*ykk)(8^(T2?-oqfI0K&rd@5-d)XxNdu1k5ME~z(9-7swX{8x(GZ2;#iX%Kh$N94`zP;sF)+``>A4z& zR9l7?KZJ4w1t12(@N@!L`Q;oj!iQNtLt1H9YRbqiq&%vQX&@ab2gKYkcJd^Q9Tk2TxY%doMtW`slsy;yhLf`i$xqT6TiJrR|C;8krqGg!N+Dt? zHp)CdezXf&YA9&xEC#=AobR@R6<{PMJ~2 zWm7gA=%#IGx9e3dqX~8rA7>mJub=WenLJ5gpB_vYCt-DX3%Z9!dwaV8OlazX+DvOk z%!U26QmFY}7)RPAaEj6ZvoxM6hC)=+uGiK zwLe?4aR;=(KZ7(V2G1-&YFy$aKsaMSm+u2X)iKA?Eoo(_6kJ4Le_tQ_v|Yna?xEx+ zZmN8jInc@PT&k}h-{C7Hp@242-V02NJ{QXVK^n4y;GjfN+$2j5-~*y|p7l{=*RYkT zi?Yx8pKTg{_~#K4c4jtlnfFaOPXqG*$iMA--2NZr2 zShvSLN(WT6rJ#e^f`Ei1N*WrPkBIQAhupWA&5&Oo=c$NpE-j6qjctXXG#_T)4AY~i zoJADa|E@9Z@9ljED4;L&eCGtYT%LuC1>x^V;0pIaQB4(SdE zK6dzNBZdJ0IyNjE`F<->;T-Tp(It~!=eVSr)m5tt_*#dEW!JJCr_lf7{4lWgGk8Qqbf-X_>lNvK%*{=*IOSDL zL+uwrss4tB+cRWkWi`?6OwRIKraj{pms5*nC|U0ET9Ug4RR!;&x?{~|H{g=#GNgUH zlSXV_z5xU18Niw)%BqQEH$?C{W@rB)56kqpftc><>N1(Cw5_)6j%MM_8E)G~}1 z9vmF>238_HEhUBE|3g&3`t}AO`Fmth(L5fx$V{|LY*8VSy6?x2AAxFG=qiCGAK!G*6?0)q4O(VX3n z#KAdmp;UW$dd~0t`-f@}mzJgnZNRqLOJ*yZCvt0u)nH*k-!UwXChK&Xb)Qa-kFPp{T~H5m-sRHf=AR$X!)&^|mHO1pUME*dhT#qcf;SG; z!OX^10wDHfX+c5399+KwK2ghUOD6Bi_)Db60TX{>;ma0~{s13gojAzwiu#G4paRZlkcbWcriB(BL#bN9Bk zwP8|(vw*FDYp)4-tcL(|Qy_kTOebWxE4{GeuXU?<)QPylEy;x9?DBc1im&pqRJa+j(w0%gabDddbq!Dw>&qe3D#uZ{9o3h z&;llczJ(5xK~7%Yy%EIj7k|MIp01Fy`$mK&_wOhmvYlY{*oFsU9_V@3QP$oMydJF2 zp`1g}vMqu(u{Z<9k0y;tmiJc<54dZ87HG8=fLf#vsLqgtgfRjb7=3@OH5@?#RU~lC zzuqLt4tC{YWP(TLA9{ISf#g%{K1)4z;YhNbAoT}`Dmm*^O%cAZ7f!)uUs;NKXeX;M z!MWnS(qFCko<;T_H?a&j=SB(XBx+vj>FGJ}@|INT7mdys@oR(2QxLd%9L8qg2_|^JOD_(f;#hsmmcDvP7VfTpOZkrCCxjym&*^9}$O1U2K`{w( z=`2(nXAs(ySz%AXfb3NXf3t`_3{edt6_oIfz z_*YX0D4l9Qy1O;QzYGI&gih-iv@Cy0O|&34ak;fcbR?v={kt~u=TGXNYYkz=Z`Ow7 zw>LL8Pk;n?ks!o~?@Zb^qzx>kH>7-B8G(XuXyeDPUpLkA%fYI4Fa<@~9*6)9(x*i# zph&s^2zdYAz+MoDU!Hw~MVI7bJGjP#k(n)z*;V?MT zbnb&h$KKHJcg^hVY=V3GSXdWxI&3iO!EE_WC~~Wle}??EEc&bmuYiHsR|mDasMl$Q z5nfA=z^VX%t&QduKf+A`VM>GQk%(BJF8S_`L3V{8R z547S{a1zHPEopA>6ShGkW#w_SMLPw4_iw=ay#&r(>n>DP;P6P+HBs1ZxijRFJ)Go) zzt%`dND$J}(vCDQlvGt4PeC2CAq|dmKTyA#!+Dd7$5ZMH@I@PlEv654ch}nZ2-)H~ ztSEZ+8uoynXsfdS<3ak*$y^QF#TergsPZ0Hf?Ftj!{zM|XrL&6H@+Q1x)YxY+$e1S zy9R4(2g%d2PZ&*s4O6Tm?GoOJ0#ln|Gr$6;8DAegHm-szKs z|Bj`KWoi%n&DgozZ+|$Q$s2u)x&-x5i=D6;Xyxo)yjbagjcqptM{Wohyw)GzDCR(b@8LZR^&`Zv zueWloCz-D$jMzwC3_n&c3ihG?tS%ozBf7G(k}_IsboTSjn9cjd?(FOg54!hrYU*t0 z6>LI5bFa==Jtup6`$hOW-th?u)!*vtr`$kFaJjs^Opfkk{TVu)&5#rSwzhhblauelSC`U$^5njpGY|CIo0!BBj!`S_E3hr;MBH{v zF#UdqZ-4so<;$u#d`K}=h9cKmLrozeA*Sm?i!yioR-OH=8)WjZ_;!Wb_#Od!r>~z} zpPfDb2Rx#Uj<6Qh{7X|v<^9RIbjkX_w|JlKL%ugWYFFP>rx57e$Khgffh1dkxUFAz zDF`G*L~zqr+zUreAyKLEFyq@?T46jLEs379U!`^g7NZaqiWw{Pq7 zva(tn?mxrRz$U2LeIDZ1%p$3tEQkjf(UN+qNa+Q!&vDy52q@6?f7FUO`|8yzGx*J& zz(Fe&q=^|7E0FD~!c>Get&)R5u{gCE-)nLB_wU~+bQZ|~zZktP$96jL_m7!m!Sne` z$e+L|swPYOT!v6bvZk9DMB~p7TrBbWOgt~2XegV>Lux>u#lgj8;N5$-T4LEzgcY6$ zc!)B6ZxXH7)5LNaqR4R{p)!y%Ha46fc*nUqtZtG#17Pv0!@m0MBmEaBRG2B$$q$N( ziazv#mha{#HeJR5Og@`}h!E=7ZgZ)EBl+tS@8xe|IhEq1;`j=4ajhpqo8bL%&}!bC z_}%8#*5xL&UC*9Bjn~#rQ&U&}z`@IVW#R38SqEf)G5CoWX+oRD@z6X&hTW_yl!d2=MFwOcRyF z(s=w#sfwss2tvZJF;c9mYPagve~ym29J@B1{ZY5EwLQbF5|}jMvuZkO+`iysWnC5? zlwvjRT-X(~1Cd^QON*>{*P9pPCNks^H?*%CdZ!=5i0H0qX}MfTCO?RPEDf~iYMsAu zuV3G2<%CYs$Dn0IPdN4(=z(ez}sE@p! z`3K9^Pq+6wW6)w_Hni&c=@w7bJ(_IVbU{E@`K+q(LCS3uu4)M2j}VVTCTAW+v;JaKJFam_2VaKqge z7Z*R0Q&N_E2oLAVWk-pplMy0{8xQr}8mHR^B=&xMn4FqY6zYTInPGH%sU%oCxPUsx z~uOD9UXlF65Fr6LWVQC zJm#nVh+lE<&NH<~RhXm|<>aU+@9OWrET8bCY~$mf^N%nuW9Q(QQ_qmP=z%UjLpO7t zd+wE#wnospl`j5&|0zB|OC94p;CpY`TUpiQ6&7-_^I;>%rTO@Fs?|aN;tob3Qb#M%FNts;UrLY&7=+=7kmbvd~_rE{X8y;>rg9v4_|#-+`5Yv2}=t{JDO>^i8(W zm>A4PMY`){6Ly;~U%q^n4q*Ha=v|1O=;{iK(hy~Y@y3};9HNt77EsE{^kJc)PwzxV z<1%*@UP$ur5J3v+CTIpP`$3C6iII4-l_(dlnvw)}(YWrc0u10s7eM=5ZMTQs6dc$y z8`^hEcdf3hY~1N)%h)h~s;l3qrdqRK&WXkmtRZMYFD)U#RS_1pjgb*898y>zZAdMK zSv?gZXx>0U1pFJ03TsSZW#z#SU>atQ&t|T^m3;bS{RnAQfzez+CT|T%Z_6OUy-GDr zTs85_mFtExMo9_J6*N=N&{8yj93Rl;rUE z@h@H=AIgX?S#CB4x-m%O~yda9Ra=~Bfu|m z($dmOVb}O+xJfbZ1Y!yZ5lF0Ey%wVd`S}fc`k5oR#S*0e(lh~%U-CnqX$i|)i2{V~ zGl?)vu_ot5nwdsI$B-!c%Ce7ux8Z9xfQHvDFIdMNKT!w~Ws;f|4fXc)NL_-y@#e>o z%K+>cw?j9HN{~7>mOyF(+@2qC_;SCXY$$<|?J6cU)zEWiRu*;=KXMs`P!Ce1yli(w+)E$4o^_sad;(fJ0B z0K`LCS=k2~A*aVR&IyB7?XYbPs_iBOn)35sL^ZSc<4}@g6tExXd)Xd%G?q3roDa~_ z((XY5Kr2Svz)E3ZLBY6)h{$;OpcnP|-;7^^eP2MF+zFNUbO7cJ4b+8PCv_>w>f08r ze2s$SXw0|$siJ_g(Suel*U<69?vA?fF6J0Wn6@KBLr-LDlFd9lB|u=xW&C!tazr@g z<-1uf!X6^3uo8`8qV?^Xh4 `kPGGuU|L4CGI8lY!k$3V<(&mZ=vuiQ_1>{KXa9cXfFTd%-}Uu3 z=-eu?G_^6^Cr_T_E>CT&t{w|WNlh0FT3K=!#q57+KLSvztG}P;b**8@T?%EkSc8~A z`O-&ghD?7UUgx&d=aP~Pmh~eF?Hc@ny#REmoHu+F!TA|mXsiv^F~s_vuK^fAC+akh zC6sQrjnXWVvAaiBOMnOq4<8&J-d{&&qq!fu8pmq!NFuzPoOXSHPnVwyRE2PcJ1`c{ zL*q|LlCCb}9*!4)Z4(|Io}ik@HS$_mG7Jc*+n^A{f%fp520x|-Pr|w#46xM* zs({9C%oc<&rR{>^wyvnCNUh_kdJsOh7IVO;m7oF-B(%IzRaGrZbXCOoF!TaCJs%yN zkzRa(xUTv&0O!Xi%3oaV!bbfMMIc*usdu@JqHU4TtGu#xaL5Pi0mb3b(N$x9ekVrI zG6!_5ATbjy7+a_0ES0RBsn9Rdc5yjuhs#PUlj-x_h{B83kF;WdFH;VlSUNK7RT*N9 z!&_t1)0g)kpS5Lm%YBGWuHx64dDHQHcoFQ25(xHkiBx#ZKI1;;zkCczSO#&wk467Y(R6D5`Sa%uoSQy?UOTKGc!aCv z_hOSc)%xD-KYEB9aMR$+7zlyXSGh)G2T+BI5(H6`N@aWq4-FlJII;DI$hc$UoI!>= zcd`phOLqfN!)*mwcrENG%%9MJ~90wVXMj+`)c|?pTO*7FLUi2o075K zXAN#nl)jB*@@s(XJG>7Ktxd^WJN}B9$CE?iBf4QU)O251xYbU$#DZ#B-T$5e^$l@S zoL_(bc>OftlaRZ^>=$^Po=*2MFK_yh<}hpeO0FKsTeg2K2<0MH_Uk4X1A9tC{ste&9B8yq7P6QBv|E z55Dz*8FJ!@s6R66+{aG%HbSL#IoUR^qOx+tj@J&BFP^OwJq#6Z@L7SQbEfg*F#rT;m&!@*A^BCv8%UzwL#&aRd(j| z4g>qGa6QNP1(BxXJPkU+Ha`23vBLN+h8F>`c21thFJ4)@|ELk9vd6OH?yb|;*FQuY zN99=qyng=R{lZojJ12}ae1w?Ed5Zlgyy}nTT2%O1lLYN=%$|;JSDs69_zC_b;ojr+ z6Z%g-I9MoflB!f=>vns{orVt>Fp9i)^uo$_%)KyR#IU9z9GKwMVPi z{M{+FK0kj26LE&syMG69I}rO!pE#s#Fzlre7{il+uk(>KeK%- zrnC7oElhatNj`JglCjF23-p#rN(>w!9^sSk61Fk_6in-LGPDpmqQL4}w2Ri3PQwzY zMwB(-Z6_dV&eml>Zbu6OP8MGz`3d9>}I@X9-4;;yFjx?B3}?v2uE>W2Mjm;Ou{D}B=Zx~FP>KE%38+RPm|9T1Crrb zYp96P)rs^9`l#(>ePDLI(}^P3^jl{cH|-r!d1#npdzWnHMYb?vUyXgov~&LHL~2$@ z=4o?{OZ-0Km<^C}yiTKY=(u71rYK$@&7_nDBV0O9r_ddikH^$C9K@4M#vUfrQo#)7&J2QKJ^gJXPh)k=F4}+#d)`i`ZNF5GT)me`cqVVyD3EjR z-{_lNALQ~#3_L6uQN-YEqTmY3IuV4spQl26(5|;Ydsupa#fG8zgC@f z)DVQoigGbisSM2Eq$4Okx%<-duXp}$KnyK3h#=C-G`L`g!o)pZwvmB+BG}@(eX#Z6+zD^Zw8yc#;Cb2Q-WaU5Bwd#Q09`zK$%uC zZamkS5O{BWdfHeFkZ9e6-Zwp)F4ZKguC;p4zjDVc_L}PidhyDxCg5M*skb9Hr&}1Y zbH(0?;&X6!56GPSh=s3;6MHs0h|mul2y0F9f?E^^6ogT7UVTV#a6if7mlA42=crvQ z_lWCS^<;5@3bH#hjJTKgu!tOmBA;Lj7wFE*j2uyMcHAiqE5|TMrDLt(1GF(0*qj)+ zTSw32XQ_$%v{Y9Uw8~tuqAYwmSP2ow_k1ZWVta1mS7P|9UuE;x-7JuGUPYc0HK#gm ze>WG%f}*zqop-nq&yzHNzJX`h^`aVl%%!-ru|}wW-$t`%o1_eFPpH0MLwGZGY4e2I zItZ@}k0+?buE6@GC<)=cKr6r*D zyp?3aqLVz^d>b!VyIMu#$<5KuSUlCC)YwJ7Qu3FYHLlPvs7-7hLjD(}^z-Ve6u2ck zhD)>fSOW3Q7>%-J$~WM5xj#Q75&dqkbLD_2QErw)^${qUy?BtRYr|Q$?@1>^>wEiQ z=DVB-pEqyb#H!^RXzJ^GIDi5_r){p_A{oK0$7IL;py^mrbI0den|*F7zyFWxv-ud+ zyCm%7-GpS?%_apF5s!-IUy~*&^NK!4p0gTe8H=H9jgE5t^E4 zfI6#6eeh660TvnunHf!;D|_87;=IR(up%wu+6!BrEy~i ziX0>GwCBE(vN&2J60wjm2}or&jgn3z+554_u;)9#;yw%{-;XhFuZQek=WZ>hw9 zJN`2;arar8NeA>1YY5?>M`ZyR6X2UYhDf>`FuI>t0y2)U$Y8o6_wWATJSg}QZD{F- zCVLCG$gxd`y@NNTdLbRfhHfT@~05t0&m!OC;_uwXDVhGrh)2hI*IPr$ZH;Yc?46y)XQr{U)_ z7cx%OU9y?(T6jVN^VtoVnR5*k+mqRo0Qq91?pdCmb&Bu>1-7Q*yd~2~R zZ$ulZLNH!hVvn+8CkT#deCBhb3LXSsu6_B4jZtb!imlh-#0v+<`af^*TTjW6qwMjC z85vDHY-}sJ(pM(~ne6yLa|VytT%g~BK#Us`t$Rl9Aa%3(CN6)l)G(OOBLSFU0BHeC zQ5Vpf$DuPNT_6rSho;kuabrk>{kHX==g38Kb8|8taA4X)b^Py-{QwOWl?gn*do+?B z+Liqco`C!^val@80`Fn(=hMd*y;H)daZmIs!w3pMWgk6l?fqGRU2m0)g+tyR+EykG z^Yk8O;Mg6@-{xQbyBz@lkkc>K`!A>Q&j@qNb+4^ne$q9iqYNyWpPw&rKq>bHQ(HJ?Ph(9Mmi7+qVZNCPJa{ z6QOzUq-vSQXNmz1c3a@PbU8mh>n6yLDo8x9Br}W!f5H~L>cQJ-vFk<=^y6oZFm$xp zR94q4Wth@lB!T_JjH`Bae^Wps-wV##<1ZycQ>& zzn5(-#=*n0H37@>3Br>H`HoKJ^VeF3YZ?qjW;uiJVC5fz8~YD8v#lY8_-Fy1tza?> zq~z6~o}CF{tQTI}!3Zvo5RD3d9HC+f{&nee5vO@fDD3I?r`;ANK7al!+3Na8?Wz9p zc?#lNxR2kDB|b%Z-}^`ju0$+7|BLq+G7tmU4}|E2K|nwN2W!k)*MQIE9yz`M71LYY zdweuKo=m|8UEn0W{J!>Diq$GwHXt1ThV~f3?L&3}M*7MJOgB=Q%81EFdndWK_?cqr z4n_^=w>CE$uRsgJM;%!M|Ihlh_80w5j%QPLRh<4ZDCOclL?VU>dGOxSrOu}$@@9L4 z1D`b6w~zT0^V z3~1icRsu<10f~VHnFr>;ZveBn5ne`yQAH5l%0na~J(U?YpLL$<8Jh-dVLDRzKD2pp zN3Ww1F%E>ZEgI!D2gS@9IAyJ@FW#DnV4WA&Z#ko_!^#cD4rxDBT1asHhM5_!Z>1n+ z#}EQo{ew4g4Yf%!lQ9{vn?tDnBxv+mw#E#P!i4Y^02z8|myN`sJ5xw)bO@oVSQ<3J zx0&wT5isHz6Q}8%FxQU268P`41wPr!DwD(!Lu|x9({XoC)OhNfh*9<%+LVaoGDd$Vw zZszpk(h!hmc%xfY1?Xzh(5v^lQVTH!>Xd@vU;4y_wucjUk{;)NJXx^$+H80 zyG3l#K2?t2?jJqoz)xH9tk!vn78YzRPeS+_IATnJt5fg6a^0O?KuQqK5`B8d_x8{Z zf)UO?7Z$F|ACI{((E7D{$NnJk)Y!s_GWZewljlBX&kYs4_!qA{JWkmF!EnMT2u4VR z%{`}KmVG9sd2v%+qICUJetM5n{U0WAC*UplQu?+)BULsZKrA)B4bdo};wfL5lyp`L z7=)9CaLpUp;;iP$3Pjmz+=?$otG`w5-<~=C9*K#G$q&TqLx4qa4c_jwTq}j7yVktC zJYhVM#bB*nseJr-WeNn~@;d+;NP}L3o^(|2)1sd~Ypsp#%zp%LDy96H_sVVX3bhdi zICvWKuB@QD@CFCE76eUUIMN4Wj$2{)B;2oCM*fsOpCg_@GuRTPEz9g!8e}hoQwHu4 zmN!8GNX{;J>rgX?Q_}HV)cDC0*W`s7`?+M4I5}?C<>M%sXv{DSl9Z$*Q8QpfUjgo% z1P%T%O&eb+4551l`ufY|+{!;N&8ctz+UfeWcoTV!}Zo!!s|-;TzhyDzY6d3`AkwU`@H{D17-CL!KuMoeNojC244C`qkBm zm2%FDwy3Q{OS0ee&A>da+CR}C3jz_@9Oz45K})!J#K}7)cSBGT%EBA5KhI0X48HH3 z^F$B{=}wxUZU+-TDkW>i#+Lb1in(@ufJ}S2-Xi&<;rI&f;#5h-pY!K z1`hW}x2V(}b!nccQU>qwPiZgnSf-SaNpo{@KCrc2N4K6A#JEDcc*%6Q__Ex=wrUN? zS#tjq8C9}ba$kzro%ampA7ohZ^))UYW5104C>wn&qDYGBv)mi-l$yDKn@A$~F$6)Q zF({S0_mr!khuQCpA5l*xtV81~$+=8WFQYR_Mj@*FRrWuvjTy>zq;W?rH{B=1B`!k; z;6F@E3$Ne2IVchcU{M;37SC7;rG1PwHfextCjUZ3QsyT}b4@5z;+{YNjkXM9qk=Oy z*E`{FDpB>DHYmCkpiaC}Bfh9(?}XYF|MBO_VL>dZ-mp__IG zc6R22r~5h`L740IIRyCy>}D(QbVl7I(%Yzv>fXibabHV__2+O3b!=YR4#uAk_atf1 z!HbgcBMT3f(%PCVKzJwTZNqa%VSRn-xJHPb>C&)qd1~>h9G7TY8B3ROAlCY(3m7V`)Cg8F{nAxPk^c7=gLOvdsLnXTQ~$YpXX zzL{FPJ!AQrxnqKX<6lKU1`K*uyLNg*`IOVJ6KjJMD{=_;2QOv!nSk$$6Xd z;#kz-)f{t){MJsk$tB6{TkO^qvHm%F-SUFEnGsy#<~t+As3osV|Jyd$x*gXvnKW)y zwpug)Rpi7NW6?WRx}b>r>m0p&nPf8JT6jF|MqZTgc-$m`oZHO3;Mo!l#>uvCbBCjn zyBo?b5K|OCCiXdtg1p>wk)+tieEd-b*J+#CzvwzL4Ik9lpok3b$_o`BUI-;%tRdOE z*}|Njm(}u7(GEgQe9+yjoE&2Kevw3Egj0i(*x178a?_9e%WV#gV){=Ck{r4!9P#h) z5%}y@-%!3$A)5@oNdbzhClLwq$KR3zk9I3Uf=;EGgZv0&c84d&2l0C_wF6%mn-cl@ zlw`<&IjF@+hx|dU{3 zJ?m|medZd-l+TeQ;dl$#a>d1S*(C6_7$<3G#^s!sj+e=Zjgl-0UV(~Gl2?-}eqiGN EKVH2_NB{r; literal 0 HcmV?d00001 diff --git a/doc/img/edje-animations.eps b/doc/img/edje-animations.eps new file mode 100644 index 0000000..0bb7b4a --- /dev/null +++ b/doc/img/edje-animations.eps @@ -0,0 +1,952 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: edje-animations.eps +%%CreationDate: Thu Aug 4 20:04:30 2011 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 418 319 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 304 translate +403 -304 scale +% Image geometry +403 304 8 +% Transformation matrix +[ 403 0 0 304 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 403 string def +/gstr 403 string def +/bstr 403 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 19425 ASCII Bytes +colorimage +QmN1@2apVREIWq5Tqe:[!!6Ng!/bLk!'?^> ++ohV#C&e6pQ^/*]O-c.B!0bAfn!0QBt&;!"ipfI]rfU +OH_s0(Rp;9!!%mkrW!:GM/ +QmN1@6W.E;M41HQ_o0@i!!=-f=s\_"JH4s8J,~> +QmN1@79!c>LR4mF_8O:k!!@*m_%;.tJH4s8J,~> +!%*6sJH16$mf7k~> +!%*6sJH16$mf7k~> +!%*6sJH16$mf7k~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%*6sJH3=_[Jp4,J,~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%,,SJcC<$]Dhj2J,~> +!%*6sJH16$nGiUi!.Y~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!%-G#JcC<$QN$pbJ,~> +!%-G#h#Dp*JH3=_!WN.M~> +!%*6sJH16$nGiUi!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!G2=_s+13$s7-*h!.Y~> +!G2>@s+(0$!5&:4rr@Q~> +!G2>es+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!DNQFs+13$s7-*h!.Y~> +!DNR's+(0$!5&:4rr@Q~> +!DNRLs+(0$!1*Zdrr@Q~> +!G2=_s+13$s7-*h!.Y~> +!G2>@s+(0$!5&:4rr@Q~> +!G2>es+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@fUs+(0$!5&:4rr@Q~> +!@@g%s+(0$!1*Zdrr@Q~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@g%s+(0$!5/Bdrr<%L~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!@@ets+13$s7-*h!.Y~> +!%*6sJH16$mf7k~> +!%*6sJH16$mf7k~> +!%*6sJH16$mf7k~> +QmN1@&JZ<1,pjui/hAT*!.b.1!.Y~> +QmN1@'cJ;G/MAh:3&W^H!.b.1!.Y~> +QmN1@',_rA/1rY72` +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/doc/img/edje-animations.png b/doc/img/edje-animations.png new file mode 100644 index 0000000000000000000000000000000000000000..f54518ffa37cf541a033f6d8714b45fc0b8864aa GIT binary patch literal 1621 zcmeAS@N?(olHy`uVBq!ia0y~yV4MuZ1{_R4k-y)#%YYPfv6E*A2M5RPhyD+MT*(sG zh?3y^w370~qEv?Ty!_l$-Qwh;)YQDgcc0EX{QWG?_oF+{#(w+$z1{!mhYuf4 z``_EKWqbL@Q}>=`hksueySL=&r=zE<`(t-}+1V{_etKrV{j7BUeZSUs>)U*M6n*~x zyXgALx2?DD@A!GHefiGMuZ{iB-kH18`t#wL@6X1}s4RKbZG3;u%$eE7_H%!pQ;)4V zvps#@oS%oz%umZZcjko{=`rKWk(6`SDEtw0GzB)ZAY+ z^XI=akB#eR|NMF8eA>O)ma~4|I@3E-J+02<^WFazukU}KH@mX<8NYG=**{s&t{d;4 z|MTscGkfemch59W|7T%r{C~#JgP#Ac&sRLf`XuMN9K#>`w`IGxs@oKt-js9g9z#LW zDb_C<;ujXjIP@1W+736)?XB!{+V0+Be(*)-^et|=4R`ZwiWyypn=jG*lM`-Py50Kj z=V_O1`6>8i(irhBut=IE+VOHW55_hz(Z_;`Fj^W3B-QT}|XXmf5va#9o>1X!s z&HZ!gzx=uBes1o~yy<7tZqB(m@9w;tIemR)r#Jone0%%#d7S(U>zU>n7u+mgnkWXW P7#KWV{an^LB{Ts5FI(|J literal 0 HcmV?d00001 diff --git a/doc/img/edje-animations2.eps b/doc/img/edje-animations2.eps new file mode 100644 index 0000000..02b7111 --- /dev/null +++ b/doc/img/edje-animations2.eps @@ -0,0 +1,944 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: edje-animations2.eps +%%CreationDate: Thu Aug 4 20:03:58 2011 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 413 317 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 302 translate +398 -302 scale +% Image geometry +398 302 8 +% Transformation matrix +[ 398 0 0 302 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 398 string def +/gstr 398 string def +/bstr 398 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 15701 ASCII Bytes +colorimage +JH16$JH59AJ,~> +JH16$JH59AJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH5WKJcC<$p]#a~> +JH5WKJcG]KJH5QIJ,~> +JH16$JH59AJ,~> +JH16$JH59AJ,~> +JH16$JH59AJ,~> +JH16$JH59AJ,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/doc/img/edje-animations2.png b/doc/img/edje-animations2.png new file mode 100644 index 0000000000000000000000000000000000000000..c1482b5061d82589ce019edd0e240ebf45886b50 GIT binary patch literal 1130 zcmeAS@N?(olHy`uVBq!ia0y~yVC(~8Jq{+Ih*(w9Q6R-!?Bp53!NGC+q5lIQSF*%4 zq9iy!t)x7$D3u{SFF!X`w>Y^dH8rm|BfsQ5^L{&^mcO1Zjv*Cu-d@?r+hD-JeDJ_O z>vq0VCLSlf%Y}D*>}M?4ll`5+uJ~Qtfz!r(#qZ@9HmHRF{)M45^s&_RhwvI{^X?7jOPB{q?^;G;yY{;BpQ{fe)LfzqU=k zStc=|WMasRZ$QH+``&rS&+IyO-K}x|+~;S0RY-5Uni{+RpYio|6B+6w)_>lWenG~# zI9FTq1Fy{SGh5%QrRCPQL<4Q|f4J0of?|Y2TLPnG6Ke{G*eHjxFnE2D`@`41Rd(rmaoUzxxbBLWkuBbP0l+XkKBVdIO literal 0 HcmV?d00001 diff --git a/doc/img/edje-box-example.eps b/doc/img/edje-box-example.eps new file mode 100644 index 0000000..aeccebc --- /dev/null +++ b/doc/img/edje-box-example.eps @@ -0,0 +1,7202 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (edje-box-example.eps) +%%CreationDate: (2011-08-02T16:56:18-03:00) +%%BoundingBox: -0 -0 300 300 +%%HiResBoundingBox: 0 0 300.083 300 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 300 300 +userdict begin +DisplayImage +0 0 +300.083 300.083 +12 +300 300 +0 +0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080000000000000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080000000000000000000000000000000050505131313303030 +6B6B6B808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +000000000000000000000000000000000000000000000000000000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000000000000000000000000000000000 +000000040404656565808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +000000000000000000000000000000000000000000000000000000000000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080727272 +5555551919190000001F1F1F808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080000000000000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080000000000000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080000000000000808080808080808080 +808080808080606060000000080808808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080000000000000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +8080808080808080806060600000001E1E1E8080808080808080808080808080806666662A2A2A +1414140505051414142A2A2A6666668080808080808080803333330000000F0F0F747474808080 +8080808080807474740F0F0F000000333333808080808080808080808080808080808080808080 +808080808080808080000000000000808080808080808080808080808080808080808080808080 +8080808080803333330000000F0F0F7474748080808080808080807474740F0F0F000000333333 +8080808080808080806868683939391818180707070909091B1B1B4040407B7B7B808080808080 +8080808080808080800000000000008080804747471D1D1D0808082828285E5E5E8080807F7F7F +4747472121210707071A1A1A5B5B5B808080808080808080808080808080000000000000808080 +4646461E1E1E0707071A1A1A474747808080808080808080808080808080000000000000808080 +8080808080808080808080807272723333331A1A1A0707070D0D0D2020205151517F7F7F808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +8080808080807373735757571A1A1A000000454545808080808080808080808080434343010101 +0000000000000000000000000000000101014545458080808080807D7D7D1E1E1E0000001E1E1E +7D7D7D8080807D7D7D1E1E1E0000001E1E1E7D7D7D808080808080808080808080808080808080 +808080808080808080808080000000000000808080808080808080808080808080808080808080 +8080808080808080807D7D7D1E1E1E0000001E1E1E7D7D7D8080807D7D7D1E1E1E0000001E1E1E +7D7D7D8080808080808080800000000000000000000000000000000000000000001414147B7B7B +8080808080808080808080800000000000003D3D3D000000000000000000000000070707707070 +3A3A3A0000000000000000000000000101016C6C6C808080808080808080808080000000000000 +3C3C3C0000000000000000000000000000002D2D2D808080808080808080808080000000000000 +808080808080808080808080535353060606000000000000000000000000000000000000242424 +7E7E7E808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080000000000000 +0000000000000000000000000000000E0E0E5454547F7F7F808080808080808080656565010101 +0000002121215050507474744F4F4F1F1F1F0000000101016666668080808080807474740E0E0E +0000003333338080803333330000000E0E0E747474808080808080808080808080808080808080 +808080808080808080808080808080000000000000000000000000000000000000000000000000 +0000008080808080808080808080807474740E0E0E0000003333338080803333330000000E0E0E +7474748080808080808080808080801A1A1A4F4F4F6B6B6B7A7A7A6B6B6B505050121212000000 +3E3E3E8080808080808080808080800000000000000707073C3C3C6D6D6D5E5E5E1D1D1D000000 +0F0F0F0707073C3C3C6C6C6C5E5E5E1C1C1C000000484848808080808080808080808080000000 +0000000202022E2E2E6464646464642E2E2E0202020000005C5C5C808080808080808080000000 +0000008080808080808080806E6E6E0505050202024141415D5D5D7676766A6A6A4C4C4C0E0E0E +000000474747808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +000000000000000000000000000000000000020202333333727272808080808080808080292929 +0000002222228080808080808080808080808080801F1F1F0000002A2A2A808080808080808080 +666666040404000000262626000000040404656565808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000000000000000000000000000000000 +000000000000808080808080808080808080808080666666040404000000262626000000040404 +6565658080808080808080808080808080808080808080808080808080808080808080805F5F5F +0000001A1A1A8080808080808080808080800000000000003D3D3D808080808080808080595959 +0000000000003D3D3D808080808080808080585858000000252525808080808080808080808080 +0000000000003030308080808080808080808080802F2F2F000000252525808080808080808080 +0000000000008080808080808080802F2F2F000000454545808080808080808080808080808080 +5858580000001C1C1C808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +0000000000008080808080808080807878785D5D5D4141410808080404046A6A6A808080808080 +1313130000005151518080808080808080808080808080804F4F4F000000141414808080808080 +808080808080535353000000000000000000515151808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080808080 +808080808080808080808080808080808080808080808080808080535353000000000000000000 +5151518080808080808080808080808080808080806D6D6D3737371717170A0A0A000000000000 +0000000000000808088080808080808080808080800000000000006A6A6A808080808080808080 +7979790000000000006A6A6A808080808080808080797979000000050505808080808080808080 +808080000000000000585858808080808080808080808080575757000000111111808080808080 +808080000000000000808080808080808080171717000000010101010101010101010101000000 +000000000000000000060606808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080800000000000008080808080808080808080808080808080804141410000003B3B3B808080 +808080040404000000747474808080808080808080808080808080737373000000050505808080 +8080808080808080807878780B0B0B0000001111117D7D7D808080808080808080808080808080 +808080808080808080808080808080808080808080808080000000000000808080808080808080 +8080808080808080808080808080808080808080808080808080808080807878780B0B0B000000 +1111117D7D7D808080808080808080808080808080636363040404000000000000000000000000 +000000000000000000000000808080808080808080808080000000000000808080808080808080 +808080808080000000000000808080808080808080808080808080000000000000808080808080 +808080808080000000000000767676808080808080808080808080757575000000040404808080 +808080808080000000000000808080808080808080050505000000000000000000000000000000 +000000000000000000000000000000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080800000000000008080808080808080808080808080808080807070700000000E0E0E +808080808080131313000000515151808080808080808080808080808080505050000000141414 +8080808080808080808080802B2B2B0000000000000000003A3A3A808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +8080808080808080808080808080808080808080808080808080808080808080802B2B2B000000 +0000000000003A3A3A8080808080808080808080808080801E1E1E0000001C1C1C626262767676 +7C7C7C808080707070000000000000808080808080808080808080000000000000808080808080 +808080808080808080000000000000808080808080808080808080808080000000000000808080 +808080808080808080000000000000585858808080808080808080808080585858000000111111 +8080808080808080800000000000008080808080808080801616160000005B5B5B808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080000000000000808080808080808080808080808080808080414141000000 +131313808080808080292929000000222222808080808080808080808080808080202020000000 +2A2A2A8080808080808080804B4B4B000000060606505050020202000000575757808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +8080808080808080808080808080808080808080808080808080808080808080804B4B4B000000 +060606505050020202000000575757808080808080808080808080060606000000696969808080 +808080808080808080343434000000000000808080808080808080808080000000000000808080 +808080808080808080808080000000000000808080808080808080808080808080000000000000 +808080808080808080808080000000000000313131808080808080808080808080303030000000 +2525258080808080808080800000000000008080808080808080803030300000001414147D7D7D +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080800000000000008080808080808080807878785E5E5E424242080808 +000000343434808080808080646464010101000000222222515151747474505050212121000000 +0101016666668080808080806868680404040000005454548080804747470000000707076E6E6E +808080808080808080808080808080808080808080808080808080808080808080000000000000 +808080808080808080808080808080808080808080808080808080808080808080686868040404 +0000005454548080804747470000000707076E6E6E8080808080808080801515150000002A2A2A +6565657777775A5A5A353535030303000000000000808080808080808080808080000000000000 +808080808080808080808080808080000000000000808080808080808080808080808080000000 +0000008080808080808080808080800000000000000303032F2F2F6565656565652F2F2F030303 +0000005C5C5C8080808080808080800000000000008080808080808080806F6F6F080808000000 +1F1F1F4343436262627A7A7A717171636363414141151515808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080000000000000000000000000000000000000000000000000 +000000171717797979808080808080808080414141010101000000000000000000000000000000 +0101014343438080808080807A7A7A131313000000333333808080808080808080292929000000 +1717177B7B7B808080808080808080808080808080808080808080808080808080808080000000 +0000000000000000000000000000000000000000000000000000008080808080807A7A7A131313 +0000003333338080808080808080802929290000001717177B7B7B8080808080804F4F4F000000 +000000000000000000000000000000454545000000000000808080808080808080808080000000 +000000808080808080808080808080808080000000000000808080808080808080808080808080 +0000000000008080808080808080808080800000000000003B3B3B000000000000000000000000 +0000002D2D2D8080808080808080808080800000000000008080808080808080808080805B5B5B +0A0A0A000000000000000000000000000000000000000000000000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080800000000000000000000000000000000202020F0F0F +2020204E4E4E7C7C7C808080808080808080808080808080646464292929131313040404131313 +2929296565658080808080808080802F2F2F0000001616167B7B7B808080808080808080787878 +121212000000313131808080808080808080808080808080808080808080808080808080808080 +0000000000000000000000000000000000000000000000000000000000008080808080802F2F2F +0000001616167B7B7B808080808080808080787878121212000000313131808080808080808080 +6262623939391111110E0E0E272727555555808080000000000000808080808080808080808080 +000000000000808080808080808080808080808080000000000000808080808080808080808080 +8080800000000000008080808080808080808080800000000000008080804444441D1D1D060606 +1A1A1A474747808080808080808080808080808080000000000000808080808080808080808080 +8080807979794141412121210F0F0F0303030E0E0E1D1D1D3F3F3F6A6A6A808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080000000000000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080000000000000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080808080 +808080000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000008080808080800A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400008080808080801E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000808080808080320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +808080808080000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000008080808080800A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080 +808080140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400008080808080801E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000808080808080320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080808080808080000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000008080808080800A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +808080808080140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400008080808080801E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080 +808080280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000808080808080320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080808080808080000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000008080808080800A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A0000808080808080140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400008080808080801E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +808080808080280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000808080808080320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080808080808080000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000008080808080800A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A0000808080808080140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400008080808080801E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E0000808080808080280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000808080808080320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080808080808080000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000008080808080800A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A0000808080808080140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400001400008080808080801E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E0000808080808080280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000808080808080320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080808080808080000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000808080808080 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A0000808080808080140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400001400001400008080808080801E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E0000808080808080280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000808080808080320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080808080808080000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000808080 +8080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A0000808080808080140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000808080808080 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E0000808080808080280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000808080808080320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080808080808080000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +8080808080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A0000808080808080140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000808080 +8080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E0000808080808080280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000808080808080 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080808080808080000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000008080808080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A0000808080808080140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +8080808080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E0000808080808080280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000808080 +808080320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080808080808080000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000008080808080800A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400008080808080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E0000808080808080280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +808080808080320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080808080808080000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000008080808080800A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400008080808080801E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000808080808080320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080808080808080 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000008080808080800A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400008080808080801E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000808080808080320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080808080 +808080000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000008080808080800A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400008080808080801E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000808080808080320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +808080808080000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000008080808080800A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080 +808080140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400008080808080801E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000808080808080320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080808080808080000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000008080808080800A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +808080808080140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400008080808080801E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080 +808080280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000808080808080320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080808080808080000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000008080808080800A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A0000808080808080140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400008080808080801E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +808080808080280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000808080808080320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080808080808080000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000008080808080800A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A0000808080808080140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400008080808080801E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E0000808080808080280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000808080808080320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080808080808080000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000008080808080800A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A0000808080808080140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400001400008080808080801E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E0000808080808080280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000808080808080320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080808080808080000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000808080808080 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A0000808080808080140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400001400001400001400008080808080801E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E0000808080808080280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000808080808080320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080808080808080000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000808080 +8080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A0000808080808080140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000808080808080 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E0000808080808080280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000808080808080320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080808080808080000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +8080808080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A0000808080808080140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000808080 +8080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E0000808080808080280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000808080808080 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080808080808080000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000008080808080800A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A0000808080808080140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +8080808080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E0000808080808080280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000808080 +808080320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080808080808080000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000008080808080800A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400008080808080801E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E0000808080808080280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +808080808080320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080808080808080000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000008080808080800A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400008080808080801E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000808080808080320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080808080808080 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000008080808080800A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400008080808080801E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000808080808080320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080808080 +808080000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000008080808080800A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080808080 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400008080808080801E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000808080808080320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +808080808080000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000008080808080800A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000808080 +808080140000140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400008080808080801E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080808080 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000808080808080320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080808080808080000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000008080808080800A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +808080808080140000140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400008080808080801E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000808080 +808080280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000808080808080320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080000080000080000080000080000080000080000080000080000080000080000080 +000080000080808080808080000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000008080808080800A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A0000 +0A0000808080808080140000140000140000140000140000140000140000140000140000140000 +140000140000140000140000140000140000140000140000140000140000140000140000140000 +1400001400001400001400001400001400001400008080808080801E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +1E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0000 +808080808080280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000280000280000280000280000280000280000280000 +280000280000280000280000280000280000808080808080320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000320000 +320000320000320000320000320000320000320000320000320000320000320000320000808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +8080808080808080808080808080808080808080808080803C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080 +808080460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000808080808080500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000808080808080 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +808080808080820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +8080808080808080808080808080808080808080808080808080803C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +808080808080460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000808080808080500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000808080 +8080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000808080808080820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +8080808080808080808080808080808080808080808080808080808080803C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C0000808080808080460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000808080808080500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +8080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000808080808080820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +8080808080808080808080808080808080808080808080808080808080808080803C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C0000808080808080460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000808080808080500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000008080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000808080808080820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +8080808080808080808080808080808080808080808080808080808080808080808080803C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C0000808080808080460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000808080808080500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000008080808080805A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000808080808080820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C0000808080808080460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000808080808080500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000008080808080805A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080 +808080640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000808080808080820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +8080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C0000808080808080460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000808080808080 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000008080808080805A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +808080808080640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000808080808080820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +8080808080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C0000808080808080460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000808080 +808080500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000008080808080805A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000808080808080 +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF808080808080640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000808080808080820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +8080808080808080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C0000808080808080460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +808080808080500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000008080808080805A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000808080 +8080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF808080808080640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000808080808080820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +8080808080808080808080803C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000808080808080500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000008080808080805A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +8080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF808080808080640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000808080808080820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +8080808080808080808080808080803C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000808080808080500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000008080808080805A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000808080808080820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +8080808080808080808080808080808080803C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000808080808080500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000005000008080808080805A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000808080808080 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +8080808080808080808080808080808080808080803C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000808080808080500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000005000005000008080808080805A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000808080 +808080820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +8080808080808080808080808080808080808080808080803C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080 +808080460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000808080808080500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000808080808080 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +808080808080820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +8080808080808080808080808080808080808080808080808080803C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +808080808080460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000808080808080500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000808080 +8080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000808080808080820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +8080808080808080808080808080808080808080808080808080808080803C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C0000808080808080460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000808080808080500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +8080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000808080808080820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +8080808080808080808080808080808080808080808080808080808080808080803C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C0000808080808080460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000808080808080500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000008080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000808080808080820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +8080808080808080808080808080808080808080808080808080808080808080808080803C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C0000808080808080460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000808080808080500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000008080808080805A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000808080808080820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C0000808080808080460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000808080808080500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000008080808080805A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080 +808080640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000808080808080820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +8080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C0000808080808080460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000808080808080 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000008080808080805A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00008080808080800000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +808080808080640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000808080808080820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +8080808080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C0000808080808080460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000808080 +808080500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000008080808080805A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000808080808080 +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF808080808080640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000808080808080820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +8080808080808080803C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C0000808080808080460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +808080808080500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000008080808080805A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000808080 +8080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF808080808080640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000808080808080820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +8080808080808080808080803C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000808080808080500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000008080808080805A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +8080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF808080808080640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000808080808080820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +8080808080808080808080808080803C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000808080808080500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000008080808080805A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000808080808080820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +8080808080808080808080808080808080803C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000808080808080500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000005000008080808080805A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000808080808080 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +8080808080808080808080808080808080808080803C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080808080 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000808080808080500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000005000005000005000005000005000005000005000005000005000008080808080805A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000808080 +808080820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +8080808080808080808080808080808080808080808080803C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000808080 +808080460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000808080808080500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000808080808080 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +808080808080820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +8080808080808080808080808080808080808080808080808080803C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +808080808080460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000808080808080500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000808080 +8080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000808080808080820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +8080808080808080808080808080808080808080808080808080808080803C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C0000808080808080460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000808080808080500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +8080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000808080808080820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +8080808080808080808080808080808080808080808080808080808080808080803C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000 +3C00003C0000808080808080460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000460000460000460000460000460000 +460000460000460000460000460000460000460000460000808080808080500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +500000500000500000500000500000500000500000500000500000500000500000500000500000 +5000008080808080805A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A00005A0000 +5A00005A00005A00005A00005A00005A00005A00008080808080800000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000640000640000640000640000640000640000640000640000640000640000 +640000640000640000808080808080820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000820000820000820000820000 +820000820000820000820000820000820000820000820000820000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +8080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +8080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +8080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +8080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080 +808080960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +8080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +808080808080960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000808080808080A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080 +808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +8080808080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C0000808080808080960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000808080808080A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080 +808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +8080808080808080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C0000808080808080960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000808080808080A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +8080808080808080808080808080808080808080808080808080800000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C0000808080808080960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000808080808080A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +8080808080808080808080808080808080808080808080808080808080800000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C0000808080808080960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000808080808080A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +8080808080808080808080808080808080808080808080808080808080808080800000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080 +8080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C0000808080808080960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000808080808080 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +8080808080808080808080808080808080808080808080808080808080808080808080800000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C0000808080808080960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000808080 +808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C0000808080808080960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080 +808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +8080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +8080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +8080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +8080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +8080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080 +808080960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +8080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +808080808080960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000808080808080A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080 +808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +8080808080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C0000808080808080960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000808080808080A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080 +808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +8080808080808080808080808080808080808080808080800000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C0000808080808080960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000808080808080A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +8080808080808080808080808080808080808080808080808080800000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C0000808080808080960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000808080808080A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +8080808080808080808080808080808080808080808080808080808080800000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080808080 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C0000808080808080960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000808080808080A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +8080808080808080808080808080808080808080808080808080808080808080800000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF808080 +8080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C0000808080808080960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000808080808080 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +8080808080808080808080808080808080808080808080808080808080808080808080800000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C0000808080808080960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000808080 +808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080808080 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C0000808080808080960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000808080 +808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +8080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +8080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +8080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +8080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080808080 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +8080808080808080808080808080800000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF8080808080808C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000 +8C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C00008C0000808080 +808080960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000960000960000960000960000960000960000960000960000 +960000960000960000960000960000808080808080A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000 +A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000A00000808080808080 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000AA0000 +AA0000AA0000AA0000AA0000808080808080B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000 +B40000B40000B40000B40000B40000B40000B40000B40000B40000B40000808080808080BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000BE0000 +BE0000BE0000BE0000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +008000008000008000008000008000008000008000008000008000008000008000008000008000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/edje-box-example.png b/doc/img/edje-box-example.png new file mode 100644 index 0000000000000000000000000000000000000000..75153b79f8112cbe0cef2be545d136d9d164eb8a GIT binary patch literal 4127 zcmds4c~Dd577tV(ZU{&r$|5QXtwJbJB~&1|ky-{(N(E#S!qO5J11d`hDTsoEh>B&G z)D;B*5iwu_0nB1$Qwsti3nnZD43RZ~Ece|6XWqYW>YMjwUMAnk%+3AI{m$?F&hMOi z`S>xU_Bx|=5C}y3==X=cAP@~J)zZ}juiVdLgn&Q)2z5su2GpOmz7h_2W$l^o{SqLM z^_x^n<1IH$4uR;C@&2UAOCXIDx}?qkP`(Pc4ud<+Ic#2 z_#&o#(~F(Fu9%;=-3HKvw(A?(*4szrTD@6yjb0DE zcN^G1Ah*1C|MtVZQlK#+6LQz$vzF@}Z`fl8sddTFYR5jj^yfFXj}Q#4+2lBW3r;r8 zr6h`ZxcR@{+(G6|bD9#yyKg2;=kvwbbpMXrt7z#$e=uIL&~KI|eV=8PHUMr}6b(VG zPdx?wfLpdYr}Qc{rguhU2B7vOtT-@rNtJ$l|ALe{`-dedHC`^A5wh}V5*}9EEaAD^ zG|#_vw+SDzY`yskd_eY*H))FHg{gjVab$V&SaGC4sc(6#43264ygve9aECSxg(X@F8DrilmZRR>4rZnh1jXM>okfUN-;6?JZI ztgF-^j;H<~D`=SRefVR=v76;9INC8^e`IkRF+wKMn5JBws--Ev<3%t$jlVhF`m4ql zZdXhk<40cdl{xfvETkE3{teQM!FIEfk)sEngm)CoWFNY;VT)bZ%hvQSv^JUy+&!9a z;ZY(5oOQO37soR6rItXA;@Q854!k5G(IF^xh5-#ut@Epo=qlMui64FS+a4c* zGMjZs$9ewsAsvQdH0s(@b8Fr0Epx-?L56&pvfV{9F z^C}SUVpVXIq{?Q?4%NgiO!igz)E>C-4{f7wA9#{naLe;cW2JE|plO^R z8*aOxrL#5nP)PKa`WM;s6(;rA1W}V_1Ps0FiF}-do5&|7dvUJFP|8m((ORg{KS?y0U-%0D#3(8%%TIMI9a}PnmpJQJzw%oI&zJuWYTqEiDF_ z7DzcCQ)U^YE*p2ea%r4|S2{j3aZ36Ko&|N^pcYGwVXNxC8Ed?$eN9wnYbejp#B;>y ziMQN3O1dX$Qq8>TfF@PCW}cakJ*tyDU!if)HCB}_)`kg8RFKk^Cn_AGTwaNKWTr|2 z+?U?Djkmv_XTj@7YNEDSM<6hbxx3onFPRtjIj5*4COQ~l z4p_YP<=A=oU_0Vyip8NgTFgtKn`VVa>Ao2D)7aG*Pb(s`;M%<@E>Ndy)Q`wBc8KLP zVo)rVltioImrSeC2Tk2^MD)PpkQbK>#sw?H^Fke3r8Ag zjS809;n2-wp#rPO+pINR1U00QzZ!Gxaglwf2hBVGxaNg-{+OWMEk;@jEwj{*ZCYkj zN7)EI;ZFIHvOjYMy{rU`((7sfNokeMxXvsiyY|rd9Dzy5p=Y^{IL?*2y(1Wv)Pgd- zOf#az*|M5>&SsH62^UK;1p6AGAJKqIe!6bFb|Uv&e_$fFkFsq#Z}bV=$yqV~rzb*j zmSbjrsWFh#0%L^N2qf-vKMCuXpRTcFtdT_L( z&?dNra}}9Ow$mPbQnUW|6)~-v;@U-=)=uWYE!kIV-!*JJK@<3=KhN+fWJl^Z)vw*I zy=jiRCZw$C>r3Bs`!F8uGGtAXpoY-b0_+sq4wjIeM0dtCgars}L)tUf>RWJ>STWg& zAmQTyg@m8CiYW+*HY4QMxf;1YTG8vyjMeK6t$feO#QAW0pML5$vu5NWm7WGtrW8vv zC(Xys+fYBYueYHd2Mnsi#!SE?)VDSU%1+S*0k;~%0|nQM*?j-`!AKHraWE3|%wnTN zC9B_^iwfv~7M`N_RgmY>WTKwijdZB{LtFox`haV#(kM}VHMw5h9h)gNwamR$7|QlS zUhhfynQnEt2bmUjO7X>PkRX?QeF=nq!uT3t6(ix`b{9=Oty*=TB#Zlef^iFdKB%D0 zgnO7Jw=lczos5cxoWfI?@Of6-p6Oz{@K-m!{xNhrs09S5O;BzvEVw0gX?9el2_P$> zqp)Kl)4vM~dTOAqIQRK)lXi~Sa7=P4~>Cj3lYl50nKq-1&V?@Mm#eS$` zfhGl?7GR`L%f}Shrdgu=Twwjr)m;csCRq#C4M;^qWL{nd+$d~YW&rErcFbcKEa#H% z6RhB}WqFd|^0}#Z)nNY&J|H6LugxXM2x5+q)43vTam>)usjbu`m^Caa?_xudd-FET+scTRB zT=fq6sAIpZ?Xs@>otZ6kG9OG0neXB|45Z{_g5$zP3fw_o>qh!&#%SYh!RQ3$*D4^m z;32MIWWSg?*S%j%Z(c`3ZkNU!iM9eF{p zw#tbXO6elrSBXH2J-VPC$wj8UrLC zzLRNonvXBYlaN=HTgnVT{J%k@indz1=OlS{NjYBY z_$jhGw?>&0j(cDTQXnd}*Sna?9M~5RhWPvJXhH`3msH zg(+ix(Nv_{8rP_U|K;UT*%#Gts(DE#Kt-J#DCF1Us!Ds?g%9|ggrQ@hu8LQq(w?IC z-C_TWxVl7|4}zOa0F6Y8&xzx6>hs^(yHdlIrW&rtKL4fkUoW+b0JArA)Q!FU2Kast OIeO&S;hKY|GyVytnv@;@ literal 0 HcmV?d00001 diff --git a/doc/img/edje-box2-example.eps b/doc/img/edje-box2-example.eps new file mode 100644 index 0000000..c7af68c --- /dev/null +++ b/doc/img/edje-box2-example.eps @@ -0,0 +1,23909 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (edje-box2-example.eps) +%%CreationDate: (2011-08-02T16:56:25-03:00) +%%BoundingBox: -0 -0 640 480 +%%HiResBoundingBox: 0 0 640.178 480 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 640 480 +userdict begin +DisplayImage +0 0 +640.178 480.133 +12 +640 480 +0 +0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000000000000000 +0000000505051313133030306B6B6B808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080000000000000000000000000000000000000000000000000000000000000 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080806C6C6C454545212121101010 +0404040F0F0F2020205050507D7D7D808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +000000000000000000000000000000000000000000040404656565808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000000000000000000000000000000000 +000000000000000000808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +000000000000808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +0000000000000000000000000000000000000000001B1B1B7A7A7A808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080800000000000008080808080808080807272725555551919190000001F1F1F808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080000000000000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080801313133939395D5D5D6E6E6E7A7A7A6161613B3B3B050505000000343434808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080000000000000808080808080808080808080808080606060 +000000080808808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +000000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080808080808080808080803D3D3D +000000111111808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080000000000000808080808080808080 +8080808080806060600000001E1E1E8080808080808080808080808080806666662A2A2A141414 +0505051414142A2A2A6666668080808080808080803333330000000F0F0F747474808080808080 +8080807474740F0F0F000000333333808080808080808080808080808080808080808080808080 +808080808080000000000000808080808080808080808080808080808080808080808080808080 +8080803333330000000F0F0F7474748080808080808080807474740F0F0F000000333333808080 +8080808080806868683939391818180707070909091B1B1B4040407B7B7B808080808080808080 +8080808080800000000000008080804747471D1D1D0808082828285E5E5E8080807F7F7F474747 +2121210707071A1A1A5B5B5B808080808080808080808080808080000000000000808080464646 +1E1E1E0707071A1A1A474747808080808080808080808080808080000000000000808080808080 +8080808080808080807272723333331A1A1A0707070D0D0D2020205151517F7F7F808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080727272000000090909808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080000000000000 +8080808080808080807373735757571A1A1A000000454545808080808080808080808080434343 +0101010000000000000000000000000000000101014545458080808080807D7D7D1E1E1E000000 +1E1E1E7D7D7D8080807D7D7D1E1E1E0000001E1E1E7D7D7D808080808080808080808080808080 +808080808080808080808080808080000000000000808080808080808080808080808080808080 +8080808080808080808080807D7D7D1E1E1E0000001E1E1E7D7D7D8080807D7D7D1E1E1E000000 +1E1E1E7D7D7D808080808080808080000000000000000000000000000000000000000000141414 +7B7B7B8080808080808080808080800000000000003D3D3D000000000000000000000000070707 +7070703A3A3A0000000000000000000000000101016C6C6C808080808080808080808080000000 +0000003C3C3C0000000000000000000000000000002D2D2D808080808080808080808080000000 +000000808080808080808080808080535353060606000000000000000000000000000000000000 +2424247E7E7E808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080585858000000222222808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080800000000000000000000000000000000000000000000E0E0E5454547F7F7F808080808080 +8080806565650101010000002121215050507474744F4F4F1F1F1F000000010101666666808080 +8080807474740E0E0E0000003333338080803333330000000E0E0E747474808080808080808080 +808080808080808080808080808080808080808080808080000000000000000000000000000000 +0000000000000000000000008080808080808080808080807474740E0E0E000000333333808080 +3333330000000E0E0E7474748080808080808080808080801A1A1A4F4F4F6B6B6B7A7A7A6B6B6B +5050501212120000003E3E3E8080808080808080808080800000000000000707073C3C3C6D6D6D +5E5E5E1D1D1D0000000F0F0F0707073C3C3C6C6C6C5E5E5E1C1C1C000000484848808080808080 +8080808080800000000000000202022E2E2E6464646464642E2E2E0202020000005C5C5C808080 +8080808080800000000000008080808080808080806E6E6E0505050202024141415D5D5D767676 +6A6A6A4C4C4C0E0E0E000000474747808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080757575111111000000606060808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080000000000000000000000000000000000000000000020202333333 +7272728080808080808080802929290000002222228080808080808080808080808080801F1F1F +0000002A2A2A808080808080808080666666040404000000262626000000040404656565808080 +808080808080808080808080808080808080808080808080808080808080808080000000000000 +000000000000000000000000000000000000000000808080808080808080808080808080666666 +040404000000262626000000040404656565808080808080808080808080808080808080808080 +8080808080808080808080805F5F5F0000001A1A1A808080808080808080808080000000000000 +3D3D3D8080808080808080805959590000000000003D3D3D808080808080808080585858000000 +2525258080808080808080808080800000000000003030308080808080808080808080802F2F2F +0000002525258080808080808080800000000000008080808080808080802F2F2F000000454545 +8080808080808080808080808080805858580000001C1C1C808080808080808080808080808080 +8080808080808080808080808080808080808080808080808080807A7A7A1D1D1D000000333333 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080787878 +5D5D5D4141410808080404046A6A6A808080808080131313000000515151808080808080808080 +8080808080804F4F4F000000141414808080808080808080808080535353000000000000000000 +515151808080808080808080808080808080808080808080808080808080808080808080808080 +808080000000000000808080808080808080808080808080808080808080808080808080808080 +808080808080808080535353000000000000000000515151808080808080808080808080808080 +8080806D6D6D3737371717170A0A0A000000000000000000000000080808808080808080808080 +8080800000000000006A6A6A8080808080808080807979790000000000006A6A6A808080808080 +808080797979000000050505808080808080808080808080000000000000585858808080808080 +808080808080575757000000111111808080808080808080000000000000808080808080808080 +171717000000010101010101010101010101000000000000000000000000060606808080808080 +8080808080808080808080808080808080808080808080808080808080808080807676761B1B1B +0000002525257D7D7D808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +8080808080808080808080808080804141410000003B3B3B808080808080040404000000747474 +808080808080808080808080808080737373000000050505808080808080808080808080787878 +0B0B0B0000001111117D7D7D808080808080808080808080808080808080808080808080808080 +808080808080808080808080000000000000808080808080808080808080808080808080808080 +8080808080808080808080808080808080807878780B0B0B0000001111117D7D7D808080808080 +808080808080808080636363040404000000000000000000000000000000000000000000000000 +808080808080808080808080000000000000808080808080808080808080808080000000000000 +808080808080808080808080808080000000000000808080808080808080808080000000000000 +767676808080808080808080808080757575000000040404808080808080808080000000000000 +808080808080808080050505000000000000000000000000000000000000000000000000000000 +000000808080808080808080808080808080808080808080808080808080808080808080808080 +6E6E6E1212120000002323237B7B7B808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +0000000000008080808080808080808080808080808080807070700000000E0E0E808080808080 +131313000000515151808080808080808080808080808080505050000000141414808080808080 +8080808080802B2B2B0000000000000000003A3A3A808080808080808080808080808080808080 +808080808080808080808080808080808080808080000000000000808080808080808080808080 +8080808080808080808080808080808080808080808080808080802B2B2B000000000000000000 +3A3A3A8080808080808080808080808080801E1E1E0000001C1C1C6262627676767C7C7C808080 +707070000000000000808080808080808080808080000000000000808080808080808080808080 +808080000000000000808080808080808080808080808080000000000000808080808080808080 +808080000000000000585858808080808080808080808080585858000000111111808080808080 +8080800000000000008080808080808080801616160000005B5B5B808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080806464640A0A0A0000002525257C7C7C808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080000000000000808080808080808080808080808080808080414141000000 +131313808080808080292929000000222222808080808080808080808080808080202020000000 +2A2A2A8080808080808080804B4B4B000000060606505050020202000000575757808080808080 +808080808080808080808080808080808080808080808080808080808080000000000000808080 +8080808080808080808080808080808080808080808080808080808080808080804B4B4B000000 +060606505050020202000000575757808080808080808080808080060606000000696969808080 +808080808080808080343434000000000000808080808080808080808080000000000000808080 +808080808080808080808080000000000000808080808080808080808080808080000000000000 +808080808080808080808080000000000000313131808080808080808080808080303030000000 +2525258080808080808080800000000000008080808080808080803030300000001414147D7D7D +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080805757570404040000002D2D2D7D7D7D808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +8080808080808080808080808080808080800000000000008080808080808080807878785E5E5E +424242080808000000343434808080808080646464010101000000222222515151747474505050 +212121000000010101666666808080808080686868040404000000545454808080474747000000 +0707076E6E6E808080808080808080808080808080808080808080808080808080808080808080 +000000000000808080808080808080808080808080808080808080808080808080808080808080 +6868680404040000005454548080804747470000000707076E6E6E808080808080808080151515 +0000002A2A2A6565657777775A5A5A353535030303000000000000808080808080808080808080 +000000000000808080808080808080808080808080000000000000808080808080808080808080 +8080800000000000008080808080808080808080800000000000000303032F2F2F656565656565 +2F2F2F0303030000005C5C5C8080808080808080800000000000008080808080808080806F6F6F +0808080000001F1F1F4343436262627A7A7A717171636363414141151515808080808080808080 +8080808080808080808080808080808080804848480101010000003838387F7F7F808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000000000000000 +000000000000000000000000000000171717797979808080808080808080414141010101000000 +0000000000000000000000000101014343438080808080807A7A7A131313000000333333808080 +8080808080802929290000001717177B7B7B808080808080808080808080808080808080808080 +808080808080808080000000000000000000000000000000000000000000000000000000000000 +8080808080807A7A7A1313130000003333338080808080808080802929290000001717177B7B7B +8080808080804F4F4F000000000000000000000000000000000000454545000000000000808080 +808080808080808080000000000000808080808080808080808080808080000000000000808080 +8080808080808080808080800000000000008080808080808080808080800000000000003B3B3B +0000000000000000000000000000002D2D2D808080808080808080808080000000000000808080 +8080808080808080805B5B5B0A0A0A000000000000000000000000000000000000000000000000 +808080808080808080808080808080808080808080808080808080000000000000000000000000 +000000000000000000000000000000000000757575808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +0000000000000000000000000202020F0F0F2020204E4E4E7C7C7C808080808080808080808080 +8080806464642929291313130404041313132929296565658080808080808080802F2F2F000000 +1616167B7B7B808080808080808080787878121212000000313131808080808080808080808080 +808080808080808080808080808080808080000000000000000000000000000000000000000000 +0000000000000000008080808080802F2F2F0000001616167B7B7B808080808080808080787878 +1212120000003131318080808080808080806262623939391111110E0E0E272727555555808080 +000000000000808080808080808080808080000000000000808080808080808080808080808080 +000000000000808080808080808080808080808080000000000000808080808080808080808080 +0000000000008080804444441D1D1D0606061A1A1A474747808080808080808080808080808080 +0000000000008080808080808080808080808080807979794141412121210F0F0F0303030E0E0E +1D1D1D3F3F3F6A6A6A808080808080808080808080808080808080808080808080808080000000 +000000000000000000000000000000000000000000000000000000757575808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080000000000000808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080000000000000808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080000000000000808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080000000 +000000808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF00808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF00808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF00808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF00808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808080808080808000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF00808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808080808000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF00808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF00808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808080808080808000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF00808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808080808000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF00 +00FF00808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808000FF0000FF0000FF0000FF0000FF0000FF00 +00FF0000FF0000FF0000FF00808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +80808080808080808080808080808080808080808080808080808080808000FF0000FF0000FF00 +00FF0000FF0000FF0000FF0000FF0000FF0000FF00808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040FF4040 +FF4040FF4040808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080808080808080808080808080808080 +808080808080808080808080808080808080808080808080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/edje-box2-example.png b/doc/img/edje-box2-example.png new file mode 100644 index 0000000000000000000000000000000000000000..3182c9ec9ecf5fd8007156034aacb799d8a3dc1f GIT binary patch literal 6075 zcmds5X;f3!8odmPihx54QbDXfYn3wiC?InyDk^Oh0T~mbsAvKKWGZ8*1Gc~`wN;QH zQm{+~5(vaVLWYWhG6f+dKnRFTk`TfaLKxq@fv)vd*YbxxSL=IcE%qgM-FwdWowN7; zzU2E;FbA~_A8h~tK<)Uk!>0j2F&+REUTjhX?+A9Mjf0o9=NuglFU!YzcWF0xXMNBy zj}QP*-2(k7wDRK?06@#@_~9>IzUdP2M^gCx%XJez=mOGdw4*HBbIS*1Mtv=wyAoZl z1=;`O#No#VWR}J9x7#tFcmHzLeb>WHjt2q^ayLg8=6-Nwgs@Q1)g-N*Z{BN>9+zK~ z9%-|K47+IS*KEPH$egy|hQ-?Yu9c4^6)=>eq_PC?60fYd4a9YS4aP2Wlp?5n3|XiK zu6?WxL*|KQ9%8*snBd35oBm&rY1V$(_#?pIF*X4}p6?7Y^Jgs1@B$f&vlIPwDSB9@ zf{IQMQz1Vyyz6p)=0j;uw3sICN%tj6#u_dWFE-&!(VWkG=rOX%!K|3cXL~`Y(Xd+> zuh9^4O1#Jzz9Ds#*kDNg>aOwGN7vWa>4Y>M0D>FePOb}h_Nu4n}&!Q$xWln zhB5*{==95qo$2(`zt&c(oN$h1Bkc}h+2ntnVHVI;VXt8`-D0m%BI|)i@WZ(9h!U)W zUhMR92+> z-(KWKK+w8onMe#}BrgL)xm+q<3asfU^R4?qm-@}b%O^=%SSZ-Ixx(j4+x96Ne{mg( z4hnJnfDd+2!u7$zr)qm+rTmEAST|K$5TSo*agXG0jpU2Ty>as*vd=eZpp-c`U(|h zL@U$T&5xF|Z0C!^Q_mb0mDTNt9xbb57dq#|GCipzw3ZafDz#w1$v&}?b~m5cuukHI zhE#)j=-j}=yQXgW>K71J!g*}3ZZYtqy}I@`Xt)#4Kl^EqBTBuzM~IuU78aK`TMCP# z)a|j|ZivXiJ8lRWNGOO^b5kc4E4s9!>-Xi~yHdX|WBCVmV!{noEkp0h(jg@JEY`pR z?_fRC;hSPJ(=pPPe=^H9w(;%(-`eEPuB@N8!VdOb-wG=LmR2${XPo_mcp!-&CV_E7 z!M9^ughDxqZt9wK&;(Dl5a0CO&_Wcrqv9gIu2Ip88UI~HukoHm$WUYYhyG!WYqY$B zeqW>I5+6J9M9U{;;>k4)+u0Y_G&t(dES*|o|=+zpIku@n9pI!$F$-ibE zj<%RyN!vLoCpx8Y8kHvow?e)jE20P$U0;yTKig04i4vBOdpxVI4A$S#*Z)@V6sLwi zSS>e%Q6l6rpw$rKV+4iy_oD=bIIR+%L=uGwTS&D@8EcUO(j8T%h$H_x*`y7-Zyh-~ z@XVC#J>lKYxb!^dNRnoI*0%kZKt4jGjILoZh!2Mb(3%x-LrF&T*_TO19NTd#arIQQ zmAKfW-jdji^foDy(79QTg6cZ^^)EJz;DSpchlZvKlLUcOcT+~GZ_XbJ; zfyES92tJ~1XvTd@h{!%lxWBxz$%KGH*)Rfh5xJE#ny{>=8cig3Oqvh&Cz~{nQ`aGX z4bnx%I~DE9zNm=C7fbKr>WZdI28pITk8~GDtUg|#>`77~{vgg&D()v#zD(4|SLP7p zBXuiR$Cr;M_{7Nu(|qD0#jP*PGSlO>@BY>iC02>>lm8WTv?;viYQh> zXWjefh5Fn3oWpw}hchF3sx$}munQA)df1qdu|ifSJ1u6$P&Y+6}iodv|Pjykw;1AbI)QgY_dBeZgEZ`j7}lQSlQM!7g1)C zPdbqf9Gy5me%S1Goz3bbYFM&uplLp>Y_|_JPdIZmVdwx&RT6E-@;X6tUM(YD%S04o zdfbDe!E6Cbg3|@i^dRTU|D4T5d-z{?W-)v(q}gH^{FG3NF;CI^D#QXkMW^lGBKV3; z3aT*NA2M*uVMpY^t=$)_&4*pty9Q)a!>la3g`4^Kp6Z?o)W5}2EguHHca4wchek4)Dxm=KD;)= zK|K$4qdmGeFV_*Oz7^rVXNKTcp6yBVzH&S>gAB`d@%wp4bN@pbA*bp#IrS^<=q1s) zfTJ#AjG)gS>=qi*jPypSVd?^k&249t1cf+X1T%Ndf7E40!1uIKqQY|n4R!{Ot(SVO zK@Lnh>L6VT*Hnb1rw;9SF^36Z`4u{9yH*stmz{f(_~B~(gHJI@FUnyJE|K0=M}(-N zCg)G@oS+X`Trr}&%1JV$6liW-Ua8pVSgE{zKX;IqP${2`zhMT4A5f?6L6x1U`hzQY+ae;QXZ-FDJ$ak{OE@Y&^#@z}ts!Bj6y zRqjmUJWbj79we;HA zt(Ar^t9RZ#3^CZQ7IuL@H^;Dw@|tmF=cWi0kKCy@E%H!}5=K3g(AlmyhZBGsUR==z zvl3M}8{EWiE?C35L(jnO>FElIo@z4hjhSk?^9yP27uZqPwAtTY6tn!`9hXamaHTJ_ z%gct{x=&NUo}MRJ3oysI_xARl*1{?7^nm(&9&af)Q(5)T-!NcT*8mGzGmDDGmUk7_ z0>I9z!2c>9>SainnJ_AU#9t6g<$p~x0>8?nHv&oku<6S;#B6bI)C*WXPZV0M0M6pS z{bD?L{ch)bhAn>UIzInX%FMh2N*e*-3uT2j!|S&8%)F6M3LjQ?5KMXZ4Q(WN*|qLH z!)a~Br|gjmUS@M%51Gej&np5<#*>Z4V62;!-w@|EDx4Smk@1f;Z#T)CF8Zd=gF!Nn z{VC&Q@3-S4$QR&fj-1!YN&vGZ{k@d@p{$RA_y7WbOe_|gtJ^;pJ@hO|4F-@??`OFG zjblQo0v+z6a4Z(f2;P>6A-AJQ$x6mL@79c0ca#T~TZ4W8;QjRXY8%ur0JK){7Qs<_ z_EQS~Oi}wk)sxlVj?}L+Wr*y6*%>kqMe?jwK%Rd)TYOU+eckh*y@D2%{Mnz5+Wy@} zC12$W+$xQJeYcapF15e%{vX@O#}u`rv{lSf|6V4)Z`JX2@g%SO5@oyz;vnYT>g;v; d`_KF1dO2u?lq(M+p<40hJ@rRIC{|(rqjUWI3 literal 0 HcmV?d00001 diff --git a/doc/img/edje-color-class-example.eps b/doc/img/edje-color-class-example.eps new file mode 100644 index 0000000..6dc65de --- /dev/null +++ b/doc/img/edje-color-class-example.eps @@ -0,0 +1,1330 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: edje-color-class-example.eps +%%CreationDate: Fri Aug 5 11:38:26 2011 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 416 415 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 399.98900386828211 translate +400.98897637795284 -399.98900386828211 scale +% Image geometry +401 400 8 +% Transformation matrix +[ 401 0 0 400 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 401 string def +/gstr 401 string def +/bstr 401 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 28884 ASCII Bytes +colorimage +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JH34\JUk:]!!%N~> +JcE:\JUk:]!!%N~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +p&Omfnc/q#&/cZR?\H,ji;`ZSp]'4QkPsNAqu6XtqZ$VVmf*8uqZ$UtnG`OO"8i-""6T"Np](:V +m/I&mp]1*hnGigt$PFF;;gc@To)JRek5Y/UJ,~> +JH16$JH50>J,~> +pAamfo)B!imcE6AT6`d)huNZSpAj4Qk5aNAqZ$Voqu6Y8mJm6Tqu6Yon,NJ+qu$Hpq\\]#q#:?2 +li7$Xq#C*hnc&mkoBbJXX+EP?nc8RejoG2V!!%N~> +o`4jgkl:buF4K=Nq#L6jhuN$AhuN`U!*Asr!-[l3!(Zhb!*Aak!9X%V!9WbMp&G(Omf*8mp&Osh +kPtYhA)m7^q#KXYp&KU~> +JH16$JH50>J,~> +p&Fjgl2LhMM^dZdq>^6ji;`$Ai;``U!2oYm!/U+E!4M_'!2oAf!>tb2rrN$7mf<(]!64F,!20&c +q>faZ!qr'%o`4gfkQ(AW!!%N~> +o`4jgjo>EppuVPO!;ZZQ!9sOA!<)oum0EFe!7169!2]Jk!=/#_rr@TE!!%Qs7lZYs7QGC~> +JH16$JH50>J,~> +p&FjgkPkV^QNlOOq>^6ji;`$Ai;``U!>5#$rrN'Nnc/Ylq>UKg&b5o%IJEgBII@10rrN'1n,NIj +me6\W!9X:^qh=_Dq>]XYp\t3nJ,~> +oDndgjT#;qbi\s#!;c`Q!:'UA!<)otXSDhs$i0Gp!U9m`!!$*mrrN$2pAb3RnGi.]!%.48!6"L0 +qu>^W!BU2Ss7cTYs7QGC~> +JH16$JH50>J,~> +o`+dgjo5AG1$/K2s7u`Qs69UAs8;ou;?$Fl!V$?c!!*f.p\t5koDemnlM1A[rYk8+p&>$Dn,NGL +o`+dgjSo8!!VcZis60OXrr<%L~> +oDndgj8]2_[cd\c!;c`Q!:'UA!;uis:\atj9_A>b1A:bL)X[1s!4):u!*\mloDemYnc&T5oDndg +irB* +JH16$JH50>J,~> +o`+dgjSo8W8EU!Js7u`Qs69UAs82isY5/(tZ1J"rbP2#;j:V"a!)3+d!2K#`p&>'k&b,i$L\1WD +!9=([`W>l8q#BRYp\t3nJ,~> +oDndgirB)]b38m#!;c`Q!:'UA!;uitp(7$"!4DP#!/pON!4h_$!($;Y!=/Pms7?9kT^i$^,kM*6 +s5F"YDYa>-!9sOW!.Y~> +JH16$JH50>J,~> +o`+dgj8T/W1["i6s7u`Qs69UAs82it#jqKg!WGU_!!%'6rrN*fo)Jd(pAY0f!q?9_rr??p!!(^E +s8)fUrrA,U!;QTY!;HKn!.Y~> +oDndgiW&u_hs(19!;c`Q!:'UA!;lcr`;'B6"S2?f!SmhO!!$g+rrD!L!!&PZs7?9k6Lt-Vh"(OC +s5 +JH16$JH50>J,~> +o`+dgir9&S*pE\"s7u`Qs69UAs8)cs3WAmT!Vd)u!!+5>p\t5Wo)Je4rq69k@IX?irrB_&!!"57 +s8)fUrrN'Gq>g +oDndgi;`lno]lJO!;c`Q!:'UA!;c]qB__W.1\q%Or#te7!@IL2rr@98!!"55s7?9l#Q"&l!0?^O +qu>UT!$V4=p]0RYp&KU~> +JH16$JH50>J,~> +o`+dgiVrrB$L.Wds7u`Qs69UAs7u]qQ21F[anYo;!o3PM!S@_M!!%cGrrCdC!;-9lpB:'f!,qK/ +qZ,UT!8RDNq#BRYp\t3nJ,~> +mf3%^q#:Nmo&@ok4no!WBBoNl!;c`j!7CiA!9*qYq],D3!13Q^!-7f6!<^I8rrMs,o)JdFo)J:] +!5J.*!'ToRqu?Ekp\tEqp$L_F'_q_/_YaB.!9sOY!!3*"J,~> +JH16$JH50>J,~> +mK!%^p](L&$lh!'_#F00!1)mMq#C0jq#A_Aq#B:Q!<_ +mf3%^o)Aa?"o/,ui9UFrrB(i!!#mes763j@eB[$ +mfE"[qu?Eko)Aa["o83!./X&>!9sOY!!3*"J,~> +JH16$JH50>J,~> +mK!%^nc/\=q"k!kr>k2(q#C0jq#A_Aq#B7P!@Ia@rrN$5qu?aPrV-<:^%hXRZA_rrAP\ +!!*W-oDe[fq#Bmb!=ei#rrCXI!;QTY!;QTo!.Y~> +mf3%^nc&U4q#CCMli6_[qZ$ks763j +(%hM+Vt'ibs7cTarr@0:!!)-Ys7cTYs7cQprr@Q~> +JH16$JH50>J,~> +mK!%^nGiSFrVHNobNf0's7u`js3UiAs5*eVHMRR@hYdET#3bg]!QkQ9!!("6rrD?]rrMouo)SC^ +!9s+U!*AakqZ-EknGiQGqYpTq)>jL0s60OYs8N(L~> +mf3%^nG`KIq#CEFm/Qh\qZ$ +JH16$JH50>J,~> +mK!%^n,NH.qYpTq.-ps/s7u`js3UiAs5!_Ud/!\AK)P`MU\FchodB;1!@@a@rr@QFrr?p-!:p-i +,P;$:V=OZ`!;QTa!!#4Yrr@$9!;QTY!;QTo!.Y~> +mf3%^n,EA3q>^L\m/Qh\qZ$ +JH16$JH50>J,~> +mK!%^mf3@BqYpQ/li?h\q>gdQlq"k!nr>u#-rqHEmC[hB)O88eW`t/"CrrD!K!:p-i +GkM+<"S)'_qZ-EknGiP0q>UH&quHNlklCMYrr@Q~> +mf3%^n,EBfq>^NskjAEF!;c`j!7CiA!8[YTTD8Hg)"J+0!!,Oeo)Aab$MaZ'R/^.^!!(I>s7--i +/,&uC^[V=$s7cTarrDZd!!"VKs7cTYs7cQprr@Q~> +JH16$JH50>J,~> +mK!%^mf3>eqYpTo(@;+ss7u`js3UiAs4mYT?MXU&jUC\RrrKY2nc/[qo(i:eAcSh-rrN*LoDnI^ +!7UWA!'g#RqZ-EknGiOsq>UHBquHNlklCMYrr@Q~> +mf3%^n,EF^"Sr)uMXCH=!;c`j!7CiA!8RSS6MUT],kh9>&EE<\!2B8h!t"Js]_VU.8G)rP!!)N_ +rr@*0!;lfk!:g'hbkV5=')_e)!9sOY!!3*"J,~> +JH16$JH50>J,~> +mK!%^mf3@oq"k!jF6ru&s7u`js3UiAs4dSS]D;I,g%YLImMkZr!*o@""8*-(6Mg]^[IaIirrN'. +pAb2Pnc/Idq#Bja!&FBM!:9U`q#BRYq#C?oJ,~> +mf3%^mf*8Rq>^LTmJlq]qZ$lXj&(&It3"8DKgnGiQep\t48 +nGrIdp]0ja!292g!!`B$p]0RYp](?p!.Y~> +JH16$JH50>J,~> +mK!%^mJm7!qYpQ7m/Zq]q>g +mf3%^mf*9^O#qX4CY!;c`j!7CiA!8IMR\F9Iu=7H4ideEeB^Ae-4Iej$EL%YK@!!!c2!!#Oa +rrC[?!;lfk!:g'h +JH16$JH50>J,~> +mK!%^mJm68qYpTk"RZ9bs7u`js3UiAs4[MS7K2iW!2o;d!%dpF!'pM`!.aqG!-n/:q#:?Yqu6Z) +p](:AnGi@cq#Bja!2oYm!9F%Xq#BRYq#C?oJ,~> +mf3%^mf*9aq#CE5mf3%^qZ$ +JH16$JH50>J,~> +mK!%^mJm5hq>UFUmK!%^q>g +p]1'gp]0a^!6b0^N:pAamf!3uA# +!6"^5!&s`S!%%C?qu?EkoD\j=#l"B"B)M](!9sOW!.Y~> +JH16$JH50>J,~> +q#C'gq#Ba^!&OHN!.F88q#C0jj8\6Aj8\QJ!=%c[rrN*fn,NIsp%eUfIJa'F`;9K62>.%Frr>di +rr>+U!!(%8rrCaIs8)fks763k/G/`;!1 +pAk!gp]0a^!9*_R!+#$mp]10jiW/0AiW/HI!6t-9!,M''!1N]`!UWsn`.EH3VEFQWVlek!9sOW!.Y~> +JH16$JH50>J,~> +p](!gq#Ba^!$1n8!28f\q#C0jirA0AirAHI!AOKFrrA8O!!$R*rrN'>qu?_$qYpQ0p&Omf!=JZ" +rrA>\!!*`2qYpPTq#C3kq#C-i"p#/P5&S@=p\t4nquHNlklCJX!!%N~> +pAk!gp]0a^!:9L]!(lVYp]10jiW/0AiW/EH!-Io7!@IL.rr=GB!!#FarrMctqZ$WtoCr:[!!3*g +qZ$U5qYpPiq#CE/p]13khuEcgnGN=]!9sOW!.Y~> +JH16$JH50>J,~> +p](!gq#Ba^!##,-!4D4pq#C0jirA0AirAEH!/^FL!S@_I!!(UGrrBY-!!*E!qu6]p$hjYrrrE,0 +qu6ZXq>^M#q>UF[q#C3ki;WiH%f?>%s60OXrr<%L~> +p&Opgp]0a^!;H9h!&a3Ep]10ji;i*Ai;i?H!-S#9!<^I4rrC4:!!&klrr?O)!!%?>s7cQps-3?[ +!8m\R!)iXn!>#&%!;lfS!!%EDs7cTYs7QGC~> +JH16$JH50>J,~> +pAapgq#Ba^!!i?"!6OX/q#C0jiW&*AiW&?H!/UCL!W+bC!!"kNrr?3u!!&Mbrr@`H!;QQp!,DB1 +!$D(tr!Ug0ds8)fSrr@ZJ!;QTY!;HKn!.Y~> +p&Opgp]0a^!;ZEj!$Ue1p]10ji;i*Ai;iBI!71?=!-%B+!*o="!>"o#rrC.:!!!W*s7cQps5<_R +!0$jU!Vm#t!!-4%p]13ki;`lqm/-hX!9sOW!.Y~> +JH16$JH50>J,~> +pAapgq#Ba^!!W2u!8[&Cq#C0jiW&*AiW&BI!A=?FrrA&H!!&_grrMQoq>^LRqYpQ^pAk!g!<=2; +rr@':!!*8qqYpSn!;QTk!9*qYjq@Okq#BRYp\t3nJ,~> +p&Opgp]0a^!9s:Z!"SGsp]10ji;i*Ai;iEJ!VmN)!!*o7nG`OY"Si#tB__T-+Sl'<^A.a'!<<'! +-MmcC0DthM\bQ4+V#U2iqu>XU! +JH16$JH50>J,~> +pAapgq#Ba^!#>>0!:]CVq#C0jiW&*AiW&EJ!7-O5PP6Rs8N'! +fDGRJcMRYB7JZra=oe?tqZ,XU!W51Y!;QTY!;HKn!.Y~> +p&Opgp]0a^!8@5K!!M`ip]10ji;i*Ai;iEJ!+,9t!,D$'!0[*W!6Y*:!/p[R!''cRp]1?o!-nA@ +! +JH16$JH50>J,~> +pAapgq#Ba^!$qC?!;c*`q#C0jiW&*AiW&EJ!2&o`!0cmP!,VH1!&XHN!-A#:!64d6q#C?o!/CCN +!W3?(!!&2YrrW'0!;QTk!9=([qIB=$q#BRYp\t3nJ,~> +p&Opgp]0a^!6Y*;!#"`"p]10ji;i*Ai;iHK!5.k&!7(-7!$LA'!:]gap]1?o!6"^6!3H/!!#bV5 +!^?Yap]13kj8]2r_>+'*!9sOW!.Y~> +JH16$JH50>J,~> +pAapgq#Ba^!&XNO!:9+Rq#C0jiW&*AiW&HK!C?_WrrN*OnGiRFk5PJ\%f$,"s8N'!3r8jV;>gIp +jSJlX^]4B0s8)fWrrM=Hp]1*hklCJX!!%N~> +mf3%^mf*9tq#CC=mf3%^qZ$ +JH16$JH50>J,~> +mK!%^mJm5Uq>UHMmK!%^q>g +mf3%^mf*9Gq#CCLmf3%^qZ$^3irr2t$qZ$a,rVunNq#CKJ +s8Vioqu?$`"q2D!4)(;9o`+[dl2UMY!WN.M~> +JH16$JH50>J,~> +mK!%^mJm6-q>UH>mK!%^q>g]nG`Kmo)JckjSo5Lq#L3irVuqoqu6fj!<<+Gq>ULD +!!)foqZ-'a#QF;Te\dY[.eE`9s60OYs8N(L~> +mf3%^mf*8dq#CC\mf3%^qZ$[JRmJm6pp&>'Y!oj7\ZMOUr!<2uuVtpAqaoDArq>^L@ +rr;`nqu?EkirAcRl2UMY!WN.M~> +JH16$JH50>J,~> +mK!%^mJm6eq>UH.mK!%^q>g> +gAV*Is8)fks5F%Rs60OYs8N(L~> +mf3%^mf*8)q#CD.mf3%^qZ$ +JH16$JH50>J,~> +mK!%^mJm7Jq>UG\mK!%^q>gdQhp@nRf])MR+!Vd)s!!%0$rrC=?!;QTn!!*Z/qu6bY +!#GP0rrA&X!;QTk!;QTR!;QTY!;QTo!.Y~> +mf3%^n,ECGp](;brr32$M/#[8%ef\tp]10jp]/_Ap]01N!&aKN!ZCB:q#CCNp\t9m);tPql21MU +!<)ot3VrdX*<2Q)!!'_3s7cTks7cTRs7cTYs7cQprr@Q~> +JH16$JH50>J,~> +mK!%^mf3>/q#:>&rW!.'Fd05[n-Jdhq#C0jq#A_Aq#B1N!6Fp7!p(#]q>UH:pAb3pj5U(>r=o,/ +q#C9m!6"d7!oX,gq>UF\rW)`nqZ-EkiW/cRklCMYrr@Q~> +mf3%^n,EB3p](HFs8T"uqu?a*pA4dhp\4abs7cTAs7cTOrrA/S!!B_1q\o81!13K\!4q(g!+c!, +p]19m!/gUQ!TZrN!!*W,rr;`nqu?EkirAcRl2UMY!WN.M~> +JH16$JH50>J,~> +mK!%^mf3?Bq#:IJ!!$'tr;Qff#l4N$#Pe>q!;QTA!;QTO!!$m0rrYak"694W!+kp*!(>cF!1E]a +q#C9m!-J);!?/6>rrMQkrW)`nqZ-EkiW/cRklCMYrr@Q~> +mf3%^nG`Oa%/Bl+$N'l'#5S<"jneuWmeHh_!W)ik!7CiA!9!kXhu`WQ!,;H4!S%5I!!*,aq>UFd +huEcarVZ]j!<)otf(o@INX#=[!*B.!p]13kp]0=Rp]0RYp](?p!.Y~> +JH16$JH50>J,~> +mK!%^n,NInnG3(eoE,'nq"k!j)>X=5&Gc>+rV?Nhs3UiAs53kX*W#O1!1!N`!@[mBrrN$5q#CE% +i;WiM!W2rms8;ot./NrEDYEr,!2obqq#C3kq#B=Rq#BRYq#C?oJ,~> +mf3%^nG`KHp](:mrr2s0q>^O(pA=jijS8cU&GlG%!7CiA!9*qYr?V+;!@7=9rr@TF!!"/^Mnr;ZNlr;Qa:qZ$UCq#CDjrVuWmqu?EkirAcRl2UMY!WN.M~> +JH16$JH50>J,~> +mK!%^n,NH/q#:>prVurdqYpTe#l=T%)YsC5meQqYs3UiAs5UH4nGiS"q>1*k5\Hrs8)fks5F%Rs60OYs8N(L~> +mf3%^nc&XG!r)`qZMsk(*;KR7jno&Xc1q>>+o;66!7CiA!9*qXGkV1=!lt3 +JH16$JH50>J,~> +mK!%^nGiS4qY:'j9`>"liq`TS)>aC61&:hLh>.-Hs3UiAs5 +mf3%^o)AaT&,6,*(&Iq0!'g8Z!71QB!292g!&FENp]/_Ap]0=R!7CK?!.=YC!TsU]!!([MrrN$2 +q#CF'oC2b[^A.a/j8K#Q!;uis\aoe$4oG?T!;lfk!94%R!9sOY!!3*"J,~> +JH16$JH50>J,~> +mK!%^nc/\)mJ-\^klgtc!5J@0!&+3L!+#F#!6k9>q#A_Aq#B=R!A+3Drr@ZI!!*o3qYpTq-2dfE +!p]U]!V6]g!!#:\rrN*;r;cWmqu?^coD\g,quHNlqZ-EkiW/cRklCMYrr@Q~> +mf3%^o`#!eNX,:Y!."PC!-%`6!2o_o!*]0u!(6V_p]/_Ap]0@S!W!Z-!!+kNq>UGbq#CF-qu6Tq +ZM4D"@.4*rr>>A2!*]@$p]16l!Vcol!!%oSs7cTks7cTRs7cTYs7cQprr@Q~> +JH16$JH50>J,~> +mK!%^oDeptDt`r*!/:@O!06mT!*B$t!2KAi!5&(-q#A_Aq#B@S!UK^"9&9# +9_eVfT'lX[!Ta+W!2KJmq#C6l!=&5hrr@0=!;QTk!;QTR!;QTY!;QTo!.Y~> +mf3%^qYpcmkLme8Y,&rrAtm!!#RfrrC^H!!$I(s7cTAs7cTSrr?O&!!*>Tp\t4Yq#CD! +rr2sap](<2mf*9;q>^O$r;Q`k!;lcr:@nMdfDP[D!;lfk!94%R!9sOY!!3*"J,~> +JH16$JH50>J,~> +mK!%^q>^^+(F;+[Vt'K\!U1*m!!$*rrrBJ)!!+DEq>UGcq>g +o`4jghZ*YEr;Qfj#l+H(F34(.NWo1X!2KDjhuN$AhuN]T!5J4-!0?jR!V$Nm!!:":i:m9P,jkU3 +iV +JH16$JH50>J,~> +p&Fjghu<[fqu?a(p%n[mreiW@,]EJQrr?:"!9!nA!9!nT!!,:_p\t53p&G+&oD8Iir]:*$rqZQo +g?ek@*W>j7!+Gj,q#C3k!+GR#!8IANq#C3kq#B=Rk5Y;Yp\t3nJ,~> +oDndghuEdFr;6KoAa06qkPG59!:'UA!<3!!oFCTq!C?\WrrBP(!!3H"GPD.4Sf$X,6%W; +!;lcrkOefTE;T\1!;lfk!94%?!;ulj!.Y~> +JH16$JH50>J,~> +o`+dgi;Whi!rDrtR-XbQrYPD2huDsAhuEZU!=J;irrKe6o`,"^rqcWroa$ +oDndgi;`m*meZqal3HYU!%n$HhZ2sAhZ3ZU!)3+e!=n)[rr?3t!!,:pq#CEsj6ZdGVtg;og]. +JH16$JH50>J,~> +o`+dgiVrr2&GcA-'_Uhm!7CTBhuDsAhuEZU!3u:u!Uq-$!!&hjrrKk%q>UKn)sdP)=8Mq!rZV=B +q#C0j!7(<5Yp\t3nJ,~> +o)S^giW'!$gA([JU[.s\W;6JM!:0[A!!3,#p&G)eo)Aac'^u)&8F-9VpBp`s!`B!tp]10j!.aeD +!>#&(s7cTks7cTRs5X1Ys7QGC~> +JH16$JH50>J,~> +oDe^gir9&:,kq??>5mph!*8mqhZ)mAhZ!WW;uZOk!*o'p!=%carrE&nrrBLn!!*>rqYpVu!!)fo +q>^MEp\t9_"T&2os8)fks5F%>s8;rlrr<%L~> +o)S^girB*@l1Y,WHgUk68,3,@!:0[A!!2HlpAb1lnG`L5n,NHflMgisq>^R#qZ$pAb1o +qZ$rVuQkJ,~> +JH16$JH50>J,~> +oDe^gj8T.u(%qV.KDt?>!4V_'hZ)mAhZ!Tgp%SIdX7-)i0`CPA!*/:a!1*K]!r2s!q#C0j!&F +o)S^gjT#>oMtlrE!0ZgO!?0his5!bAs5!_U=8)[q([LPi!-Ic3!>>1mrrC=>!!/2]p]1-i!#52. +!2KDjp]13kp]0=Rj8f/Yp&KU~> +JH16$JH50>J,~> +oDe^gjo5DLEsD7:!GhZ(rrM1'p]01NlN#fA!2oSk!Tt-b!!%lHrrMHjl2Uf=q>UJ4!;QTi!!) +o)S[fkPtZ>M!sm6!RrXk!!,.CpAa"MlMo`A!WQ6r!!'CnrrA&M!!$j!rrC=?!!5Les7lZirr^6jqZ$?kiW&!>r;ZKkJ,~> +JH16$JH50>J,~> +oDe[fkl1_.Fq=*C!@lRirrL%Tp&O"Ml2]`A![Y!!%$1rrA5G!!"bMrrTh5!;ZZi!!)-W +rrN$1q#L6jq>g?ki;i!>quHNl!!%N~> +o)SUdnc/mr%N?fdFJ.LWrrK5LpAb74J,&X8i;i*Ai;ilW!*B$t!+tNr!0-XO!7'a,!6tB@!87AO +qZ-?i!#b\7!'KuTqZ-EkqZ,ORk5bAYq#Gp~> +JH16$JH50>J,~> +oDeUdo)AsmnDi*/MI%Fl!!,sJp\t +^&JGdKg?jk#9lB>Z29+PJcEOc!!%N~> +JH16$JH50>J,~> +]`8BlH+i&(pY +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JcC<$JcG9?!!%N~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/doc/img/edje-color-class-example.png b/doc/img/edje-color-class-example.png new file mode 100644 index 0000000000000000000000000000000000000000..8197a15819d167cba9a746cb324edf58aff982f0 GIT binary patch literal 6243 zcmeHM_g7O{*G3u3tAaB!h(yYajyMJbDntbYL@6RjH3R|)D$)`l3WU&65fqUoouMNw z6@-AHMWqQ!F{A(r0i-50B_R+9d~x1y{($%Q`Qfg+?pb&3@|?Y&z0W>zHdbab`vCi- zq@-lbuNm7(N$p6HJjr`^N>;{HyGtc6>3}QdH}~${`+3}YO!BE1XyO=XkM;<}-u8Ew z^7KRdx`P7T{N3IC0=&?HOVTt0DJg|jb7P~M!MO_~*es>?ypC^JC?0+yE&1}^pRVlv zS?&4*^PRuT9#B&{sJ1s%<&AM_v`pQ><3|H_8;6daxfN}G{)Nn{qUFUiiYdEtpB}T= zdxDVLy4WkOuDUQf$6dtDV~zd@#?I(6t0PftLdkr9F06Lz zWI@AZq{be8+p=n;LTq3ntZrY-5qA3FuQq+D6h6hl!3 zW@XXr`s5lhWuyW135c=Mna$*~E9Ad5)3+;_1QA8x?vu%y17r=zqRWKRruh|c=~Y89 zZYL6Y!^ajr=y#X$baEB;nPLSKKVAJ0WW!15o$IGt=8YFk)ia_6P-vgD;BvQ-*(_yE zLt0=WDsWX{JdA5jr0Y``?!8ZfDa^5NZxn<=ei!&QACYrL#2>&dETLDbY@T+3OS+S@Ld6j)fm*K1Xd%5zcg>|sZMs;jj&368tac9tycK~PPJ#tav z`3U7oR1X5@7qWDvpX6>Iq6!PP}%x_5S0m!CkL`Pxz6fW4cHT5AT>H0H;x z%ZA`0Q-vBgc`;o$+-nAyTl=t#I*ev@rO3>nTsGh2)lSPVWJN0Cnf>bRuACMUD@pqg zyz-)rHR`75HkPe5XSNE1Y&wE)&Sj((hG))h{g+~qcO9xEf8hOrnV!3?`&A6x*AM2k zjDD)>h0P6*R|3)``lf#9Yh(y1PI+I`Ds;hpEL~-lyqDv47Mm5BTsty&)9FbFQS|dj z0aF%RAtz`|gDX@(;dFFo`xFI8E^)4)xNHk$2Ex{Rj@FIG0J;c|_&KJpw@xMXqa>g~ z5LpBq*P_|d5CfKFmAAW+ZkcqH;?$w zSMPxl_<)taF5GI}4^DU5<^9y)na_~D^>o92`HQuixWgH`&b+qGpzZAQz-vj~OKpY= zBNbZV_{}@T3HOR9;1|44Sgy6SACo~G*1z1Gt z+tSb*NulyqY+|W0jIj>Oo6+;$BNn*NMPs>ZS>=|WrUz>8XRmnhZZ9k$x#iS!7ju|S z`)$V&UdzQU;{{lC>GXYx=|m9tTT--gH!r%s9rMZ$1NI|WKjQ#4ERUMBh-rx)>D1N~ z)NHZ)*#czKb%ovYcs8ynHquG2W7GGpUUSMo)9s^(YnDX+SXn%~wi*9Tp@?m`&k8Pf9RIMuS~~IMwPM5J)?CrJj8VgLUmtpD5_o$T>2!GWF}pFP+*3h0(`Ulh(Hy zQW4L6hO}2fhGa-7r=x2a7oX7)sAEz;c^17K8^u)N9QTG)h_kyX$zO?qt)Rg3euBw?Ote=zxm=KY9JT{Wu6@wrnR? zFlgQ*oE`Lo{c>gvH9RiuJC4*h!loGv-cV0uHJ2tSFy`1I^EZHDWx^f{)m-93dy4Jc z*QkNFDbalTyObQq-gDpYW%$jPwlfhXwU5X4KW!a*3NP&?btDMPRl1bZ_)`wCZp<+| z4&!_r?Pxw8^@tt#e9<4gN`ExPJv6lXszrG{&EQ1&Z>5~^chJnmXI>4k8BDNOx^Cm> zC0#qAnpIjPB%2}ClZ$U@X-qLcQGZhQ(3!wx|CtIJzPkMIboG9tMh8Fliw;B(CS8|Y zk{zeaW?FJ;Mn5BqLL00uW$Y_&M>Kg=8N~U709OI$;{K}19@X?6uA9{KOY&A_UySOv z^;Wx1#eK&kdPqEOFz6iN#b>!a|2d)?OjSiz;H!=BD}ynGaP|6gN_bXAXzt>*A>k7v z^czm0mfNr^Q}%41a{2ya&OwRIL(qw77bQ&lTROJ8mm!l99Z1iqtI=;l?Ap$=aF&6I z^~ApgU+5-JuC^HgsXs^=U(I*>DSKX0>(ZSS6Cw5%5m!p=5nmmF*NEugQD?%~mQ!WZ zvyC@5CZ=Ee6$H>^Pi=+jNBlD6dr&{szc>vKEN6Y1_oReb9weK@LZ}P!h=`AUeOHwf z!g|~)LzG}v5IqZc@gmB*h@INB2y#f46sO#bC@V#*ua`qaQiZhPwJ6l~omX{1GXCir zmO8fGkQnCSP@zX&PB1v&hs@1i!I@6bMs(*n7c$hRQa&jRyfO}N z4a+B{S+7b0wB6b^ARCjlHIGz+cR*^xGhq)E)bO~JQmg*)BI_F%boC>?H8C%^KHr~f zr2KPJD~Xp_=QA zrV6&1$<&z}z2l3CiA>|&_u;J>8T82ZLD42~g>5CcbFv32FKd9)thSGrdmD0VbnO&U zy~d@yp_aK|f-U>2@HmN)6j`yYdpU{&OASL7@d&w9r4D0~ijKTpsmGmK)8Kh`ToULw z)xXwl`{GO>!fw{*m(7GLfdUws!B37G(qBI;lYjX+uo(6DBzPEG{GeCSVb^p*L2=zV z^(_qy+8bZDol|)H`jUVSk9Vo2T)EL=L43166#|KX0#p=GWXij|t(t9qO zbPBtsFB3l>K9HU|2Je&t4_cbk(U!Xl|qP{}(C~E{|MIPh)vn^`pP>CV|y(vpW3@%?|Z`p?l9F zEto|ffq2MpuUOUO!iCc$Cm37cmdMaG`Rj1h2toAT8D9s%g3Oz;EbmguV!AF|x;5zH z^z&KzFuX4)_)oEMOP&^C-^ZhdF}N`OwRB{I)r?O?pF$jd}ZH|o7i1z^$>eSC_cdl@QK3Vi|8C!zm!%_L7 zMh_hqq2Qh??az)s_4O`m9aFfMLOO7y%J-uh$a-k~H?h9Y;hP%wGb?$gi5m~k=T*ST z>>)F+@Cp5;my%9=ZrQ0SYa=#uR0{d*e8T$uv7bf|M6{X{1d=(a8e<{C&j9)Wa zWu%fiN@y)8D73Wvv|*iq%VG=Aa`LN4T=Wc9ZHfSofxB~`~cEK>U(Kq&TeW;!H5H2#YvQR>RLVTv34rDIO)2oAm=?k zAU1tHdCUGK!g!a1D{Q+g%6RnMAJg;31<1TojQYyEmtW`)aLaa?IA?3n)1^x=>$0Zv ztP)Y8`ilmyA%9Gqq5G1*_~l3Gqm`b=ons$IzVygo-3V}x55V}&mHgMQ??;#c&j7uI z9&PuQP_w#-%E+_zaC4_pp@1}4M6J^<1UB7d&!sFd?e~{^+lY#e8^XUhl<;qAc7}lL ziV!_J>hl+E7KMs1Lwa(Xa$>mlv{m&2BwQ307II^<5k~+f+3J@sJ4qbiAdb$}90Y5Z zb?WPO&)D7g1^hOG#&J0a^01J`y|8GuexkOxKBC)!`jU>EpJ}Rh{Nl1Pm-0Oc8I$8e zD^Mxkki%a5{;66NvRSKa6@}I$$Av@FAye8_eZPXUof?r7N&@S7p%(nGlJf@lQ#b8Q zoHM{i-kEzzV7@t2x5nV`)3-+Nv_nFV;;VEav^bwR0>roL(8~OKvyPWdbA(_vrh#jv ztgvlwog<2ujiXw7Iupwkf1KKu`a+s6dH>koI>!4+V6%Csqs|NbS3N1TSL4T|Ge9cL z@K4=Sh91@~kQ|re0+)%JCbfNz5ViD$U<3OKQXx9AYk2y$^77-=eB9drCYl0Zv!5H~ z7&zL~%4v&aGXTSG0lafBR4DV|v=qk&!xT6DF12>--_h{@JR+Bpdf&Od!!IK^X|U}r SOL9#hWo}|+OuBOG(f +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +JH31[JUk:]J,~> +JH31[J[DtpJ,~> +!!%TM\c74T\P7S~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!(mU%,mLV6nK/W%N[H9Q.1Bbo)B-gVL`/A+U/H#2eo/MJcEF`J,~> +JH16$JH50>J,~> +h#Ij(BVW/dkkaf,b+*/qJH56@$k6 +!!)!X!pP%ZoDeq=L$e=.nGib#*ABiiW9rUEqZ-BjiW/HI!mk?\p&G-p9#'uthZ2sAiW/lU!*B$t +!06LI!+l$-!*A[i!TjL^!!*2amJm(aJ,~> +JH16$JH50>J,~> +huEfnK@fbq!nhi2mJueW#5$m"]:;n6iW/lUpAj4Qmf3DASG)[V!rTDio)R\Jl2]iDqZ$Voqu6Y8 +mJm6Tqu6Yon,NJ+qu$Hpq\\]#r;V9~> +!!)'Z!q^^@n,NLoG4G,&kl:`E`9%$p!;ZZQ!:p-jY:oAF!BoT=s4m\As53nUrr?-r!!%33rr>Rb +!!$*krrD3V!!)0Ms8)eH~> +JH16$JH50>J,~> +iW'#eLA:9cgAi;``U!2oYm!/U+E!4M_' +!2oAf!>tb2rrN$7mf<7bJ,~> +!!)*[!NZ^r!!*\Uo)IkQ!Dr7Js7lZjs53nLrrN!km/R.iV"aoF!:9aD!<)oum0EFe!7169!2]Jk +!=/#_rr@TE!!%Q +JH16$JH50>J,~> +irB*Wna-8VlnS&2kl1_`Xq0[qq>^6ji;`EL!<]RnrrMpupAj%Lli>uDr;Zj1p%n[hr@[X@!*K's +!VI&q!!%HBrr@K9!;leH~> +!!)-\!,:Zt! +JH16$JH50>J,~> +j8]4Frp'Lar+# +!!)3^!W>FK!!$R%s5a4]')(Sip]10jhZ3EN!PJ^$!!%9>s4dVAs5*hSrr>jj!!#^brr=hK!!+#* +o`"osp&G(rnGi@cJ,~> +JH16$JH50>J,~> +jo>D_]''(orgEBYjo5AI#jD?as7u`Qs7ZKo5kjOC!WIiL!8RVA!8mhS!!'1trrB=r!!(4:rrM0m +oDekbpAY,fn,W@cJ,~> +!!)6_!W=h8!!#@Ys5X.[1$S`5!;c`Q!;QQp^]NWu!202gg]6aAhZ3TS!VR*#!!'G#rr@uN!!'S$ +rr>@Y!!*?&nc/IdJ,~> +JH16$JH50>J,~> +k5YM`alNI%]_)9crrC:-!;QTj!8mhO!!,7[kPkS^?2=QVs6TgDs82it#jqKg!WGU_!!%'6rrN*f +o)Jd(pAY0f!q?9fs*t~> +!!)6_!)VYT!*o6tirB(AlMpVZqZ#FQq>UK`#iu$e!oj(Vh#QjBhZ3QR!6"[5! +JH16$JH50>J,~> +k5YLair9"Pp&O.Q!,Up#q#C0jhuEKP!>+qcrrN!:q>f@Om/Z&DqZ$XWrqcWqp^Hot!?h:6rrA8S +!!+/?p&>##nGrIdJ,~> +!!)9`!1i`^#oI-PcK4fV\rSuJ!!'\+s5O([#Q3ofp]10jhZ3KP!'g,V#Tn/U]\rG0W)<oD\f7oDek8nc/IdJ,~> +JH16$JH50>J,~> +kPtWkrq69uk+#@()$_UHN +p]04Om/Z&Dq>^M\q>UH:q#CEsh"UgLfEq-L!/C.G!8?rCqu;0~> +!!) +JH16$JH50>J,~> +kl:`)qY'pjekuPD!!*SYq>UKi$2=Mqs7lX!":l@q8@\ZqrrAGP!;QTj!;QTQ!!$9trrV:s#5J6" +*;TF1!*nplq#B4Oq#B:Q!<_ +!!)^O(r9XIY!;c`j!94"ZlNm4b!HRo-rrL.@q>^L% +mf3%^huEHOi;Wi0!Vucs!U0I]!6k-:!.XS>!35Si!)`=eqZ)-~> +JH16$JH50>J,~> +kl:_0p\tg!*&Oh!3G_kqu;0~> +!!)?b!5\C0!>`TCrr?F%!!'Y,s7cTcrrB;!!!'%cs7cTjs7cTRrr?a,!!$p.rr?s4!!&#Is7cTO +s7cTOrr@]I!!"/?rrMm/pAb4NqXXXd3;EOS'Dhb1"o@ijqZ)-~> +JH16$JH50>J,~> +l2UfIp\t9X47N:NT)/Hfr^-D\q#Bpc!)E@i!*&:bq#C0jq#B=R!1!UH[qu6]m"S2Wjs*t~> +!!)?b!'p;Z!>4,VrrMp0q>^L:q>^3ioD\gGq#CCtm/Qh\qZ$^MWoDe[fJ,~> +JH16$JH50>J,~> +l2Uguq#:B^,4GR5"mGg_!8mSPq#Bpc!$_7=!2]#^q#C0jq#B@S!<_idrrJ\lo)Je,qtg +!!)Bc!8$rF!4;1o!4qt+!4D\'p]0pc!;?3g!&X'Bp]10jp]0@S!4hk)!A+-pl!!(%.s7cTO +s7cTNrrM +JH16$JH50>J,~> +lMpr5rqZQpr^uSY!(6V_!WGXd!;QTc!!!<#rrC4.!;QTj!;QTS!!#I_rrLOMnGiQkq>UFSn,W7` +hZ3HOh>dQlq"k!nr>u#-rqHEmC[hB)O88eW`t/"CrrD!K!;leH~> +!!)Bc!,hQ3!-[`/!''fT!%n'Ip]0pc!9*_R!"\Grp]10jp]0@S!+GX&!2T,a!Q,$9!!$j)s7cTO +s7cTMrrA\e!!4#.%/0`&7K)fW!VZrs!!8Pf<;HRpde*S:!.Y~> +JH16$JH50>J,~> +lMppHq#:>Mli7%*qYpQBq>gUH`li?h\q>g +!!)Bc!%@XC!=8#XrrASb!!)E`s7cTcrrB_-!!!`"s7cTjs7cTTrrMs(q#CF=qsXOd_%.C]!!**d +nGi7`huEHOh#@@@q#CC?pAb4*j73-LUA4ck$1Ru-q>^Ldo`+dgJ,~> +JH16$JH50>J,~> +lMpq8q>UKh'C5]!@f$**r=So,q#Bpc!(-M]!:&nNq#C0jq#BCT!UQi%KJilrrBJ!!;leH~> +!!)Ed!:BO]!+P9o!9j4Y!06sVp]0pc!(6P^!'BQIp]10jp]0CT!4_e(!1*$P#5uFN7tA,lXj&(&It3"8DKgqZ)-~> +JH16$JH50>J,~> +li7%urqZQoSEg.U(B++0!,q`7q#Bpc!5&(,!5n.'q#C0jq#BCT!(Qb`!,1a""p$gR[sgdWmf<._ +hZ3HOg].?ao'cSY=RZ:jcM@JCU&Y/okPP8[q?QZnqu;0~> +!!)Ed!4)A"!6sg/!&OHO!%[sHp]0sd!/C7K!,1a!p]10jp]0CT!/pUP!9WVI!<)6`p]04Op]0(K +!4_Lu!*A[i!7LWB!5AI4!.ObE!/:+GqZ)-~> +JH16$JH50>J,~> +li7#Zq#:=Kl2Uh,qYpQEqZ-EkoDeo9rqZQoQL"VHs7u`js5X.[F85b8)!_/%!UBa\s5*hOs4[MS +7K2iW!2o;d!%dpF!'pM`!.aqG!-n/:qu;0~> +!!)Ed!-S);!#4\t!/(+J! +JH16$JH50>J,~> +li7$Bq>UH[kl:^1qYpTp(&S(,s7u^!#8%q?Dqb!d!WFY:!;QTj!;QTT!!%uRrrCm(!;QTO!;QTJ +!!&ebrrM0mn,NHVq>UKO!WE'"+9)0;!9a"Tqu;0~> +!!)Ed!)NCj!(lGT!2K>i!29>jiW&sRli6_[qZ#RUq>UFtq#CD!e,T1ChuD^:n,EF`(%VD*\a]V" +o*>'k!.k(J!'0lU!6Fm6qZ)-~> +JH16$JH50>J,~> +li7$hq>UH&kl:]fq>UG#quGaV!3kbhq#C0jj8\oT!2]Mk!2J!Cq#B4Oj8\QJ!=%c[rrN*fn,NIs +p%eUfIJa'F`;9K62>.%Is*t~> +!!)Ed!'U,X!.X85!4hn*!.t.KirB)rh +JH16$JH50>J,~> +li7%%q>UGEkl:]Pq>UGBquGdW!TtWl!;QTj!94%T!!'b/rr?`]!;QTO!94%I!!+ePp&>#Umf3>u +q>UKo*rH!<>Pe@"^@hR(s*t~> +!!)Ed!%[jF!4(kh!7:NA!,2<1j8]2jd-CZ+!;c`T!;c]q-i!`B]$p]S!8mh9!:KjeFS5\8-M?j- +!%7RB!(?_a!VH]p!!*,lp](*jJ,~> +JH16$JH50>J,~> +li7%7q>UFgkl:]9q>UG\quGgX!Uq`,!;QTj!94%T!!(XHrr>I9!;QTO!94%H!!%lLrrLaYmf3@= +q>UH+qZ$X'p&"air!W6!qu;0~> +!!)Ed!#kY5!6FF)!9X(W!)EIljT#<+b3As$!;c`S!;lcr&,?2*c-u^f!8mh8!:TpfFnYk:"3L$3 +!6Y':!2]Pl!+Pd)!.+D>qZ)-~> +JH16$JH50>J,~> +li7%Hq>UFQkl:]#q>UH!quGjY!STBp!;QTj!9*tT!!)K`rr=e&!;QTO!9*tH!!%iLrrN!Smf3>E +q#:=sq>^MbqYpPKpAk*jJ,~> +!!)Ed!!rB#!8$K8!;ZEj!&XWRjT#;^Om2o@!;c`S!;lcr#Pe?"i7%`$!8mh8!:^!gch7>=E:3`+ +>kn@#&,,l"!6G!:!"nu*qZ)-~> +JH16$JH50>J,~> +li7%Zq>UFBkl:\eq>UH;quGjY!W6cu!;QTj!9*tT!!)chrr=+h!;QTO!9*tI!!+_Np\t5QmJm6\ +q>UKa#l4N$2Z!FRm.UMWs*t~> +!!)Ed!"/N%!9WPG!:KX_!#ke8irB(!lMpVZqZ#LSqu6X:q#CEde,T1ChuDX8nc&Xc(A7_/(]Ek' +!Up6f!!$^-rr=2 +JH16$JH50>J,~> +li7%Xq>UF3kl:\pq>UHUquGgX!WJ&C!;QTj!9*tT!!)!Rrr +!!)Ed!%.LA!;5UV!8[GN!!W<#iW&t5li6_[qZ#LSqu6XQq#CEie,T1ChuDX8nc&SqoDel+nG`KO +p](<:q#:>Pq>^LTq#C3kJ,~> +JH16$JH50>J,~> +li7%UF$kl:],q>UHjquGdW!WI?0!;QTj!9*tT!!(1;rr<8P!;QTO!9*tJ!!&Y`rrA8P!!$j1 +rr=nN!!%*:rrC(6!;leH~> +!!)Ed!(-J]!;PgY!6k6=!#YY6i;`l0m/Qh\qZ#LSqu6Xiq#CEWe,T1ChuDX8o)A^&nc/[8nc&S3 +jT#;Mq>^ +JH16$JH50>J,~> +li7$uq>UF!kl:]=q>UHWquGaV!WFJ5!;QTj!9*tT!!'>#rr +!!)Ed!+,I$!9`VH!4M\'!&OQQp]1*h"oRfHd\Jku!!"A4s7cTjs7cTTrr?R)!!(Kss7cTOs7cTL +rrM^#nc/[uq=FUd_W1[sDu'G1!.Y~> +JH16$JH50>J,~> +li7$Yq>UF2kl:]Sq>UH +!!)Ed!.+G@!7g?6!.t"H!)EIlp]0mb!292g!2o5ap]10jp]0CT!.+G@!5[.ap]04Op]0+L!(lY[ +!)<(b!)hkX!"Jc(qZ)-~> +JH16$JH50>J,~> +li7$=q>UFDkl:^2q>UH!quHNlnc/Yoq>UFrm/Zq]q>gUFXdfB1ChZ3HOg].>]nG`Km +o)JckjSo5Lq#L +!!)Ed!1Wca!5n($!(ltd!,;B2p]0ja!''fT!%%%4p]10jp]0CT!2B8h!3Y\g"kaYjP0j0qs7cTO +s7cTMrrB"c!!'G"rrMEeirB(bqZ$EmJ,~> +JH16$JH50>J,~> +li7#qq>UFVkl:^kq>UG[quHNlnGiR.qYpQKm/Zq]q>gUFkli728kc/GO!U]s_s5*hO +s4mYTG@jrr>^g!;leH~> +!!)Ed!9EqU!1)mL!"J`(!/1:Mp]0ja!3u>"!64I,p]10jp]0CT!9s:Z!0?OI!SIhY!!*L2n,N._ +huEHOhZ!WC#58)t6MUT^"nMBe!/TV7!&+3KqZ)-~> +JH16$JH50>J,~> +li7&)rVHNoB^#KsnbN1bHMdddQhp@nRf])MR+!Vd)s!!%0$rrC=?!;leH~> +!!)Bc!'0lU!(lJU!5&"+!2'2hp]0ja!87/J!-J5?#,mAn9.^YIq#C*hqZ$^L`mJd0O +qZ$Wt>4DRe!8mhO!8d_U2>7(P)=;#2!!"hLrrN'9i;`lBqu?NnJ,~> +JH16$JH50>J,~> +lMpq'qYpQ'l2UfOq#:>$quHNlnGiP8q>UGPrW!.'Fd05[n-Jdhq#C0jq#B@S!6b6=!4hIs!,;?1 +!W8b_!;QTO!;QTN!!(+7rrV9oR/-a^anGc9!TW2>!W<`0!;leH~> +!!)Bc!1EZ`!"%rj!(-G\!93qVp]0ja!;?3g"AJjqVucer!=SVtrrDfg!;c`j!9=(ZK),HJ$N9Dm +!(H_a!*&Ifp]04Op]04O!0HmS"1S=-)Yj@5Qh^R\]&3PgAGcE(!.Y~> +JH16$JH50>J,~> +lMporqYpQfl2Ugrq>UKp*;fg3s7$'h#l4K'Z2al*r;?QqnHesk!!ig*u37fWYOq>UG+p](:^i;WeFqZ-NnJ,~> +!!)Bc!UKj`!!'RrrrCmM!!#7\s7cTarrD*T!!=PIrs&<"!9O(W!:KX_!!2rrp]0@S!6t<>!6t!4 +!9EqU!=E$#s7cTOs7cTPrrM$ZpAb2-rr3#L!Vucs!U0@Z!(l)K!=A`&s8)eH~> +JH16$JH50>J,~> +lMpquqtgX=5&Gc>+rV?Nhs5O(Z1&:hL0^euB +)ZBO4!V<,W!;QTO!;QTP!!+,:p\t5YrVusIr;-Eor"f).!4:\a!V?Ej!;leH~> +!!)?b!(H_a!#"Yu!%RaD!1Nfbp]0ja!5SC1!sel+&GcA-$hjJt!9EqU!"f#,p]0=R!#580!)W.a +!,M?0!*/Rhp]04Op]0:Q!W=; +JH16$JH50>J,~> +l2UgoqYpQ]li7%7q#:>)qZ-EknGiPQq>UQk!!)H`rrMZrqZ$U7q>UH_q>gnnGr@ahZ3HOi;`lZf_>CHg'[cY!.F\C!8dPP!>tb1rrBt,!!*T*qYpOrquHWoJ,~> +!!)?b!6k6=!,V*'!-7i7!=%uhs7cTarr?I&!!=2?ruCh7!9O+X!6t<>!$V4=p]0=R!0R'W!:TIX +!Sd_N!!&kcs7cTOs7cTQrr@<qu6YHp](;bnG`Jhq>^LDr;ZWoJ,~> +JH16$JH50>J,~> +l2Ui?rVHNoOmW2LMtm;Qp^m<&q#Bja!1irc"60@]iq`TS)>aC61&:hLh>.-Hs5F"YD>O85r=8>t +!?q@8rr?3l!;QTO!;QTQ!!%`IrrN$VqZ$WEq>UGJqZ$VEq#:>&n,NHdqYpQFquHWoJ,~> +!!)1[s$-;Z!71QB!292g!&FENp]0=R!W!Q-!!*r7 +oD\jh*;BL7"n2!]p]04Op]0=R!7CK?!.=YC!TsU]!!([MrrN$2q#CF'oC2b[^A.a/j8K#T!.Y~> +JH16$JH50>J,~> +kl:^RqYpTqDt!`-E;oY4!3Z.uq#Bmb!?M%4rr^:A!5J@0!&+3L!+#F#!6k9>q#B=R! +!!)58-u6i-iX!9*qXZ2"A# +*qf4+!VIl8!!$Nus7cTOs7cTSrrMs5pAb4Lq>($jSG<-c&c;S-!4)A"!+>9q!W +JH16$JH50>J,~> +kl:_glMCM^rg3i\!!3:krqHEm7/?oYs763k0'`63"/#VoNqr\T=8MstU\Xoi]D;O&s5 +!!)9`!5nR3!Z&'>q#:EoYncs4!+l!+p]1-i"o\2af9S#^!!BS-s/5Ym!(d%f!8.&H!+Ga(p]07P +!&=9L!XXeVq#:B!&GH/*!o!/Dp]04Op]0@S!+P[&!=.0Lrr>=[!!$7&rr>@[!!'n(rr@TG!!*?& +rr;iqJ,~> +JH16$JH50>J,~> +kPtWErqZQqk=bpO!!30pkk>#VRJ?jXs7lWu!=',_B[QPR"%rUo=8Djr[JU"*-2mZ>!1irdq#B7P +!6k9=!q^L@p](=imJ$V]r$:b3q#B4Oq#B@S!1`f`!V\&;!!'_.rrAem!!'_-rr>1L!!%HDrrMiq +rW)iqJ,~> +!!)6_!,2*,$5.!Vcfb,dcELmmo`,":o(i=D!!O#2s8V`tq#CS>an4;I"o&&tU\b#K!;QQpeH5LG +#mb@?`9I!T_LWs)!!$3ks7cTOs53nTrrBh-!!&)RrrMWsq#CK4s5 +JH16$JH50>J,~> +k5YLIp\tTdQ;'"K"W/pgQgFDF!Se+Z!9!k\lid@h$2+/p#6'N<$7'Qbq#:=uq>fIRp](=DqtU0t +oo`WB'aPdAIG=Gp!2T&`q#B4Oi;`]T!C$MWrr@!2!!*Q#qYp]t3rg?$q>UHKm/R/-rVHNo@K$9( +s*t~> +!!)3^!)heV!$$ +q#CI%p3693!/9e>!'L)X!$_FBqZ)-~> +JH16$JH50>J,~> +jo>C^ir9&W3qr^5rr@NH!!&DPrrN*8q>fFQp](=sroF([kn`^fq#B4OhuEZU!=J;irrKe6o`,"^ +rqcWroa$ +!!)0]!-dH'!.">=i;`m'p\k*ml3HYU!%n$HhZ3EN!28HR!3ttlp]04OhZ3ZU!)3+e!=n)[rr?3t +!!,:pq#CEsj6ZdGVtg;og]. +JH16$JH50>J,~> +jT#=9roF(ZL%bT+rrLjZr;Zj4p$D\YdJ3e"s7ZKo>lEda!);k]q#B4OhuEZU!3u:u!Uq-$!!&hj +rrKk%q>UKn)sdP)=8Mq!rZV=Bqu;0~> +!!)-\!2eiX!I4M9s5F"Z#/C'8!2Jl\!3#_nh>m^Ros8VrrJ,~> +JH16$JH50>J,~> +j8]3^r9+(]re:OL!94"ZpcnWU!F#Kirr?*q!8dbM!!,glkPkO4m/Zq]hZ2O5!WZ0up\t4unc/[p +kkb;ZrqQKn[d*no#P7fl!iuA%qu;0~> +!!)*[!R_MC!!*V8p&F%P!=#t-rr@E6!!#Oas5!bLrrL%Dkl:^4m/Qh\huDO5!UU-d!!#serrC=5 +!!'"`rr?^.!!3?#s8)eH~> +JH16$JH50>J,~> +irB*1mcj`PmnNHTj8T/T8bi>eKDt?>!4V_'hZ*9L!BKi;rr@T9!;QTO!8d_V&bYnu!3>Sh!AOKB +rr?'a!!&>]rrW!!!;leH~> +!!)'Z!VC3o!!+_,o`*tP!AV[irrA5O!!+"pq#B1Np&>'U7dL*U$'acUp]04Oh>dOWpAb41lgOiR +FRfD4'):bl!6t<>!Kd?Y!.Y~> +JH16$JH50>J,~> +iW'#eOo=YH!RN(`!9F.\br5:r!GhZ(rrM1'p]01No`,%0\,Pdp!VL3n!;QTO!8d_UVt^2lk7d:a +!/^:H!UL$U!!"bLrrHs:qu;0~> +!!)!X!olfQn,NM$IJ*12kPt\c5+_]FrrLV"o)JePk4\i4!;$3k^aJRN!B8Zqs7lZOs5*eWs&\sq +!4;.n!0-RM!,Um!!6t??!^cqequD6~> +JH16$JH50>J,~> +huEfs[f#Xp!q(UGnc7nR"9$#C!qcNo.b""h!Q5iK!8mhJ!!5=7rp]pga!U$Nq>]:Ohu<]WVtg8l +9'lTYEV'21P3;lG1&CnO]Dqs0s*t~> +!!(pV!q(+KoDeqIN:H?9nGidr%N?fdFJ7aarrK5LpAb74J,&X8i;iEJ!maOIoDen^\E3bf!8RV5 +!<2uu=8MstB'TBrNV*8OcK>-,c2.J@g&D$N!.Y~> +JH16$JH50>J,~> +h>dTgMrXI0!mP`pmJueW#Q+#Nf!gNB)t3h.;:bLA!p+n9o)RbLnGiVCZLdbh!rfYujT,2Xg]6=5 +rVuqrqu6Y`l2Ug(qu6Zqr;QaNjo>B9r;Qfs-2moDs*t~> +!!(gS%+^_S1E?o+%37B>QefIW$IFJm+UnZ#5@:\m^]+c>]SBTA*"E&[+>dT&idq-Es*t~> +JH16$JH50>J,~> +gAhX1BUd3(nbhq9a-^K_^]4]oH+i&(pYlqsiOcRp6qa!5AMa~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +!!%TMJcC<$nc++~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +JH16$JH50>J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/doc/img/edje-color-class-example2.png b/doc/img/edje-color-class-example2.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd61e00d5ff39566f635d34780a5e151d039d7d GIT binary patch literal 6992 zcmeHMc{G&m`=3&g!t2%YMp82Ha8N)Cn`%JdRWEsnM-tYOH-~ZqL-#?ynpXWLExvz77uI2N2uIr_>rICcVtT+Gw zkT5a6Z3_VGN)|pzV!MT3zALns2p18Az6n@NOl)}E>bvmuSg3(Rs9m5}Xt;ZbC&2rD zV1TC@!Xw1f^FG2SFmzF*Sq}h^oiMq56Z{}&p6#6ho?^Exk1gyz5Z_l)^!V<}-FIKQ z?6G-$_td*jvKsK$cVB8qdw^djE5Br8dzG=L;5|NI|8s@LKldFnzL0gA0gFsrpWNcl>0mrIZeNeFDrlAz1~|a8#GOdF$jjMd4?D6%FC*69{sD(mrW_ApZ<(W4t?U6SyOMzoG+FV87;z0 zyOLDx@zIkfK8_ZdawF%e+5Clq$mI)Yl!J2X9Ec^Bl52x~6;|sg`?u+YDn)Ox#uKk& z+il+eU5i^iW!^|`&Putg5mlXyG?~=v>IDs5#T37k4x>1@sFLfyb{=LmI=INVjO$-q z*M^{b>!w+MjE|~;1&A##bWH;2qYtDRdN)5?EJ}em|HwS8F`4Zftq znwQW0K64t%(E>G@2Bf$ggPPfR9U^kiQXCH(aldNG1N&P=ks)OM`SDL?TJ+ZIgMo{M zZ#nHn;UQ(e5?~ALGZbsK3~apkXq~I)$ID7{w9>8tkjB|#wc4{Ce0U~(K^JY1ZS$Te z$5E1hvudSlUefC09K%1q{b>vGM*0My&BZC9r}(iB`_|40Nw&*3`{7hu*pt)RA zpM4&?6S~-#c;o2o>W8-48^ik^p7v=pRC?F)Rc)T8t@*vD0lw@gyMt|7C5E{b->2Yn zNP2dce;#oO%`Y|MF9=FY;l^twXYEp93gb@{>0?f^G$0qi z5-#}xOdPys<9fM_AxEQIom@L@2o(SBOyL^qY~i*qKR`2d=;KQ*)*W31Vv>zVF#M?^G01Hvg!V* ztc$j_5v=iR@*3vd4K1t3+4880mW01sUcbTb*H&A!XOm|obDM9fIXhjj?)GBMQU!Z* z?a8U;jiy?UJMl{o&-@b2O{pHYWq%(Fj=j=cL3<|Uk&;D$AisCoDG&mG9=7z^D>|uj zr>y?UD6uyiA{`WWlw%JKI=I~QZfeMHY3^r5ZAcAy0J@BU$I81aYQC~|!+VTEW79dU zCoz_dxajudqKo7{YGK8_9}w2Ahgf+R0<4r;!Wo$yI3_z8EuE6q$DGZw_E;k%NC7#? zkr#f8E58ftM<$_Cx?mf4NwJ1ug;_l#Gme3TgyvV0>I0?~=P&4l8}i||DRG^a+g^tX zbV+)bkjeKYnrh=i;|a^9*tpj2$tsGLzz5G0u7=dCFw5Vk zY*L?w3q!76b{G!%cI>~N6n84RJlemVZ~3ya8;X3)eU{ZrrHQF#K1h8C$fUY?*U2`( zd!a0q#oAfP{sRShz_Jn;#C}c{Dqw40Rg)(fg-}YTeVBi#9*?4h4G4&>X|SCV?beZ< z2f0%|xbBD?qPO=4om_kYvDFfG0%7QGl=0=YKI1IVZ+=^Kv1na7@17@|D(O$)5MlJS z=}Qc$UNZxSub&8$B0kuH$X-U>v+0dRwk6{L4a z;U%o7JVai}@-pg}8Dog=-quOgqQ^W9kHiYpzXNEp|8JG2J<|Uuy(_+&7nw@Ki?DE! zb!QV9jBf7Imoa_y?RI}(p-~`(r! z;raV=^t;&)Mcsk;Ah($NSPFbz4-MU5mD_pFmoY=`uiHNsS*Q+-kCKRoBZGj^PK%#L zBA#`@7T_D^!%7S@R~Pcik*#7M_Tih3(HEJ?Q#MsFJcPa_a3)+0IC%E8XKF~yd7Qwl=I%HV!xtFX(? z2s!6~PL@9Lo`z_Wu|ZvTlx)&!d{6pp=@$=e3mIp00HvKDyI#98pA#aZtnkpZCuOMc6baxJ3I% zi2e>pe1#C~ST=B)AEQ4~^7AB(YSQ^Ed>Jq4oZs}JR;qkc)&sRJ=<@1RLe zC!7a+MS#ySTnV-PGh2L;9dOw~Uh8Jr%t%OHScHSJQs3N>juglJ+py$(8U7a-MFN>F zOS$HnxNmIR-sO0R^-Xq}&4;TA*^bdGIKp`$6jv!2!g<`c_ORzCSkS;pe=4k5#k$Pt zMJ_*?aDJOt9>HN6m|69>p-8>ez>|lkhxUX--c~jru#sL^BPT>yethO%uP=|G2TN1M z?pCn$8BrtJRl48XW%ahNjS%5X(RPfW_5|F-$ah#^xq&%_0$8HNXlaiGDJTe+U|Ud5kvR^86i( z1HghxnmSkt>T$iZbCVD|@kfIJCykevH{sC%##EmY-jb9lI|L3QIU(TQdN?hJi;59Ufg{hwOU3$NLao+t;xxO(?c~ zbQ*8eMzO5KcEAL%YPHhAd{bo6 z7U0aB&Be-yln4FUarIVI-HGc)+?p>9d^cWA>=iJ<1-n01{(UBu$r!wKKy!zK>vkEQ ze2AZl*#4oN>-tnv98!DDEu2mYQP?w!x1zW4AL`mk%}rJcE->2t_lx{h#NEn%OIWa& zPhnRQrt20i88&w{F=P<78?NYAf3L{^HM~2zHlUCH5wGlYUy~_azo=2FN&1=;2V|Kz zFA612kX+X@m$}8w;RS=vOCUYzjD&; zJHdVx=-*rY>Btv;fCCKBn7A_eg&e&FR7<}`)mi)OaTPZ-L{(m_{li%~VpRp_Ee_m*0ds)!qk z-V^6{c5c@RrSCl&ehYN7-_h)>Z_Li=vdC16z85Ez<3P$xqk|F3lXJE9sRa7(Tl1mm zU0l*ogy<4Ep?%Y@&@v<-CHiJ@BE6fpq-DB#7Fe{$FUhM;*2$MGL8b2)3yKqb%Tl*3 z+aXu2bZ-CU=9mWbYPSV23qNil*hA~0t>S_(NH+fYtlE$t>JCdSR5QD z)U;bx+7rO}X7k~4Xh%1Lx2U}YbD_}mB>SSs&#E_7?Us~Odr4kdl3jv7C({6nt>wJ~ z7Lp4AVBDPcNj0^en!Kj4o<=PhfjP}Nacn}4W@P^wvO_$f)}yX&H-(R~5Jc6S^I6Ok zCW_q7&ucJs^O7{I8P4m>BI;M%%9hyC0&$07pUfG%FqA>IxCmR9S zd46z8hsi~#a<`}PZhKVcMaJt(Q-OK;{lA*#Bh5ek$X=m?N+TQ;5xVHnh{gr3G}N}Fb7TdtQS|M!WVkhmyM1iF7B1TQH6Xnaq`=9 zPN9INSnz@9HKP49tf%V(Xx})C(hg1JSn zg`n<@7TbOVu1Cnbz9?wJnEenr*F!q%9g<6EkeO>ucD7K+97S&^MOaOl66qs`qElB# zTuVu)i+NHMo~rh}(%(5H>~sPTP9fNE2k^dS3^wIKzL!*ARGgow+v+jvij0a~-5e}V zw&n&6itRs3nJqA&kt=JDJcK4H;AXOLO>__Q_g+9jgXDJH@4Sj93bRfO&QdCijzy*p zgwxwCVH(!e!Zzfo$dYt{`N)kMO2X;Kiwg_u-*@F_{5uHw-v>effcV4?pyEqY(7ulf SI>MP4z{J4vHc|i1)BgZRgjhHL literal 0 HcmV?d00001 diff --git a/doc/img/edje-drag-example.eps b/doc/img/edje-drag-example.eps new file mode 100644 index 0000000..b6c3651 --- /dev/null +++ b/doc/img/edje-drag-example.eps @@ -0,0 +1,7202 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (edje-drag-example.eps) +%%CreationDate: (2011-08-03T19:13:31-03:00) +%%BoundingBox: -0 -0 300 300 +%%HiResBoundingBox: 0 0 300.083 300 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 300 300 +userdict begin +DisplayImage +0 0 +300.083 300.083 +12 +300 300 +0 +0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +0606062323234141415E5E5E9D9D9DFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +0000000000000000000000000000000000002121219E9E9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFCFCFCE3E3E3C6C6C69B9B9B282828000000000000A3A3A3FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC818181000000101010E4E4E4FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD404040000000787878 +FFFFFFFFFFFFFFFFFF000000000000FFFFFFA4A4A44F4F4F191919010101FFFFFFFFFFFFCFCFCF +7171712F2F2F0E0E0E121212353535808080F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD +8A8A8A3333330D0D0D3D3D3D8F8F8FFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6666660000001D1D1DE8E8E8FFFFFFFFFFFFFFFFFFE8E8E8 +1D1D1D000000666666FFFFFFFFFFFFFFFFFFCFCFCF7171712F2F2F0E0E0E121212353535808080 +F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF8D8D8D3A3A3A101010505050 +BCBCBCFFFFFFFDFDFD8E8E8E4242420D0D0D333333B6B6B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFF8C8C8C3C3C3C0D0D0D3434348D8D8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E3E36666663434340D0D0D1919193F3F3F +A1A1A1FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAEAEAE000000 +4F4F4FFFFFFFFFFFFFFFFFFF000000000000868686000000000000000000000000FFFFFFFFFFFF +000000000000000000000000000000000000000000272727F5F5F5FFFFFFFFFFFFFFFFFFFFFFFF +555555000000000000000000000000000000797979000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F93C3C3C0000003C3C3CF9F9F9FFFFFFF9F9F9 +3B3B3B0000003B3B3BF9F9F9FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000272727F5F5F5FFFFFFFFFFFFFFFFFFFFFFFF000000000000797979000000000000000000 +0000000D0D0DE0E0E0747474000000000000000000000000010101D7D7D7FFFFFFFFFFFFFFFFFF +FFFFFF0000000000007777770000000000000000000000000000005A5A5AFFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFA5A5A50B0B0B000000000000000000000000 +000000000000484848FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D6D6 +000000262626FFFFFFFFFFFFFFFFFF000000000000040404545454ACACACF6F6F6FFFFFFFFFFFF +FFFFFF3333339D9D9DD5D5D5F4F4F4D5D5D5A0A0A02424240000007C7C7CFFFFFFFFFFFFFFFFFF +B4B4B40000000606065E5E5EC9C9C9C8C8C85D5D5D050505000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFE8E8E81C1C1C000000666666FFFFFF +6565650000001B1B1BE7E7E7FFFFFFFFFFFFFFFFFFFFFFFF3333339D9D9DD5D5D5F4F4F4D5D5D5 +A0A0A02424240000007C7C7CFFFFFFFFFFFFFFFFFFFFFFFF0000000000000E0E0E777777D9D9D9 +BCBCBC3939390000001D1D1D0E0E0E777777D8D8D8BBBBBB3737370000008F8F8FFFFFFFFFFFFF +FFFFFFFFFFFF0000000000000404045B5B5BC8C8C8C8C8C85B5B5B040404000000B8B8B8FFFFFF +FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFDCDCDC0A0A0A030303828282BABABAECECEC +D3D3D39797971C1C1C0000008E8E8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F4F4F4000000090909FFFFFFFFFFFFFFFFFF000000000000575757FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEBEBE000000343434FFFFFFFFFFFF +FFFFFF484848000000646464FFFFFFFFFFFFFFFFFFFFFFFF606060000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCC080808000000 +4C4C4C000000070707CACACAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFBEBEBE000000343434FFFFFFFFFFFFFFFFFFFFFFFF000000000000797979FFFFFF +FFFFFFFFFFFFB1B1B1000000000000797979FFFFFFFFFFFFFFFFFFB0B0B0000000494949FFFFFF +FFFFFFFFFFFFFFFFFF0000000000005F5F5FFFFFFFFFFFFFFFFFFFFFFFFF5E5E5E0000004A4A4A +FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF5E5E5E0000008A8A8AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFB0B0B0000000383838FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFD5D5D5000000282828FFFFFFFFFFFFFFFFFF000000000000B0B0B0FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFD9D9D96E6E6E2D2D2D1414140000000000000000000000000F0F0FFFFFFF +FFFFFFFFFFFF212121000000B1B1B1FFFFFFFFFFFFFFFFFFFFFFFFAFAFAF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A6A6 +000000000000000000A1A1A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D9D96E6E6E2D2D2D +1414140000000000000000000000000F0F0FFFFFFFFFFFFFFFFFFFFFFFFF000000000000D3D3D3 +FFFFFFFFFFFFFFFFFFF1F1F1000000000000D3D3D3FFFFFFFFFFFFFFFFFFF1F1F10000000A0A0A +FFFFFFFFFFFFFFFFFFFFFFFF000000000000AFAFAFFFFFFFFFFFFFFFFFFFFFFFFFAEAEAE000000 +222222FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF2D2D2D000000020202020202 +0101010101010000000000000000000000000C0C0CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFAEAEAE000000505050FFFFFFFFFFFFFFFFFF000000000000F8F8F8FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFC6C6C6080808000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFF070707000000EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFEAEAEA000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F0F0F0151515000000222222FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6C6C6080808000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFEAEAEA +000000070707FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF0A0A0A000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFD3F3F3F0000007A7A7AFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF3B3B3B000000383838C4C4C4EBEBEBF7F7F7FFFFFFE0E0E0000000 +000000FFFFFFFFFFFFFFFFFF212121000000B2B2B2FFFFFFFFFFFFFFFFFFFFFFFFAFAFAF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF555555000000000000000000737373FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B3B3B000000 +383838C4C4C4EBEBEBF7F7F7FFFFFFE0E0E0000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000B0B0B0FFFFFFFFFFFFFFFFFFFFFFFF +AFAFAF000000222222FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF2B2B2B000000 +B5B5B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFC818181000000111111E6E6E6FFFFFFFFFFFFFFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C0C0C000000D1D1D1FFFFFFFFFFFFFFFFFFFFFFFF676767 +000000000000FFFFFFFFFFFFFFFFFF484848000000656565FFFFFFFFFFFFFFFFFFFFFFFF616161 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF9696960000000C0C0CA0A0A0040404000000AEAEAEFFFFFFFFFFFFFFFFFFFFFFFF0C0C0C +000000D1D1D1FFFFFFFFFFFFFFFFFFFFFFFF676767000000000000FFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000616161FFFFFFFFFFFFFFFFFF +FFFFFF6060600000004A4A4AFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF5F5F5F +000000282828FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFCFCFC +E4E4E4C7C7C79C9C9C282828000000000000A7A7A7FFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF292929000000535353C9C9C9EEEEEEB4B4B46A6A6A +050505000000000000FFFFFFFFFFFFFFFFFFB3B3B3000000070707626262CACACACACACA616161 +060606000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFD0D0D0070707000000A7A7A7FFFFFF8D8D8D0000000E0E0EDBDBDBFFFFFFFFFFFFFFFFFF +292929000000535353C9C9C9EEEEEEB4B4B46A6A6A050505000000000000FFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000505055E5E5EC9C9C9 +C9C9C95E5E5E050505000000B8B8B8FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFF +DDDDDD0F0F0F0000003E3E3E858585C3C3C3F4F4F4E2E2E2C5C5C58181812A2A2AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000222222A0A0A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9E9E000000000000000000000000000000 +000000898989000000000000FFFFFFFFFFFFFFFFFFFFFFFF525252000000000000000000000000 +000000737373000000090909FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFF3F3F3262626000000656565FFFFFFFFFFFFFFFFFF5151510000002E2E2EF6F6F6FFFFFF +FFFFFF9E9E9E000000000000000000000000000000000000898989000000000000FFFFFFFFFFFF +FFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000767676000000 +0000000000000000000000005A5A5AFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFF +FFFFFFFFFFFFB5B5B5141414000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +0000000606062222224040405E5E5E9E9E9EFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4C4C47272722222221B1B1B +4E4E4EA9A9A9FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD8888883232320D0D0D +3C3C3C8E8E8EADADAD0000002A2A2AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFF5D5D5D0000002C2C2CF6F6F6FFFFFFFFFFFFFFFFFFF0F0F0232323000000616161 +FFFFFFFFFFFFFFFFFFC4C4C47272722222221B1B1B4E4E4EA9A9A9FFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF +8888883939390C0C0C3333338D8D8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF1F1F18282824141411E1E1E0606061B1B1B3939397E7E7ED3D3D3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF5050500000004F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A3A3AADADAD +E2E2E2EAEAEAA3A3A3575757030303000000BDBDBDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000626262FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C5C5C55757572222220707071F1F1F464646ACACACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000 +C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000 +C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000 +C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000 +C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000 +C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000 +C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000 +C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000 +C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000 +C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000 +C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000 +C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000 +C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000C80000 +C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000C80000 +C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000C80000 +C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000C80000 +C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000C80000 +C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000C80000 +C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000C80000 +C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC80000 +C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFC80000C80000C80000C80000C80000C80000C80000C80000C80000C80000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000 +000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 +000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 +000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000 +000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000 +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 +000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/edje-drag-example.png b/doc/img/edje-drag-example.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e92c507df538cdf64b1c256b66ec20c9f29f9e GIT binary patch literal 3840 zcmeHKX*iT?A0KaTE27h)bS%}usb~@r#Y9CIrqhZ-8qvIkVzSNF5vfj0BFj+fl+nf% z$`U4&B{Z5TvSgBFdSb{7GiJwG%THTU&g*L}@%KmYr;{qN_}9xqqz z1^Nq6D3rF_?wxy4C=GLH=>7+sVbWg(g10%xJY09G;cLFPv=^M2e|oo1BnqYZ12ix`iJJ_u66=FD5D^$4~WNstsyhcFiwXYwfD8T~Wp9a}B-sWw<1p zuSk!HAKlxb+jaB9kVY5&C)0*2JF}d&sOR$4=f&eu;d+@EsW{GoTfrAU7m#TJMV~a9 z%I2r0H3x0VZjDCi?zP;9+8*RQZ~KYwH5>)hyxZvuS#(fO+>yCbLM5Nm`#$7 zeS99RW8_Gl{?@OYk&g4(w5hM}A0A?D@T(*O+sd<)!N-G=D!mWRdi>`?*z+tD z{LPH8*edx5ORbt2XRB2?YCKh~g7%te?gJs&QFyp4>|-Uo?!i$AIj^%DU<)y`DURe4%0~TfS%iBAy^awh(tiX~$t_&YbP25^vArMOWG__L7-x@Xg;R(JG zVh}7NfK64(r~aHP?rbSO4(+Go>B-I_zvs-UYaMTE&(GB{+%|oiZA&>eA?9Gz3NeR3 z2<mquq)2TTbWa46$>4N`l)Mn;)JI z5GFn??PS3f7vxdpKtUdt%VqO~UHH8*+^os*QOmsW3*x-yQ%l$FzqjXh9jKb|zUr+= zsY6B;Bk;r3#_VWFav^V8)fHL>_QWskxATf?xOr!WTHv=k1+x&z(Pkt$?@M3b4gr~mxR?=N5cI&1F2AItHLDF$1k?p7!FN+EZE zBzGV?C!P|$`VG>{6%*BMhWX5Ya;{|LVA@ucMo< zOI-hoWR9v7z)B(ObQK>L2dF;5Iy>S`M>b)E^YAia4jHDY3~~5|WLQsC88&gSxM^*x zup5q)pYE?q+;sdkXfD&_aVQV`tGR5COgI(90=T4>*3)Al49UDmdKWAPlIEre$j_2d zH$1WyJzmiVSyq4ZI#w#6bIZCIHoQd9E_Igtunh69A_P6-QwkY;M)J&NS5OXN!R1fx z$^=hZH)*#t6fwOhfZA=nB&eByJ0==zPBX)Wbv%M7f<@r_wCZzeO8Ah!S7qy(WVe-{ ztEdA|tc~|6&r+=!J&3^>Btygo7tnU~6?ug2^{*X7>Teq zeFL&|%Kg%$bgCTjG$vNr2SyK^KL?$&y!JeRiF;pSI|fT+`5T`t?dkt zJ3#&tj&)OwE&kBGMEi~Y5G_Bl|KKCgwW>^h`K39UV-pD7T0R zG|aZ%Ka0)J#M}3;R_EuJOmo>Bq#abb+_Z=L1OK(6U`;&1i)#THAyVL_GJ8NyS)qy> zWX~y~$}s61Z=1;1cWk^-CW<_)i)8Wv-(bc=;xP|NvoQguY-#)!Oz_=Ea z+|@o|Uod%cVPK^QO=8)ThIvzwfP`o>j5LO+ije6Yd4NDOFs`&KWVRWQF)9$92}xE> zG#b$q6R!3L84Y(w_V6-2a<`m;nguZV1PM8`@H`W`kLF7EHvlTEhyJUcrA zDYM9!9{3jSUhA4fNKmO2nKnodXVL^`=Zt1%_w;gxWU%jWdiMs|(K#D@ad-xjJH2}M zAl~$yx8NJDtgs3mR9|sa+Sg6qKA|#OCfiwfG2F`2Y0;7UvAapT*Tw)jo45fT1S{Wf zI*E>9JFceq=8rqL(N`IC0!XIAy>>=E-aV%4e&75E9pU%0F9* zC832rhs|oVND1ULu8ag|_Hid36UT<=7}fLu9TNr95e7WRndmmql>Mf0(y;8C`971>cTPh+0vzvKU6P?)gx97i|`es=_*NeQR~(|>qm zz@HvhE}i2{+q5);m#lmyE~!osOxHcvp78JZTNp%u-$$ltmWxm?gZ^pQRC67<1JAk_ T&e{%sz@prCdF?E6J{tcArx{4B literal 0 HcmV?d00001 diff --git a/doc/img/edje-perspective-example.eps b/doc/img/edje-perspective-example.eps new file mode 100644 index 0000000..8fae13c --- /dev/null +++ b/doc/img/edje-perspective-example.eps @@ -0,0 +1,12094 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (edje-perspective-example.eps) +%%CreationDate: (2011-08-05T18:53:54-03:00) +%%BoundingBox: -0 -0 480 320 +%%HiResBoundingBox: 0 0 480.133 320 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 480 320 +userdict begin +DisplayImage +0 0 +480.133 320.089 +12 +480 320 +0 +0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8484FA8585FE7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFA8585FA8585FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8686E5A1A1F09393FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FE89C9CE5A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD7B2B2D0BDBDFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FD8B0B0D0BDBDFF8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8585F28F8F +F28F8FF28F8FF28F8FF38E8EF58C8CF98787FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FEB9898C8C8C8E5A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FD6B5B5C8C8C8FA8585FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEF9494DDACACDDACACDDACAC +DDACACDFA8A8E4A2A2EF9393FE8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FC9C5C5CAC4C4FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +D9B1B1C8C8C8F78B8BFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE0A8A8C8C8C8C8C8C8C8C8C8C8C8C8CDC2C2 +D4B8B8E7A0A0FE8282FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FE3A3A3C8C8C8EC9999FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDCACAC +C8C8C8F39090FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDBAEAEC8C8C8C8C8C8C8C8C8C8C8C8CBC3C3D1BEBEDCAEAE +EE9393FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF38F8FEA9A9AF98686FF7F7FFF7F7FFF7F7FFF7F7FFE8080 +DDACACE3A5A5FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE0A9A9C8C8C8 +EF9595FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FD6B4B4C8C8C8C8C8C8C8C8C8C8C8C8C9C6C6CBC3C3D1BDBDE1A6A6FE8181 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FF78888D5B6B6E1A5A5FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF78A8AF29090 +FC8383FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE3A4A4C8C8C8EB9A9A +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FD1BABAC8C8C8CFBEBECFBDBDD0BEBECEC0C0CBC2C2C9C4C4D7B1B1FA8585FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FD1BBBBC8C8C8FC8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE6A0A0C8C8C8E79F9FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FCDC1C1 +C8C8C8E5A1A1E5A1A1E4A2A2DEAAAAD5B7B7CAC3C3D4B6B6F38F8FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +E89D9DC8C8C8E4A2A2FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE99B9BC8C8C8E3A4A4FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FC8C6C6C9C5C5FA8686 +FA8686F78787EE9696DEACACCBC3C3D1BDBDEC9898FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF8080C8C8C8 +CDC1C1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEC9898C8C8C8DFA9A9FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8181C8C8C8CDC0C0FF7F7FFF7F7FFD8080 +F58C8CE6A0A0D0BCBCCFBFBFE89C9CFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDBAEAEC8C8C8F09494 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEF9393C8C8C8DBADADFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF98888C8C8C8D1BABAFF7F7FFF7F7FFE8080FA8585EE9494 +D6B5B5CCC0C0E59F9FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF29191C8C8C8D8B1B1FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF29090C8C8C8D8B3B3FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FF48E8EC8C8C8D6B6B6FF7F7FFF7F7FFF7F7FFF7F7FF68989DBAEAECBC2C2 +E3A1A1FF7F7FFF7F7FFF7F7FFE8080FD8181FD8282FD8282FD8181FD8080FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFD8181FD8282FF8080FE7F7FFD8080FD8282FD8282FF7F7FFF7F7FFF8080FD8080 +FD8181FC8181FD8282FE8181FF8080FF7F7FFF7F7FFF7F7FFE7E7EFD8282FD8282FF7F7FFD8080 +FD8181FD8282FD8181FF8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7F7FFD8181FD8282 +FC8181FD8181FE8181FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7E7EFE8080FD8181FD8282 +FD8282FD8181FE8080FF7F7FFF7F7FFF7F7FFC8181CFBFBFC8C8C8F88888FD8282FD8282FD8282 +FF7F7FFF7F7FFD8282FC8181FF7F7FFF7F7FFD8181FD8282FE7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFD8080FC8181FE8181FF7F7FFF7F7FFF7F7FFE7F7FFD8181FD8282FC8181FD8181FE8181 +FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFE8080FD8181FD8282FD8282FD8181FE8080FF7F7FFF7F7FFF7F7FFF7F7FFD8080FD8282 +FC8181FF7F7FFF7F7FFF7F7FFF7F7FFE7F7FFD8282FC8181FE8080FF7F7FFF7F7FFF7F7FFE7F7F +FD8080FC8181FC8181FD8282FD8181FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8080FD8282 +FD7F7FFE7F7FFE8181FD8282FD8181FE8080FF7F7FFF7F7FFF8080FE8181FD8282FD8181FE8080 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8181FD8282FF7F7FFE8080FD8181FC8181FD8181FE8080 +FF7F7FFF7F7FFF7F7FFF7F7FF58B8BC8C8C8D4B8B8FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7F7F +FE8181FC8181FC8181FD8181FE8181FE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FEF9494C8C8C8DAB0B0FF7F7FFF7F7FFF7F7FFF7F7FF88787DFAAAACBC4C4E4A3A3FF7F7F +FF7F7FFE8080F78989EE9393EB9A9AE99A9AEB9797F38F8FFC8484FF7F7FFF7F7FFF7F7FFF7F7F +F09393E89E9EF78888F98686F19090EB9898E99D9DF98686FF7F7FFA8585F48D8DEE9595E99B9B +EB9A9AEF9393F98787FF8080FF7F7FFF7F7FFF7F7FE99C9CE89E9EFF8080F58C8CED9696E99C9C +ED9797F68C8CFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7E7EFA8383F19292EC9898E99B9BEA9999 +F09393F88787FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE8080F88888EF9494EB9999E99B9BEC9797 +F38E8EFC8383FF7F7FFF7F7FF58D8DD8B1B1C8C8C8D9B3B3E89E9EE89E9EE89E9EF58C8CFF7F7F +F19090E89E9EF68A8AFF7F7FF28E8EE99B9BF28F8FFC8181FF7F7FFF7F7FFF7F7FFF7F7FF98686 +EB9999EB9898FB8383FF7F7FFF7F7FFD8181F28E8EED9696E99B9BEA9A9AED9696F58A8AFE7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7E7EFB8484 +F09191EC9898E99B9BEA9999EF9393F88787FF7F7FFF7F7FFF7F7FFC8484EE9494E89C9CF09191 +FE8080FF7F7FFF7F7FFE7F7FF68B8BE99B9BEC9898F88989FF7F7FFF7F7FFD8181F78A8AEE9393 +EA9999EA9C9CEB9898F09191FA8686FE7E7EFF7F7FFF7F7FFF7F7FFF7F7FF09494E89E9EF88888 +F78888EF9393EA9A9AEE9696F78A8AFE8080FF7F7FF78A8AEE9393EA9B9BEC9898F78989FE7F7F +FF7F7FFF7F7FFF7F7FFF7F7FE99C9CE89E9EFF7F7FF48C8CED9696EA9C9CED9696F58B8BFF7F7F +FF7F7FFF7F7FFF7F7FF88888C8C8C8D0BBBBFF7F7FFF7F7FFF7F7FFF7F7FFE7F7FFA8686EF9292 +EB9898EA9C9CEB9999F19292F98686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEA9A9A +C8C8C8DEABABFF7F7FFF7F7FFF7F7FFF7F7FFB8484E1A6A6C9C5C5E3A3A3FF7F7FFF7F7FFD8282 +EF9292DFA7A7D7B1B1D5B4B4DAAEAEE79E9EF88888FF7F7FFF7F7FFF7F7FFF7F7FE4A0A0D2B9B9 +EE9696F58B8BE69F9FDAAEAED4B7B7EF9292FF7F7FF78989EB9898E1A9A9D7B4B4D8B3B3DFA8A8 +F09292FB8181FF7F7FFF7F7FFF7F7FDDABABD2B9B9F58B8BF09393E0A8A8D7B4B4DAAEAEE99C9C +FC8383FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFB8484E79E9EDDACACD6B6B6D6B3B3DDABABEE9696 +FF8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF88686E3A4A4DAAEAED4B6B6D7B2B2E1A5A5F48B8B +FF7F7FFF7F7FFD8383D1BABAC8C8C8C9C6C6D2B9B9D2B9B9D2B9B9D8B1B1FF7F7FF98787D2B9B9 +DAB0B0FF7F7FF88787D9B0B0D8B1B1F38E8EFF7F7FFF7F7FFF7F7FFF7F7FFB8383E89C9CD5B6B6 +E5A0A0FF7F7FFF7F7FFD8080F38D8DE1A5A5D9B0B0D6B5B5D9B0B0E3A2A2F58C8CFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE8282EF9292E0A7A7 +D8B1B1D5B4B4DBAFAFE79F9FF88989FF7F7FFF7F7FFF7F7FF09292DAAFAFD5B5B5EC9696FD8080 +FF7F7FFF7F7FFD8282E4A1A1D4B7B7DEAAAAF58989FF7F7FFF7F7FFA8686EC9999DEAAAAD7B4B4 +D5B5B5DAAFAFE59F9FF98888FE7E7EFF7F7FFF7F7FFF7F7FFF7F7FDCAEAED2B9B9F78989EF9494 +DEA8A8D6B3B3DFA9A9F09090FD8080FF7F7FEE9696E0A8A8D5B4B4DBAEAEF09191FE8080FF7F7F +FF7F7FFF7F7FFF7F7FD3B7B7D2B9B9FF7F7FEB9898DDABABD5B6B6DDADADEC9898FF7F7FFF7F7F +FF7F7FFF7F7FFB8484C8C8C8CDC1C1FF7F7FFF7F7FFF7F7FFF7F7FFE7F7FF78989E3A3A3D9ADAD +D6B6B6D7B1B1E1A7A7F18F8FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE6A0A0C8C8C8E2A6A6 +FF7F7FFF7F7FFF7F7FFF7F7FFB8585E0A9A9C9C5C5E5A1A1FF7F7FFD8181F68A8AE5A0A0D5B5B5 +CEC0C0CCC3C3D0BDBDDCADADEE9494FB8383FF7F7FFF7F7FFF7F7FE2A6A6C8C8C8E2A3A3EF9494 +DCABABD0BBBBCAC4C4E69E9EFC8282F09191E2A5A5D7B4B4CEC1C1CCC1C1D3B7B7E3A4A4F78A8A +FF7F7FFF7F7FFF7F7FDFAAAAC8C8C8E5A0A0EB9999D8B1B1CDBFBFCEBEBEDAAEAEEE9292FD8282 +FF7F7FFF7F7FFF7F7FFD8282F58C8CE2A4A4D4B6B6CDC1C1CBC2C2D1BCBCDEAAAAF19191FC8282 +FF7F7FFF7F7FFF7F7FFD8383F38F8FE0A8A8D2B8B8CCC2C2CCC2C2D3B8B8E3A1A1F98787FF7F7F +FF7F7FD9B1B1C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8F09494FF7F7FD7B3B3C8C8C8F09292 +FF7F7FE1A6A6CCC2C2E0A8A8F98686FF7F7FFF7F7FFF7F7FFF7F7FEE9494D0BDBDD4B9B9F58B8B +FF7F7FFC8282F38E8EDEA8A8D3B8B8CCC2C2CCC2C2D2BBBBE1A7A7F38D8DFD8080FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8282F28F8FDEABABD3B9B9CCC3C3 +CCC1C1D2BABAE2A6A6F48C8CFE8080FF7F7FFF7F7FE89D9DCEBFBFCCC0C0EF9595FD8080FF7F7F +FF7F7FF48B8BD1BABACBC4C4E1A6A6FC8282FF7F7FFF7F7FEE9494DDAAAAD2BBBBCBC3C3CBC3C3 +D0BBBBDDABABF38E8EFE8080FF7F7FFF7F7FFF7F7FFF7F7FCBC3C3C8C8C8F78989E3A5A5D2B8B8 +CCC3C3D5B5B5E99C9CFE8282FA8686E2A5A5D4B7B7CAC3C3D0BBBBE89E9EFE8282FF7F7FFF7F7F +FF7F7FFF7F7FC8C7C7C8C8C8F98585E0A6A6D3BABACBC4C4D2BBBBE2A7A7F88787FF7F7FFF7F7F +FF7F7FFE8181C8C8C8C9C5C5FF7F7FFF7F7FFF7F7FFF7F7FFB8484EE9292DAB0B0D0BBBBCBC4C4 +CDC1C1D5B8B8E7A1A1F88787FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE1A6A6C8C8C8E5A0A0FF7F7FFF7F7F +FF7F7FFF7F7FF68A8ADBB0B0CBC3C3E89E9EFF7F7FF98585E99B9BD8B2B2CFBEBECBC3C3CAC5C5 +CCC2C2D3BABADFA8A8F38E8EFF7F7FFF7F7FFF7F7FE5A0A0C8C8C8DBAFAFE4A0A0D4B8B8CEC1C1 +C9C5C5E1A7A7F88686E79F9FD6B4B4D1BDBDCBC3C3CAC5C5CDC0C0D5B7B7E99999FF7F7FFF7F7F +FF7F7FE89C9CC8C8C8D7B2B2E4A2A2D2BABACCC2C2CAC3C3D0BCBCDDAAAAF28E8EFF7F7FFF7F7F +FF7F7FFB8484EC9797D9AFAFD0BDBDCBC2C2CAC5C5CCC3C3D1BBBBDDABABF09191FF7F7FFF7F7F +FF7F7FFB8484EB9898D8B0B0CFBDBDCBC3C3C9C5C5CCC2C2D3B9B9E6A0A0FF7F7FFF7F7FEE9595 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8D8B3B3FF7F7FF09393C8C8C8D7B3B3FF7F7FF68A8A +D9B2B2CFBFBFE89B9BFF7F7FFF7F7FFF7F7FFF7F7FF78888DBAFAFCDC0C0E69E9EFF7F7FFD8282 +EF9393DBADADD0BCBCCCC2C2C9C5C5CBC3C3D0BDBDDBAFAFED9696FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8181F19292DBABABD0BBBBCDC2C2C9C5C5CBC3C3 +CFBDBDD9AFAFEC9797FF7F7FFF7F7FFD8181EB9797CFBEBECEBFBFE99C9CFE7F7FFF7F7FFC8484 +E2A5A5CCC3C3D3B9B9F28F8FFF7F7FFF7F7FFC8383DAAFAFD2BABACCC2C2C9C5C5CAC5C5CEC0C0 +D6B6B6E59F9FFE8080FF7F7FFF7F7FFF7F7FFC8484C8C8C8CAC4C4ED9696D5B7B7CDC0C0CAC5C5 +D0BDBDDDACACFB8484ED9696D5B6B6CEBFBFC9C5C5CDC0C0DBB0B0FB8585FF7F7FFF7F7FFF7F7F +FF8080C8C8C8C8C7C7EF9595D5B6B6CDBFBFC9C5C5CCC0C0D5B6B6EB9A9AFF7F7FFF7F7FFF7F7F +FF7F7FC9C5C5C8C8C8FE8282FF7F7FFF7F7FFF7F7FF58C8CDFA7A7D2BABACDC0C0CAC6C6CAC4C4 +CDBFBFD7B5B5E79D9DFD8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDDACACC8C8C8E99B9BFF7F7FFF7F7FFF7F7FFF7F7F +F29191D5B5B5CDC1C1EA9B9BFF7F7FF68B8BDCACACCBC3C3C9C6C6C8C7C7C9C8C8C9C7C7C9C6C6 +D1BBBBEA9999FF7F7FFF7F7FFF7F7FE99D9DC8C8C8D5B8B8DBADADC9C5C5C9C7C7C8C7C7DBADAD +F78989DEABABCAC5C5CAC7C7C9C7C7C8C7C7C8C6C6CAC6C6D9B2B2FF7F7FFF7F7FFF7F7FF29090 +C8C8C8CEBFBFDEABABCAC6C6C8C6C6C9C8C8C9C7C7CDC1C1E2A3A3FF7F7FFF7F7FFF7F7FFD8282 +E99B9BCCC1C1C9C6C6C9C7C7C8C7C7C8C7C7C9C7C7CBC4C4DBADADFF7F7FFF7F7FFF7F7FFE7E7E +EA9B9BCBC2C2C9C6C6C9C7C7C8C7C7C8C7C7C9C6C6CAC5C5FC8282FF7F7FFF7F7FCCC1C1C8C8C8 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8F88989FF7F7FD0BCBCC8C8C8F68B8BFF7F7FEB9898CEBFBF +D4B5B5F78989FF7F7FFF7F7FFF7F7FFF7F7FE2A4A4CCC1C1DEA9A9F88787FF7F7FF28F8FD5B2B2 +CAC4C4C9C7C7C8C7C7C9C8C8C8C6C6C9C5C5D4B8B8F19191FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF68C8CDBACACCBC3C3C8C6C6C8C7C7C9C8C8C9C7C7C9C6C6 +D1BBBBEB9A9AFF7F7FFF7F7FFD7F7FEC9898CEBCBCCEBFBFE69E9EFE7F7FFF7F7FF09393D3BCBC +CDC2C2E2A5A5FD8080FF7F7FFF7F7FEF9494CAC5C5C9C6C6C8C7C7C8C7C7C8C7C7C9C7C7CCC3C3 +DDABABFE8080FF7F7FFF7F7FFF7F7FF48D8DC8C8C8CEC1C1DEA8A8C9C5C5C8C6C6C8C7C7C9C5C5 +D3B9B9F78B8BDFA7A7C9C5C5C9C7C7C8C7C7C9C6C6CDBFBFF78888FF7F7FFF7F7FFF7F7FFE8181 +C8C8C8C8C6C6E3A3A3CAC5C5C9C7C7C8C7C7C8C6C6CAC6C6DDACACFE8181FF7F7FFF7F7FFF7F7F +CCC1C1C8C8C8FA8787FF7F7FFF7F7FFF7F7FEF9393D2BBBBCAC5C5C9C7C7C9C8C8C8C7C7C8C6C6 +CAC6C6D5B3B3F88A8AFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FD8B1B1C8C8C8ED9696FF7F7FFF7F7FFC8181F88787E89E9ED1BCBC +D0BDBDED9696FE8080EE9595D5B6B6CDBFBFD3B8B8D7B3B3D9B3B3D5B6B6CFBEBECDBFBFE1A6A6 +FB8686FF7F7FFF7F7FEC9898C8C8C8CEBEBED7B2B2CFBCBCD6B5B5DBB1B1E4A3A3F78888D9B0B0 +CAC6C6D0BDBDD7B4B4D9B1B1D8B3B3D3B8B8D3BABAFF7F7FFF7F7FFF7F7FFC8484C8C8C8C9C6C6 +D9B0B0CFBFBFD6B4B4D6B4B4CFBFBFC8C6C6D4B6B6F88989FF7F7FFF7F7FFD8181E5A2A2CDC0C0 +D0BCBCD5B7B7D9B2B2D8B3B3D4B8B8CCC2C2CFBBBBEE9696FD8181FF7F7FFC8181E89E9ED0BDBD +CBC3C3D0BCBCD6B5B5D8B2B2D6B5B5D0BEBEEA9A9AFF7F7FFF7F7FEB9898D1BCBCC8C8C8D1BBBB +DAAFAFDAAFAFDAAFAFEB9A9AFF7F7FE89C9CC8C8C8DDABABFF7F7FF98686E1A6A6CCC2C2DFA7A7 +FD8080FF7F7FFF7F7FFE7F7FF38F8FD0BCBCD1BCBCF18F8FFF7F7FF88888DDABABCAC2C2D2BABA +D6B5B5D9B1B1D7B4B4D2BABACBC4C4D4B6B6F78989FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFD8181E4A2A2CCC0C0D0BCBCD5B7B7D9B2B2D8B3B3D4B8B8CCC2C2D0BBBB +EE9595FD8181FF7F7FFE7F7FEA9A9AD2BBBBCEBEBEE79D9DFB8484F88888DEAAAACCC1C1D8B3B3 +F39090FE7E7EFF7F7FFF7F7FE4A1A1D0BEBED5B6B6D9B2B2D8B1B1D6B6B6D0BEBECCC2C2DDABAB +F98787FF7F7FFF7F7FFF7F7FED9797C8C8C8CEC0C0D8B3B3D3BABAD8B4B4D4B9B9CCC3C3D1BBBB +E79E9ED8B2B2D2BBBBD7B3B3D4B8B8CBC2C2CDC0C0F38E8EFF7F7FFF7F7FFF7F7FFC8282C8C8C8 +C9C7C7D9B0B0CFBFBFD6B4B4D6B4B4CFBEBEC9C7C7D4B7B7F78989FF7F7FFF7F7FFF7F7FCFBDBD +C8C8C8F68B8BFF7F7FFF7F7FFD8181E79E9ECEBCBCCFBDBDD4B7B7D8B2B2D8B3B3D4B7B7CDC1C1 +D0BDBDEA9A9AFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FD4B8B8C8C8C8F19191FF7F7FFF7F7FFA8585F19292DCABABCDC2C2D3B7B7F19292 +FC8282E5A1A1CEBEBED2B8B8E1A8A8E89C9CEB9A9AE5A2A2D8B3B3CDC2C2DAB2B2F48D8DFF7F7F +FF7F7FEF9494C8C8C8CAC4C4D2BABAD7B1B1E4A0A0EF9595F29090F98686D4B8B8CAC6C6D7B3B3 +E79E9EED9696EA9999E2A4A4D1BBBBFE8181FF7F7FFF7F7FFF7F7FCEBFBFC8C8C8D0BFBFD5B6B6 +E4A3A3E69E9EDAB0B0CDC3C3CCC1C1E89A9AFC8383FF7F7FFC8383E2A5A5CDC0C0D4B6B6E1A6A6 +E89B9BEA9999E5A3A3D5B4B4CCC1C1DCADADF58B8BFF7F7FFC8282EA9A9ACEBEBECBC2C2D5B5B5 +E2A5A5EB9999E99C9CDFAAAADBADADFF7F7FFF7F7FFD8282E99A9AC8C8C8CCC2C2EF9393EF9393 +EF9393F09393FF7F7FFF7F7FC9C5C5C8C8C8FC8484FF7F7FF78A8ACEBEBECCC1C1F48F8FFE7F7F +FF7F7FFF7F7FFD8484D8B0B0CBC5C5E89C9CFC8282FC8383E2A5A5CDC0C0D4B6B6E1A6A6E89B9B +EA9999E4A3A3D6B5B5CDC2C2DCADADF68C8CFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFD8080F19292D2BBBBCCBFBFDDAAAAE69F9FEC9898E89E9EDDABABCDC2C2CEBDBDF09595 +FF7F7FFF7F7FFE7E7EF09292CDBFBFCCC2C2E5A0A0FD8282EA9A9ACFBDBDCCC2C2E99B9BFC8383 +FF7F7FFF7F7FFF7F7FDDABABDBADADE69F9FED9898EB9A9AE4A3A3D5B6B6CCC2C2DCACACF68B8B +FF7F7FFF7F7FFF7F7FE5A0A0C8C8C8CCC1C1D5B5B5E1A8A8E89D9DDDAAAACEBFBFCFBFBFD8B2B2 +D4B7B7DEAAAAE99D9DE1A8A8CFBEBECFBFBFEF9494FF7F7FFF7F7FFF7F7FFB8484C8C8C8C9C7C7 +D0BCBCD6B5B5E69E9EE69E9ED7B3B3C9C4C4CDC0C0EF9292FD8080FF7F7FFF7F7FD2B9B9C8C8C8 +F28F8FFF7F7FFF7F7FFB8383DFA7A7CDC1C1D5B5B5E1A5A5E99B9BEA9A9AE3A3A3D5B6B6CDC2C2 +DEABABFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +CFBDBDC8C8C8F19292FA8585FA8585F38F8FE69E9ED2B7B7C9C4C4D8B0B0F38D8DFA8686DDACAC +CBC3C3D9B0B0EB9696F78A8AF98585F39191E2A7A7CEC0C0D3BBBBED9696FF7F7FFF7F7FF29090 +C8C8C8C8C6C6CEBFBFE0A7A7F09191FE8181FF7F7FFD8181CEBDBDC8C7C7DBACACF38F8FFC8282 +FA8686F09191DCACACF88888FF7F7FFF7F7FFF7F7FD7B2B2C8C8C8CAC5C5D7B2B2EB9696F58D8D +E89C9CD4B7B7CAC6C6DAAFAFF68B8BFF7F7FFB8484E4A1A1CAC3C3D5B6B6EA9A9AF48C8CFB8585 +F48D8DE5A0A0D0BEBECDC1C1E99C9CFF7F7FFE8080F19292C9C6C6C9C5C5D9B1B1E99C9CF88686 +F98585F19292DCADADF88686FF7F7FFF7F7FFF7F7FD6B5B5C8C8C8EE9595FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FE1A6A6C8C8C8E3A4A4FF7F7FFE8181E89E9ECAC4C4D9B0B0FA8585FF7F7FFF7F7F +FD8181EC9898C8C5C5D5B7B7FC8282FE8080F19393CAC4C4CDC0C0E89E9EF29090FB8383F68989 +EC9898D4B9B9C9C6C6E1A6A6FB8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +F88686DCAEAECAC2C2DAAFAFED9797F68989F98686F19090E1A8A8CEC0C0D3B9B9EE9595FF7F7F +FF7F7FFE8080F09191D0BDBDCCC2C2E2A6A6F78989D9B0B0C9C6C6D5B7B7FB8484FF7F7FFF7F7F +FF7F7FFF7F7FDAAFAFEA9A9AF58A8AFC8282F88787EE9393DAB2B2CBC4C4DBAFAFF68A8AFF7F7F +FF7F7FFF7F7FDEAAAAC8C8C8CBC3C3DAB1B1EE9494F58B8BE69F9FD0BBBBC9C3C3CDBFBFD5B5B5 +EB9999F68A8AEA9999D3B9B9CFBFBFEB9999FF7F7FFF7F7FFF7F7FFA8686C8C8C8C8C7C7CCC3C3 +E0AAAAF48D8DF58D8DE1A7A7CDC1C1C9C7C7E89D9DFC8282FF7F7FFF7F7FD6B6B6C8C8C8EF9595 +FF7F7FFF7F7FF88686DBAEAEC9C2C2DAAEAEEC9696F68989F98686F29191E0A8A8CEC0C0D3B9B9 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FCBC3C3C8C8C8 +E2A6A6E5A1A1E5A1A1E1A7A7D9B0B0CEBFBFCAC2C2E1A5A5F98888F38E8ED8B3B3D0BBBBE4A2A2 +F48D8DFA8585FC8383F88989EC9999D6B4B4CFBFBFE89F9FFF7F7FFF7F7FF58B8BC8C8C8C9C6C6 +D5B8B8EC9797F68A8AFE8080FF7F7FFF7F7FD4B6B6C8C5C5DEA9A9F48D8DFC8282FC8282F78888 +EC9696F78888FF7F7FFF7F7FFF7F7FE1A6A6C8C8C8CDC1C1DFABABF18F8FF98787F48C8CE4A2A2 +CFBEBED0BDBDEA9898FF7F7FFB8383E6A0A0CAC3C3D9B1B1F19090F78888FD8181FA8585F48E8E +E0A9A9CAC3C3DBAFAFF98686FF7F7FEF9595D3BCBCCBC1C1E0A8A8EF9494F88787FC8383F98787 +EF9393F48E8EFF7F7FFF7F7FFF7F7FEB9999C8C8C8D8B1B1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +F98888C8C8C8CBC3C3FF7F7FFF7F7FFD8181D4B6B6C9C6C6EA9999FD8282FF7F7FFF7F7FF38E8E +D3B9B9CEBDBDEF9494FE7F7FF38E8ED8B3B3D0BBBBE4A2A2F48D8DFA8585FC8383F88989EC9999 +D6B4B4CFBFBFE89F9FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEB9898 +CCC3C3D5B5B5EE9595F68A8AFC8383FB8484F58C8CE3A2A2CEBEBED7B4B4F38E8EFF7F7FFF7F7F +FE8080ED9494D5B6B6CEC0C0DFAAAAE2A3A3CFBDBDD0BCBCE89C9CFD8181FF7F7FFF7F7FFF7F7F +FC8383E99B9BF58C8CFA8484FE8080FA8484F48C8CE0A6A6CAC4C4DAB1B1FA8686FF7F7FFF7F7F +FF7F7FD7B4B4C8C8C8D2BBBBE79F9FF78A8AFA8787EB9898D4B7B7C9C5C5D1BDBDE2A7A7F48D8D +FA8686F19393D9B1B1CFBFBFE69C9CFF7F7FFF7F7FFF7F7FF98787C8C8C8C9C7C7D3B9B9ED9797 +F88787F98787ED9595D5B5B5C9C5C5E0A9A9F98585FF7F7FFF7F7FD9B2B2C8C8C8EB9999FF7F7F +FF7F7FF48D8DDAB0B0D0BDBDE2A4A4F48E8EF98585FC8383F88888EC9696D8B3B3CEC1C1FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8383C8C8C8C8C8C8CFBDBDD0BDBD +D0BDBDCEBEBECCC1C1CAC6C6CCC0C0EB9898FD8282EC9797D2B9B9D6B4B4EF9494FB8282FE8181 +FE8080FD8181F58A8ADFA8A8CDC3C3E0A7A7FF7F7FFF7F7FF98888C8C8C8C9C6C6D8B0B0F98686 +FC8282FE7F7FFF7F7FFF7F7FDAAFAFCAC4C4DFA7A7F68B8BFD8080FE7F7FFD8181FB8585FC8282 +FF7F7FFF7F7FFF7F7FEB9A9AC8C8C8CEC1C1E3A5A5FB8484FE8181FC8181F58A8AD8B2B2C9C6C6 +DCACACFF7F7FFF7F7FE2A3A3CBC3C3DDAAAAF68A8AFD8282FE8080FD7F7FFD8282F09191D5B4B4 +D0BCBCEC9898FF7F7FF09191D5B5B5CCC2C2DFA7A7F98585FC8282FE8080FE8080FC8383FA8686 +FF7F7FFF7F7FFF7F7FFF7F7FCAC3C3C8C8C8F98888FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDAAFAF +C8C8C8E99C9CFF7F7FFF7F7FEC9797D1BBBBD5B6B6F09292FF7F7FFF7F7FF88787E0A8A8CBC2C2 +DEA8A8FE7F7FFC8282DFA9A9CAC7C7E1A5A5FB8686FD8282FE7F7FFE8080FC8282EE9595D1BCBC +D3BABAF29090FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF58D8DD9B1B1CFBDBD +E89D9DFB8383FD8181FE7F7FFE8181FB8484E99C9CC8C7C7D5B3B3FD8383FF7F7FFF7F7FFE7F7F +F39090D3B8B8CBC4C4D8B2B2D1B9B9CAC4C4DEA9A9F78989FF7F7FFF7F7FFF7F7FFF7F7FFC8181 +FA8686FD8282FE8080FE7F7FFD8080FA8585E99C9CC9C6C6D8B4B4FF7F7FFF7F7FFF7F7FFF7F7F +D0BDBDC8C8C8DAB0B0F48D8DFD8181FD8181F19090D6B5B5C8C6C6D4B6B6EC9696FC8282FD8080 +F68B8BDEAAAACEC0C0E5A2A2FF7F7FFF7F7FFF7F7FF88989C8C8C8C9C5C5DBAFAFFA8585FD8181 +FE8181FB8585DEA9A9CBC3C3D7B3B3F68A8AFF7F7FFF7F7FDCAEAEC8C8C8E79D9DFF7F7FFF7F7F +F19191D6B4B4D3BABAEB9999FB8282FD8080FE7F7FFE8181F78686E5A1A1CAC5C5FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF88888C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C9C6C6 +CAC4C4CEC0C0D7B2B2F38E8EFE7F7FE79D9DCFBDBDD5B6B6E99B9BF28F8FF28F8FF28F8FF28F8F +EF9595DDABABCAC4C4DAAEAEFF7F7FFF7F7FFC8484C8C8C8C8C8C8DEAAAAFC8282FF7F7FFF7F7F +FF7F7FFF7F7FE3A3A3CDC0C0D9B2B2EB9999F28E8EF58B8BF98787FC8282FF7F7FFF7F7FFF7F7F +FF7F7FF48E8EC8C8C8CCC4C4E4A3A3FF7F7FFF7F7FFF7F7FFF7F7FE4A2A2CCC2C2D3B8B8F58B8B +FF7F7FE69F9FCEBEBED6B5B5E99A9AF28F8FF28F8FF28F8FF28F8FED9595DCADADCBC4C4DDADAD +FF7F7FFA8686D7B4B4C9C6C6DAAFAFFE7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FDFA8A8C8C8C8E3A4A4FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF29191C8C8C8D1BBBB +FF7F7FFF7F7FFE8080DFA7A7C9C6C6DEABABFC8484FF7F7FFF7F7FE79E9ECEBEBED8B1B1F48D8D +FF7F7FEA9999D1BCBCD2B8B8E89E9EF28F8FF28F8FF28F8FF28F8FEF9393E0A8A8CAC6C6D6B3B3 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE5A0A0CFC0C0D7B5B5EA9A9A +F28F8FF28F8FF28F8FF28F8FEE9696DCAEAECAC3C3DDABABFF7F7FFF7F7FFF7F7FFE7F7FF48A8A +D2BABAC8C6C6D3B7B7C9C5C5D0BDBDEF9393FC8080FF7F7FFF7F7FFF7F7FFF7F7FFE8080FA8484 +F78B8BF48D8DF38F8FF28F8FEF9494DFA9A9CAC4C4D9AFAFFF7F7FFF7F7FFF7F7FFE8080C9C6C6 +C8C8C8E3A2A2FB8282FF7F7FFF7F7FF68C8CD5B7B7C8C8C8DBAEAEF48B8BFF7F7FFF7F7FF98686 +E0A7A7CDC1C1E3A4A4FF7F7FFF7F7FFF7F7FF68A8AC8C8C8C9C4C4E2A5A5FF7F7FFF7F7FFF7F7F +FF7F7FE59F9FCDC1C1D2B9B9F48E8EFF7F7FFF7F7FDEAAAAC8C8C8E4A2A2FF7F7FFF7F7FF19191 +D3B7B7CFBEBEE3A1A1F28F8FF28F8FF28F8FF28F8FF19090E5A1A1C9C7C7D1BABAFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FF48E8EC8C8C8C8C8C8C8C8C8C8C8C8C8C8C8CAC3C3CEBEBED8B2B2 +E89D9DF98686FF7F7FE4A2A2CDC0C0CFBFBFD9B1B1DDABABDDABABDDABABDDABABDBAEAED3B9B9 +C9C5C5D4B4B4FF7F7FFF7F7FFF8080C9C4C4C8C8C8E3A4A4FB8484FF7F7FFF7F7FFF7F7FFF7F7F +ED9797D3B9B9CFBFBFD9B2B2DEA8A8E5A1A1ED9797F78A8AFE7F7FFF7F7FFF7F7FFF7F7FFD8282 +C8C8C8C8C8C8E5A2A2FB8282FF7F7FFF7F7FFF7F7FEF9494D3B8B8CEBFBFEB9999FF7F7FED9797 +D0BCBCCCC1C1D6B3B3DDABABDDABABDDABABDDABABDCACACD6B5B5C8C7C7CDBEBEF98484FF7F7F +DDABABCBC3C3DAAFAFF58B8BFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +F48D8DC8C8C8CEC0C0FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD3B8B8C8C8C8EE9494FF7F7F +FF7F7FF28F8FD7B2B2CFBEBEE79C9CFF7F7FFF7F7FF48D8DD3B7B7CEBFBFEB9898FF7F7FFD8181 +D6B5B5C8C6C6D2B8B8DCADADDDABABDDABABDDABABDDABABD9B1B1CDBFBFCBC2C2E69E9EFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8383D5B5B5C8C7C7D3B8B8DDADADDDABAB +DDABABDDABABDDABABD9B1B1CDC0C0CBC2C2E89C9CFF7F7FFF7F7FFF7F7FFD8080F28E8ED9B1B1 +CAC6C6CDC0C0CBC4C4E0A7A7FB8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFB8383F09292E7A0A0 +E1A6A6DEAAAADDABABDBAFAFD1BBBBCBC4C4DFA9A9FF7F7FFF7F7FFF7F7FF78989C8C8C8CBC5C5 +EE9494FE7F7FFF7F7FFF7F7FF88787D2BABAC8C8C8E3A5A5F98686FF7F7FFF7F7FFB8484E1A6A6 +CAC2C2E1A6A6FF7F7FFF7F7FFF7F7FF58C8CC8C8C8CBC4C4E89C9CFF7F7FFF7F7FFF7F7FFF7F7F +EC9898CFBEBED0BDBDF09191FF7F7FFF7F7FE1A6A6C8C8C8E0A7A7FF7F7FFF7F7FF28F8FD2B9B9 +CBC4C4D5B5B5DDABABDDABABDDABABDDABABDDABABD7B3B3CAC4C4CDC0C0FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FEF9393C8C8C8C8C8C8C8C8C8C8C8C8C8C7C7CCC1C1D2B8B8E3A4A4F98787FF8080 +FF7F7FE1A7A7CCC3C3C8C7C7C8C6C6C8C6C6C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C9C7C7D0BCBC +FF7F7FFF7F7FFF7F7FCDC1C1C8C8C8E79F9FFB8484FF7F7FFF7F7FFF7F7FFF7F7FF48D8DDAAFAF +C8C8C8C8C7C7CAC3C3D3B9B9DFA9A9EF9393FE8181FF7F7FFF7F7FFF7F7FFF7F7FD1BBBBC8C8C8 +E3A2A2FA8686FF7F7FFF7F7FFF7F7FF78989DEABABCAC3C3DEA9A9FF7F7FF68C8CD0BCBCC8C7C7 +C8C6C6C8C6C6C8C6C6C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C9C4C4EA9A9AFF7F7FE89D9DCDC1C1 +D5B5B5F29191FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD4B8B8 +C8C8C8EE9696FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEB9A9AC8C8C8D7B4B4FF7F7FFF7F7FFD8181 +ED9595C8C7C7CEBDBDFB8484FF7F7FFF7F7FDBAFAFCAC5C5E2A4A4F98686FF7F7FE89C9CCEC1C1 +C8C7C7C8C6C6C8C6C6C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C8C8CAC3C3F98686FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEC9898CEBFBFC8C7C7C8C6C6C8C6C6C8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C8C8CAC4C4F58B8BFF7F7FFF7F7FFF7F7FFF7F7FF48C8CDAB0B0C8C8C8 +C8C8C8D4B7B7F19191FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF88989E2A4A4D4B7B7CDBFBF +C9C5C5C8C7C7C8C8C8C8C8C8CAC5C5E4A1A1FF7F7FFF7F7FFF7F7FF09393C8C8C8D0BDBDF78989 +FF7F7FFF7F7FFF7F7FFD8282CFBEBEC8C8C8EB9999FC8282FF7F7FFF7F7FFD8080E2A6A6C9C6C6 +E0A8A8FF7F7FFF7F7FFF7F7FF48D8DC8C8C8CBC2C2EF9494FF7F7FFF7F7FFF7F7FFF7F7FF19090 +D2BBBBCDC0C0ED9494FF7F7FFF7F7FE4A1A1C8C8C8DDACACFF7F7FFF7F7FF48C8CD0BDBDC8C7C7 +C8C6C6C8C6C6C8C6C6C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C9C4C4FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +EB9999C8C8C8CDC0C0DDACACDDACACDCABABDFA7A7E4A2A2EF9696FC8484FE7E7EFF7F7FDEABAB +CAC3C3C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C7C7CDBFBFFF7F7FFF7F7F +FF7F7FD0BCBCC8C8C8E89C9CFC8383FF7F7FFF7F7FFF7F7FFF7F7FFA8686E89D9DD3B9B9CCC2C2 +C9C5C5CEBFBFD5B6B6DFA9A9EC9898FB8484FF7F7FFF7F7FFF7F7FDAAFAFC8C8C8DFA8A8F98686 +FF7F7FFF7F7FFF7F7FFC8383E99A9AC9C6C6D2B9B9FF7F7FFF7F7FD2BABAC9C6C6C8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C6C6DAAFAFFF7F7FF58B8BCDC0C0CCC3C3F09191 +FE7E7EFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE89C9CC8C8C8D8B1B1 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FCDC1C1C8C8C8F48E8EFF7F7FFF7F7FF88585DCABAB +CCC3C3E1A6A6FC8383FD8181EC9696CCC2C2D2BABAF78989FF7F7FFF7F7FD1BABAC9C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C6C6DBADADFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDAAFAFCBC5C5C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7 +C8C7C7C8C8C8C8C7C7D0B9B9FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48C8CD3B7B7C8C6C6C9C4C4 +E1A4A4F98686FF7F7FFF7F7FFF7F7FFF7F7FFE8080F68989E3A1A1D6B5B5CEBFBFCAC3C3C8C7C7 +C8C7C7C8C8C8C8C8C8C9C5C5EB9898FF7F7FFF7F7FFF7F7FE99C9CC8C8C8D7B5B5FB8484FF7F7F +FF7F7FFF7F7FFD8282CAC4C4C8C8C8F29090FE8080FF7F7FFF7F7FFE8080DFA8A8C8C6C6E1A5A5 +FF7F7FFF7F7FFF7F7FF38F8FC8C8C8CDC1C1F48E8EFF7F7FFF7F7FFF7F7FFF7F7FF68B8BD5B8B8 +CCC3C3EB9898FF7F7FFF7F7FE79E9EC8C8C8DAB0B0FF7F7FFF7F7FF78787CEBFBFC8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C9C6C6FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE79F9FC8C8C8 +D5B5B5F29090F29090F28F8FF38E8EF58C8CF98787FE8080FF7F7FFF7F7FDBAEAEC9C5C5C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C7C7CAC4C4FE8181FF7F7FFF7F7FD3B8B8 +C8C8C8E99B9BFD8181FF7F7FFF7F7FFF7F7FFF7F7FFD8080F58E8EDFA8A8D0BABAC9C6C6CAC4C4 +CDC2C2D0BCBCD8AFAFF39090FE8181FF7F7FFF7F7FE4A3A3C8C8C8DAAFAFFA8585FF7F7FFF7F7F +FF7F7FFF7F7FF88989CAC4C4CAC3C3F68A8AFF7F7FDBAEAEC9C5C5C8C7C7C8C7C7C8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C8C8C8C7C7CAC4C4FD8080FF7F7FD4B8B8C9C6C6EA9C9CFC8282FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8282C8C6C6C8C8C8F88989FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FE4A3A3C8C8C8DDADADFF7F7FFF7F7FFF8080F68C8CCCC0C0CAC5C5 +F29090FD7F7FF58989D4B8B8CDC2C2EC9A9AFE8181FF7F7FE89D9DCBC4C4C8C7C7C8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C6C6F09393FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FF68989CBC2C2C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7 +C8C8C8C8C7C7E0A8A8FF7F7FFF7F7FFF7F7FFF7F7FFE7F7FF68B8BCBC2C2C8C7C7CCC0C0F29090 +FE8080FF7F7FFF7F7FFF7F7FFF7F7FFA8383E99B9BD2B9B9CDC1C1CAC5C5C9C6C6C8C7C7C8C8C8 +C8C8C8C8C8C8C9C7C7F38F8FFF7F7FFF7F7FFF7F7FE2A6A6C8C8C8DDABABFE8181FF7F7FFF7F7F +FF7F7FFA8787C8C8C8C8C8C8F98787FE7E7EFF7F7FFF7F7FFF7F7FDCAAAAC8C7C7E3A3A3FF7F7F +FF7F7FFF7F7FF29090C8C8C8CEC0C0F98888FF7F7FFF7F7FFF7F7FFF7F7FFA8686D7B4B4CAC4C4 +E79B9BFF7F7FFF7F7FEA9A9AC8C8C8D6B4B4FF7F7FFF7F7FFA8383CCC2C2C8C7C7C8C7C7C8C7C7 +C8C7C7C8C7C7C8C7C7C8C7C7C8C7C7C8C8C8C8C7C7FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE2A4A4C8C8C8DDABABFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDAB0B0C8C5C5CCC4C4CFBFBFCFBDBD +CFBDBDCFBDBDCFBDBDCFBDBDCFBDBDCFBDBDCFBDBDFD8484FF7F7FFF7F7FD7B4B4C8C8C8E89C9C +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8282EC9797DBAEAED1BBBBCEBEBECDC1C1CAC4C4 +CDBFBFE79F9FFA8484FF7F7FFF7F7FED9797C8C8C8D2BABAF98484FF7F7FFF7F7FFF7F7FFF7F7F +FA8585D4B6B6CAC5C5EA9999FF7F7FE79F9FC9C4C4C9C4C4CEBFBFCFBDBDCFBDBDCFBDBDCFBDBD +CFBDBDCFBDBDCFBDBDCFBDBDF19393FF7F7FE4A5A5CAC5C5DCAEAEFB8585FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDDACACC8C8C8E3A4A4FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFA8585C8C8C8C8C8C8F98686FF7F7FFF7F7FFF7F7FE3A5A5CCC1C1DBAFAFF68C8C +F98686E3A4A4CAC4C4DAB2B2FF7F7FFF7F7FFF7F7FD0BBBBC8C6C6CCC2C2CFBEBECFBDBDCFBDBD +CFBDBDCFBDBDCFBDBDCFBDBDCFBDBDD7B2B2FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FE6A1A1CAC5C5CAC5C5CEBFBFCFBDBDCFBDBDCFBDBDCFBDBDCFBDBDCFBDBDCFBDBD +CFBDBDF19090FF7F7FFF7F7FFF7F7FFF7F7FFC8282EA9A9ACAC2C2C9C5C5D3B8B8FA8484FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FF48C8CDAB1B1CAC5C5CBC2C2CEBFBFCFBEBED0BEBED0BEBECEC0C0 +C8C8C8C8C8C8FB8585FF7F7FFF7F7FFF7F7FDBAEAEC8C8C8E5A1A1FF7F7FFF7F7FFF7F7FFF7F7F +F58D8DC8C8C8CBC3C3FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDBAFAFC8C8C8E5A1A1FF7F7FFF7F7F +FF7F7FF19292C8C8C8CEBFBFFB8787FF7F7FFF7F7FFF7F7FFF7F7FFA8484D9B2B2C9C5C5E69E9E +FF7F7FFF7F7FED9797C8C8C8D3B9B9FF7F7FFF7F7FFF7F7FCFBFBFC8C6C6CCC1C1CFBEBECFBDBD +CFBDBDCFBDBDCFBDBDCFBDBDCFBDBDCFBDBDFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDEAAAAC8C8C8E1A7A7FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDBAEAECAC5C5D4B7B7E0A6A6E5A1A1E5A1A1E5A1A1 +E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1FC8282FF7F7FFF7F7FDAB0B0C8C8C8E5A1A1FE7E7EFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF68B8BEC9797E59F9FE1A7A7DBAEAED2BABACDC1C1DBADAD +F58D8DFF7F7FFF7F7FF68C8CC8C8C8CAC6C6F38F8FFD7F7FFF7F7FFF7F7FFF7F7FF88787DCACAC +C9C3C3E0A6A6FF7F7FF28E8ECEC1C1CAC4C4DCABABE5A2A2E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1 +E5A1A1E5A1A1F09494FF7F7FF28E8ECDC1C1CDC1C1F28F8FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF19191C8C8C8CEBFBFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FDDACACC8C8C8E2A5A5FF7F7FFF7F7FFF7F7FF88888D7B2B2C9C5C5E5A0A0FD8282EA9A9A +CFBEBED4B7B7F09090FF7F7FFF7F7FEB9898CCC2C2CEC1C1DEAAAAE5A1A1E5A1A1E5A1A1E5A1A1 +E5A1A1E5A1A1E5A1A1E5A1A1F38E8EFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FD6B5B5C9C5C5D6B4B4E2A6A6E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1E69F9F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF28F8FD7B0B0C9C6C6CAC6C6D7B2B2F48E8EFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FE89E9ECFBEBECCC0C0D9B2B2E0A6A6E3A3A3E4A1A1E4A3A3DBB0B0C8C8C8 +CFBDBDFF7F7FFF7F7FFF7F7FFF7F7FD4B7B7C8C8C8EB9999FF7F7FFF7F7FFF7F7FFF7F7FF09393 +C8C8C8CFBDBDFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD8B3B3C8C8C8E79D9DFF7F7FFF7F7FFF7F7F +F09494C8C8C8CEBFBFF58B8BFF7F7FFF7F7FFF7F7FFF7F7FF88989D8B3B3CAC3C3E59F9FFF7F7F +FF7F7FF09494C8C8C8D0BDBDFF7F7FFF7F7FFF7F7FD4B5B5C9C5C5D7B4B4E2A5A5E5A1A1E5A1A1 +E5A1A1E5A1A1E5A1A1E5A1A1E5A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDAAFAFC8C8C8E4A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FDCADADCAC3C3DEABABF28D8DFA8686FA8686FA8686FA8686FA8686 +FA8686FA8686FA8686FF8080FF7F7FFF7F7FDDACACC8C8C8E2A6A6FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFD8181FC8484FA8787F38E8EEA9A9ADCADADCDBFBFD2BABAEC9898FF7F7F +FF7F7FFE8080CBC3C3C8C8C8E79E9EFA8484FF7F7FFF7F7FFF7F7FF98787E2A5A5CAC5C5D7B2B2 +FF7F7FFE8080D2B8B8C9C6C6E4A1A1F68B8BFA8686FA8686FA8686FA8686FA8686FA8686FA8686 +FB8585FF7F7FFF7F7FD7B6B6C9C5C5E2A5A5F98888FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FD1BABAC8C8C8ED9696FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF38E8E +C8C8C8CBC3C3FF8080FF7F7FFF7F7FFF7F7FEB9999D2BABAD3B7B7ED9696F28F8FD6B2B2CDBFBF +E6A0A0FF7F7FFF7F7FFF7F7FD8B2B2CAC4C4E0A6A6F48C8CFA8686FA8686FA8686FA8686FA8686 +FA8686FA8686FA8686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48E8E +D0BEBECCC3C3EC9898FA8787FA8686FA8686FA8686FA8686FA8686FA8686FA8686FB8383FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FE2A5A5CCC1C1C8C7C7C9C7C7D8B1B1F19090FF7F7FFF7F7FFF7F7F +FF7F7FFA8484D7B3B3C9C6C6D1B9B9EA9C9CF48D8DF88989FA8787F78A8AE1A7A7C8C8C8D7B3B3 +FF7F7FFF7F7FFF7F7FFF7F7FCDC0C0C8C8C8F29191FF7F7FFF7F7FFF7F7FFF7F7FEB9999C8C8C8 +D4B8B8FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD5B6B6C8C8C8EA9B9BFF7F7FFF7F7FFF7F7FEE9494 +C8C8C8CDBFBFF09191FF7F7FFF7F7FFF7F7FFF7F7FF58D8DD7B4B4CCC2C2E6A0A0FF7F7FFF7F7F +F29090C8C8C8CCC1C1FF7F7FFF7F7FFF7F7FDBAEAECAC3C3DEAAAAF48E8EFA8686FA8686FA8686 +FA8686FA8686FA8686FA8686FA8686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FD6B5B5C8C8C8E89C9CFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FDEAAAACCC2C2DBAFAFF38D8DFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FE0A8A8C8C8C8DEABABFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF8080FA8484F48D8DE89C9CD7B4B4CCC2C2E2A6A6FF7F7FFF7F7FFF7F7F +D4B8B8C8C8C8DDACACF58B8BFF7F7FFF7F7FFF7F7FFB8585E4A1A1C8C6C6D1BABAFA8585FF7F7F +DFA7A7CDC2C2D9B0B0F28F8FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FE5A0A0CEC0C0D4B7B7ED9595FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FE6A0A0C8C7C7D9B2B2FE8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD6B4B4C8C8C8 +E89E9EFF7F7FFF7F7FFF7F7FFA8686E4A3A3CAC6C6D7B3B3FB8585DBABABCBC2C2E0AAAAF78A8A +FF7F7FFF7F7FF09393D1BBBBCFC0C0E99A9AFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE79F9FCEBFBF +D5B6B6EF9494FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFD8181F29191D3B7B7C9C6C6D2BBBBC9C5C5D6B4B4F19090FE8181FF7F7FFF7F7FFF7F7F +F19191CFBDBDCAC2C2DFA8A8F58A8AFC8383FE8181FF7F7FF68B8BD9B1B1C8C8C8DFA8A8FF7F7F +FF7F7FFF7F7FFA8686C8C8C8C8C8C8F88989FF7F7FFF7F7FFF7F7FFF7F7FE6A0A0C8C8C8D8B2B2 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD2B9B9C8C8C8EC9898FF7F7FFF7F7FFF7F7FED9696C8C8C8 +CDC0C0EB9898FF7F7FFF7F7FFF7F7FFF7F7FEF9191D5B5B5CDC0C0E59F9FFF7F7FFF7F7FF58D8D +C8C8C8C9C5C5FD8383FF7F7FFF7F7FE1A6A6CCC0C0D9B2B2F18F8FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FD2BBBBC8C8C8EC9898FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +E1A7A7CDC1C1D4B8B8EE9595FE7E7EFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FE3A3A3C8C8C8DAAFAFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFE7E7EFE8181FB8585F48C8CE5A0A0C9C6C6D6B4B4FA8585FF7F7FFF7F7FDDACACC8C8C8 +D4B7B7ED9696FF7F7FFF7F7FFF7F7FFE7F7FE4A1A1CCC2C2D2BABAF29090FF7F7FEB9797D1BABA +CEBEBEE3A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF38E8E +D4B7B7CAC3C3DEACACFE8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FA8686C8C5C5C8C7C7F48C8CFD7E7EFF7F7FFF7F7FFF7F7FFF7F7FED9797C8C8C8D1BCBCFF7F7F +FF7F7FFF7F7FFF7F7FF58C8CD7B4B4CCC1C1E4A1A1EA9A9ACCBFBFD2BBBBF48E8EFF7F7FFF7F7F +FF7F7FE1A7A7CDC1C1D4B8B8EE9595FE7E7EFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDDADADCAC3C3D5B4B4 +F28F8FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +F78989E1A7A7CBC0C0CFBCBCDAAEAEC9C5C5D1BBBBF29191FD8080FF7F7FFF7F7FFF7F7FE59E9E +CBC2C2D3B8B8EE9494FB8383FD8080FF8080FF7F7FEB9898D0BCBCC8C8C8E79E9EFF7F7FFF7F7F +FF7F7FF38F8FC8C8C8CAC3C3FE8282FF7F7FFF7F7FFF7F7FFF7F7FE1A6A6C8C8C8DCADADFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FD0BDBDC8C8C8EE9696FF7F7FFF7F7FFF7F7FEC9797C8C8C8CDC2C2 +E49F9FFF7F7FFF7F7FFF7F7FFF7F7FEC9696D4B8B8CFBFBFE6A0A0FF7F7FFF7F7FF88989C8C8C8 +C8C8C8F98787FF7F7FFF7F7FE89E9ED0BDBDD1BCBCE89C9CFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FCEC0C0 +C8C8C8EF9393FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE5A2A2CFBFBF +CDC0C0E89D9DFC8080FE8080FE7F7FFF7F7FFF7F7FFF8080FE8080FD8181FF8080FF7F7FFF7F7F +E69F9FC8C8C8D7B4B4FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8080FD8080FE8080FF7F7F +FF7F7FFF7F7FFE8181F58D8DCCC2C2CEBDBDF28E8EFF7F7FFF7F7FE6A0A0C8C8C8CDBFBFE3A4A4 +FE8181FE7F7FFE7F7FFE8181E4A0A0D0BFBFD1BABAEA9898FF7F7FF68B8BDAB0B0C9C6C6D0BABA +F98686FD8080FE7F7FFE7E7EFF7F7FFF7F7FFF8080FD8080FE8181FF7F7FFF8080DEA9A9CCC3C3 +D1BCBCEF9393FE8181FE7F7FFE7E7EFF7F7FFE8080FD8181FF7F7FFF7F7FFF7F7FFF7F7FDBADAD +C8C5C5DFA7A7FB8383FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD0BDBDC8C8C8ED9696FF7F7FFF7F7F +FF7F7FFD8181EF9595C9C6C6CBC2C2F58D8DD0BCBCC9C5C5E99B9BFC8181FF7F7FFF7F7FF48C8C +D9B1B1C9C5C5D1B8B8FA8484FD8080FE7F7FFE7E7EFF7F7FFF7F7FFF8080FD8080FD8080FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48D8DD9B1B1C9C5C5D2B8B8FA8383 +FD8080FE7F7FFE7E7EFF7F7FFF7F7FFF8080FD8080FD8080FF7F7FFF7F7FFF7F7FFF7F7FEC9797 +D1BBBBCAC3C3DCACACDDABABCAC5C5D1BBBBF09494FF7F7FFF7F7FFF7F7FFF7F7FD9AEAEC8C5C5 +DEA8A8F88686FF7F7FFF7F7FFE8080FB8383DEAAAACBC5C5C8C8C8EF9393FF7F7FFF7F7FFF7F7F +EC9898C8C8C8D1BBBBFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDDADADC8C8C8E0A7A7FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FCDC0C0C8C8C8F09393FF7F7FFF7F7FFF7F7FEB9898C8C8C8CCC3C3DFA8A8 +FD8080FF8080FE7F7FFD8080E89C9CD1BBBBD1BEBEE89E9EFF7F7FFF7F7FFA8686C8C8C8C8C8C8 +F68C8CFF7F7FFF7F7FED9797D4B8B8CBC3C3DDACACFC8181FE8080FF8080FF7F7FFE7E7EFE7F7F +FE8080FD8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8383C9C4C4C8C8C8F38F8F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FED9898D2BABACBC2C2DEAAAA +EF9191F58A8AFB8484FE8080FC8282FA8585F48C8CED9595F98787FF7F7FFF7F7FE99B9BC8C8C8 +D3B8B8FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48C8CEF9292F68A8AFB8484FD8181FE8181 +FA8585EC9797D0BEBECDBFBFEB9797FF7F7FFF7F7FEE9494C8C8C8CAC6C6D5B6B6EF9595F88787 +FA8585F48D8DE1A6A6CFBEBED1BBBBE99A9AFF7F7FFD8080E99C9CCDC0C0CCC1C1E3A4A4F19191 +F68989FB8383FE8181FC8383F98686F38E8EEC9797FC8383FF7F7FEF9393D6B5B5CBC2C2D9AFAF +EF9393F68A8AFC8181FC8181F88787EF9393FA8686FF7F7FFF7F7FFF7F7FF09494CBC2C2CDC1C1 +F19191FC8383FF7F7FFF7F7FFF7F7FFF7F7FE6A0A0C8C8C8D6B4B4FF7F7FFF7F7FFF7F7FFF7F7F +FC8282DBACACCBC3C3D9B1B1DBADADCAC3C3D8B1B1FD8484FF7F7FFF7F7FFF7F7FEF9595D4B7B7 +CBC2C2DCADADEF9292F58B8BFA8484FE8080FC8181FA8585F68D8DEE9595F88989FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF09292D7B3B3CAC2C2D8B0B0EF9494F58C8C +FA8585FE8080FC8181FB8585F58B8BEF9494F68B8BFF7F7FFF7F7FFE8080F68989DBAFAFC9C6C6 +D6B4B4EC9696E0A8A8CEBFBFD3B9B9E99A9AFD8282FF7F7FFF7F7FFF7F7FD3B9B9C9C6C6E0A8A8 +F48D8DFC8383FB8383F68A8AEB9999D3B7B7C8C8C8C8C8C8F78A8AFF7F7FFF7F7FFF7F7FE5A0A0 +C8C8C8D7B3B3FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD8B2B2C8C8C8E5A2A2FF7F7FFF7F7FFF7F7F +FF7F7FFD8282CAC3C3C8C8C8F29090FF7F7FFF7F7FFF7F7FEA9A9AC8C8C8CAC4C4D7B3B3F09292 +FA8787FA8585F48F8FE0A9A9CEBFBFD3B8B8EC9898FF7F7FFF7F7FFD8282CAC4C4C8C8C8F29090 +FF7F7FFF7F7FF48C8CDCACACCAC4C4D3B8B8ED9595F48D8DF98686FD8181FD8181FB8484F68989 +F19393FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF88888C8C8C8C8C8C8F68A8AFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48B8BD4B5B5CAC4C4D4B7B7E3A4A4EE9696 +F68989FD8181F98484F58B8BEA9898DEAAAAF18F8FFF7F7FFF7F7FEC9797C8C8C8D0BDBDFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEF9494E0A8A8ED9595F68989FC8383FC8181F78A8AE49F9F +D1BDBDCCC1C1E4A0A0FF7F7FFF7F7FF78989C8C8C8C8C8C8CCC1C1DDAAAAEF9393F68B8BED9595 +DBADADCCC2C2CDC0C0ED9797FE7F7FFF7F7FF68B8BD9B2B2CAC4C4D2B9B9E2A5A5ED9797F68A8A +FD8181FA8484F68B8BEC9797DEA8A8EF9494FF7F7FFA8585E69E9EC9C5C5CCC3C3DCACACEA9A9A +F68989FA8484F58B8BE89D9DEA9C9CFF7F7FFF7F7FFF7F7FFF7F7FD5B5B5CAC5C5DDABABF38F8F +FD8282FF7F7FFF7F7FFF7F7FFC8383C9C4C4C8C8C8F28F8FFF7F7FFF7F7FFF7F7FFE7F7FF38F8F +D2BABAC9C5C5DAB0B0CBC4C4D2BBBBF09292FE7F7FFF7F7FFF7F7FFC8383ED9898C9C2C2CAC5C5 +DAAEAEE79E9EF29191F98585FC8383F98888F29090E79F9FDCABABFE8080FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7F7FF38E8ECFBCBCCAC5C5D6B3B3E5A1A1EF9393F88888 +FC8181FA8787F48D8DE99A9ADBACACF78989FF7F7FFF7F7FFB8383E89D9DCCBFBFCDC0C0E89D9D +FB8484E4A2A2CEC0C0CEBEBEE89B9BFC8383FF7F7FFF7F7FF68989CEBDBDC8C7C7DDACACF19191 +FB8585F78A8AEC9898DBACACCCC2C2C8C8C8CDC1C1FF8080FF7F7FFF7F7FFF7F7FDEA9A9C8C8C8 +DDABABFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FD3B8B8C8C8C8E99C9CFF7F7FFF7F7FFF7F7FFF7F7F +FA8585C8C7C7C8C8C8F48D8DFF7F7FFF7F7FFF7F7FE99B9BC8C8C8CAC7C7CFBEBEE3A4A4F58E8E +F68B8BE99C9CD5B4B4CAC4C4D6B5B5F29191FF7F7FFF7F7FFF7F7FCDC0C0C8C8C8EF9494FF7F7F +FF7F7FFA8585E79E9ECAC3C3CBC2C2DCAAAAE99C9CF28E8EFB8484FB8383F88888F19292E4A1A1 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF48E8EC8C8C8C8C8C8FA8787FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8585DBACACCCC2C2CEBFBFD9B2B2E2A3A3EC9797F28E8E +F09393EC9999E1A6A6D5B8B8EC9797FF7F7FFF7F7FEF9393C8C8C8CCC1C1FE8080FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FEE9494D4B8B8E1A5A5ED9999F19191F18F8FEE9797DFAAAAD0BEBECDC0C0 +E0A4A4FF7F7FFF7F7FFF7F7FCEC0C0C8C8C8CCC2C2D4B7B7E1A5A5EC9999E79F9FD6B5B5C9C6C6 +CCC3C3ED9797FC8383FF7F7FFC8282E89C9CCFBEBECBC3C3D4B6B6DFA8A8EA9B9BF19090F19191 +EC9696E6A2A2D9B1B1DDABABFF7F7FFE7F7FF88888D4B6B6CAC5C5CFBEBEDAAEAEE79C9CF09292 +EE9595E4A2A2D4B8B8FC8282FF7F7FFF7F7FFF7F7FE89B9BCFBEBECEBEBEE2A5A5F19292F58C8C +F58C8CFD8282FF7F7FDFA8A8C8C8C8DCADADFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE3A1A1CEBEBE +CDC1C1CDC0C0CEBFBFE2A4A4FF7F7FFF7F7FFF7F7FFF7F7FFC8484E1A4A4CDBFBFCCC0C0D6B4B4 +E1A6A6EB9999F38F8FF09292ED9898E3A4A4D7B5B5E5A1A1FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFD8282ED9595D0BCBCC9C4C4D3B9B9DEAAAAE89D9DF09292F09090 +ED9595E79F9FDAAEAED7B4B4FF7F7FFF7F7FFF7F7FF28E8ED7B3B3CAC3C3DAADADF58C8CFB8484 +E89D9DCCC3C3CBC4C4E99C9CFA8484FF7F7FFF7F7FF09393D2BABACBC4C4D8B2B2EB9A9AF29292 +EA9999DFA8A8D4B7B7CCC3C3C8C8C8D4B6B6FF7F7FFF7F7FFF7F7FFF7F7FD8B2B2C8C8C8E4A3A3 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FCFBFBFC8C8C8ED9797FF7F7FFF7F7FFF7F7FFF7F7FF78989 +C8C8C8C8C8C8F68B8BFF7F7FFF7F7FFF7F7FE89C9CC8C8C8C9C5C5CFBEBED8B1B1EA9B9BEC9999 +DEA9A9CFBDBDCBC5C5DAAFAFF68A8AFF7F7FFF7F7FFF7F7FD0BDBDC8C8C8EB9898FF7F7FFF7F7F +FD8181F09191D1BBBBC9C6C6D2BABADDABABE79E9EF09393F19090ED9494E89E9EDCADADCFBDBD +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FF09393C8C8C8CBC2C2FD8282FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFC8282E79F9FD2BABACCC1C1D1BCBCD7B5B5DAADADDEA9A9DDACACDBAFAF +D6B6B6CEBEBEE99C9CFF7F7FFF7F7FF28F8FC8C8C8C9C6C6FA8585FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FF29090CDC0C0D5B6B6DAAFAFDDABABDFABABDCADADD5B6B6CDC1C1CEBFBFE4A2A2FF7F7F +FF7F7FFF7F7FD6B4B4C8C8C8D1BEBED4B6B6D4B8B8DBAFAFDAB0B0D1BBBBCAC5C5D0BBBBEB9898 +FC8282FF7F7FFE8080F68A8ADEABABCBC4C4CDC0C0D3B9B9D8B2B2DDACACDEABABDCADADD9B1B1 +D3B9B9CCC1C1FA8585FF7F7FFC8282E99C9CD3BABAC9C3C3D0BEBED7B5B5DDACACDDACACD9B1B1 +D1BCBCEB9898FF7F7FFF7F7FFF7F7FF88585DAB0B0C9C6C6D2BABADBAFAFDFAAAAE0A9A9EC9797 +FF7F7FF58C8CC8C8C8C8C8C8F88989FF7F7FFF7F7FFF7F7FFF7F7FF68A8ADEABABC8C6C6CCC0C0 +C9C7C7DDACACF68B8BFF7F7FFF7F7FFF7F7FFE7F7FF88686DFA7A7CDC1C1CDC0C0D3BABAD8B3B3 +DDADADDEAAAADCACACDAB1B1D3B7B7CCC1C1F68B8BFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFD8181EA9898D5B6B6CCC2C2D0BDBDD6B6B6DAAFAFDEA9A9DDABABDBAEAE +D6B4B4D0BDBDE1A6A6FF7F7FFE7E7EFB8484E1A7A7CCC2C2D1BABAEB9898FB8383FA8484E99B9B +D0BCBCCCC2C2E2A4A4FB8383FF7F7FFF7F7FED9696D5B7B7CAC3C3D2B9B9DBAEAEDFABABD9B1B1 +D3B8B8D6B2B2CFBEBEC8C8C8DCACACFF7F7FFF7F7FFF7F7FFF7F7FD1BBBBC8C8C8EA9B9BFF7F7F +FF7F7FFF7F7FFF7F7FFC8484CAC4C4C8C8C8F19292FF7F7FFF7F7FFF7F7FFF7F7FF58D8DC8C8C8 +C8C8C8F88888FF7F7FFF7F7FFF7F7FE79E9EC8C8C8CBC3C3D6B4B4D1BCBCD9B0B0DBAFAFD4B7B7 +CCC2C2CDC0C0E0A8A8FB8686FF7F7FFF7F7FFF7F7FD3B9B9C8C8C8E89D9DFF7F7FFF7F7FFE7F7F +F88888DFA9A9CCC2C2CCBFBFD2B9B9D7B2B2DCACACDEAAAADDADADD9B0B0D3B8B8CCC1C1FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FEC9999C8C8C8CFBEBEFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FF19090D7B2B2CAC4C4C9C6C6C9C5C5CAC4C4CBC4C4CAC4C4CAC4C4CAC6C6C9C7C7 +E6A1A1FF7F7FFF7F7FF58C8CC8C8C8C8C8C8F78A8AFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF68A8A +C8C6C6C9C5C5CAC5C5CBC5C5CBC4C4CBC5C5CAC5C5C9C6C6CDC1C1E99B9BFD8181FF7F7FFF7F7F +DFA9A9C8C8C8D1BCBCDBAFAFC9C6C6CAC4C4CAC4C4C9C6C6C8C7C7D1B8B8EB9A9AFE7F7FFF7F7F +FF7F7FFF7F7FEF9292D4B7B7CAC5C5C9C6C6CAC5C5CAC4C4CBC4C4CBC5C5CBC5C5CAC6C6C9C7C7 +EB9999FF7F7FFF7F7FF88888E1A5A5C9C6C6C8C6C6C9C5C5CAC4C4CAC4C4CAC4C4C9C5C5D8B3B3 +FF7F7FFF7F7FFF7F7FFF7F7FEA9999D3BABAC9C7C7CAC5C5CAC4C4CAC3C3CCC2C2FC8585FF7F7F +D9B1B1C8C8C8E1A6A6FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF09393D4B8B8C8C7C7C8C7C7D4B8B8 +F09393FF7F7FFF7F7FFF7F7FFF7F7FFE7E7EF58B8BE0A9A9CBC3C3C8C6C6CAC6C6CAC5C5CBC4C4 +CAC4C4CAC4C4CAC5C5C9C6C6D8B2B2FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFE8080EF9494D1B8B8C9C4C4C9C6C6CAC5C5CAC4C4CBC4C4CBC5C5CBC5C5C9C5C5 +C9C7C7EE9696FF7F7FFF8080EF9595D0BDBDCAC4C4DDACACFA8484FF7F7FFE7F7FE99A9AD1BABA +CDC3C3DDACACFE8181FF7F7FFF7F7FEE9494D4B8B8C9C7C7C9C5C5CAC4C4CAC4C4C9C4C4C9C6C6 +E0A7A7D0BEBEC8C8C8E4A2A2FF7F7FFF7F7FFF7F7FFC8282CBC3C3C8C8C8F09494FF7F7FFF7F7F +FF7F7FFF7F7FF78989C8C8C8C8C8C8F58D8DFF7F7FFF7F7FFF7F7FFF7F7FF29090C8C8C8C8C6C6 +FA8686FF7F7FFF7F7FFF7F7FE69F9FC8C8C8CDC0C0DEABABC9C6C6CAC5C5CAC4C4C9C5C5C9C7C7 +D1BDBDE59F9FFF8080FF7F7FFF7F7FFF7F7FD6B6B6C8C8C8E5A1A1FF7F7FFF7F7FFF7F7FFD8080 +EE9494D1BABACAC5C5C9C6C6CAC5C5CAC4C4CBC4C4CBC5C5CAC5C5C9C5C5C8C6C6FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE79D9D +C8C8C8D2B9B9FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +F68989E4A1A1D7B5B5CFBDBDCCC2C2C9C4C4C8C6C6CAC5C5CBC2C2CFBDBDD5B7B7EB9A9AFF7F7F +FF7F7FF88888C8C8C8C8C8C8F38F8FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8383D8B0B0D2BBBB +CEC1C1CAC4C4C9C5C5CBC3C3CEBEBED3BABAD6B3B3EE9494FC8383FF7F7FFF7F7FE89D9DC8C8C8 +CFBFBFEA9B9BD3B9B9CDC1C1CAC5C5CBC4C4CFBFBFDAB0B0ED9696FF7F7FFF7F7FFF7F7FFF7F7F +F88787E79D9DD8B3B3D0BDBDCCC2C2CAC5C5C8C6C6CAC5C5CBC2C2CFBEBED4B8B8E59F9FFF7F7F +FF7F7FFF7F7FF19090DDAAAAD2BABACCC1C1CAC5C5C9C6C6CBC4C4CFBFBFD6B6B6F88787FF7F7F +FF7F7FFF7F7FF88888E5A0A0D0BCBCCBC4C4C9C6C6C8C7C7C8C8C8E5A0A0FF7F7FEF9595C8C8C8 +CBC2C2FD8383FF7F7FFF7F7FFF7F7FFF7F7FFA8484E89D9DC9C6C6C8C7C7C9C6C6E99C9CFB8585 +FF7F7FFF7F7FFF7F7FFF7F7FFF8080F48B8BE1A7A7D5B7B7CEBEBECBC2C2C9C5C5C9C6C6CAC4C4 +CCC2C2D0BCBCD6B5B5F19090FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFC8484EE9393DBAEAED1BBBBCDC0C0CBC4C4C9C6C6CAC6C6CBC4C4CEC0C0D2BABADAB0B0 +FD8181FF7F7FF68B8BDCACACCCC1C1D6B6B6EE9595FF7F7FFF7F7FFF7F7FEB9898D4B8B8CCC0C0 +DEABABF78A8AFF7F7FFE7F7FF18F8FDBAFAFD2BABACDC1C1CAC4C4CBC3C3CFBEBED8B4B4EE9595 +CDC2C2C8C8C8EC9898FF7F7FFF7F7FFF7F7FF68C8CC8C8C8C8C8C8F68C8CFF7F7FFF7F7FFF7F7F +FF7F7FF28F8FC8C8C8C8C8C8F98787FF7F7FFF7F7FFF7F7FFF7F7FEF9494C8C8C8CBC3C3FC8383 +FF7F7FFF7F7FFF7F7FE5A0A0C8C8C8D0BCBCE99C9CD2BABACDC1C1C9C5C5CAC3C3D0BFBFDBAEAE +EE9494FF7F7FFF7F7FFF7F7FFF7F7FD8B2B2C8C8C8E2A6A6FF7F7FFF7F7FFF7F7FFF7F7FF68B8B +E1A4A4D5B5B5CFBEBECCC3C3CAC5C5C9C7C7CAC5C5CCC2C2D0BCBCD6B6B6FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE4A3A3C8C8C8D6B5B5 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFB8383F38F8F +E5A2A2D7B2B2D0BCBCCCC2C2CAC6C6CDC3C3D0BDBDD8B2B2E3A4A4F28E8EFF7F7FFF7F7FFB8585 +CAC4C4C8C8C8F09494FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEB9898DEAAAAD4B7B7CEC0C0 +CAC2C2CDC0C0D6B7B7DDABABE69F9FF58C8CFC8181FF7F7FFF7F7FF09292C8C8C8C9C5C5F39090 +E2A4A4D4B5B5CDC0C0CCC1C1D4B7B7E1A5A5F58B8BFE7F7FFF7F7FFF7F7FFF7F7FFD8181F68989 +EB9999DBADADD2B9B9CEC0C0CAC4C4CBC3C3CDBEBED4B6B6DEAAAAEB9999FE7F7FFF7F7FFF7F7F +FB8484F19090E2A4A4D3B6B6CEBFBFC9C5C5CCC1C1D3B9B9E0A8A8F28E8EFF7F7FFF7F7FFF7F7F +FF7F7FF68989E1A6A6D2B8B8CCC2C2C9C6C6C8C8C8D1BCBCFF7F7FFF7F7FD3B9B9C8C8C8E79F9F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8686D9B2B2C9C6C6CAC6C6D9AFAFFA8585FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFD8181F68A8AEA9A9ADBAEAED2BABACDC0C0CAC5C5CBC3C3CEBEBED5B6B6 +DEA9A9EB9898FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FC8282F38C8CE79F9FD9B1B1D0BABACCC1C1C9C5C5CCC3C3CFBDBDD7B4B4E2A6A6EF9292FF7F7F +FD8181E79F9FCEBDBDCDBFBFE4A0A0F98686FF7F7FFF7F7FFE8080F28F8FD2B9B9CCC3C3DCADAD +F28E8EFF7F7FFE8181F68989E7A0A0DBAEAED1BDBDCDC1C1D1BDBDD9B0B0E89D9DF19191C8C8C8 +C8C8C8F38E8EFF7F7FFF7F7FFF7F7FEF9494C8C8C8CAC3C3FC8484FF7F7FFF7F7FFF7F7FFF7F7F +EE9696C8C8C8CCC2C2FD8282FF7F7FFF7F7FFF7F7FFF7F7FEC9797C8C8C8CDC0C0FE8181FF7F7F +FF7F7FFF7F7FE4A1A1C8C8C8D3B8B8F38D8DDDABABD2B9B9CBC2C2CEC0C0D7B4B4E79F9FF88989 +FF7F7FFF7F7FFF7F7FFF7F7FDBAEAEC8C8C8DEA9A9FF7F7FFF7F7FFF7F7FFF7F7FFC8484F28F8F +E4A1A1D8B3B3D0BCBCCCC2C2C9C5C5CCC2C2D0BDBDD9B2B2E3A4A4FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE3A5A5CDC1C1DDACACFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8080F09191E1A5A5 +D7B1B1D2B9B9CEBEBED3BABAD8B4B4E1A5A5EF9494FB8686FF7F7FFF7F7FFE8080D2BABACDC1C1 +EE9696FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF88787EB9898DEAAAAD5B6B6D1BBBBD3B9B9 +DDADADE59D9DF29090FB8383FF7F7FFF7F7FFF7F7FF98888C8C7C7C8C8C8F19191F09090E0A7A7 +D4B5B5D1BABAD9B0B0E99C9CFB8282FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8282EA9A9A +DDAAAAD5B4B4D0BABAD0BDBDD3B7B7D9B0B0E6A0A0F48D8DFE8383FF7F7FFF7F7FFF7F7FFD8080 +F58B8BDFA6A6D7B3B3D0BABAD0BABAD7B2B2E4A1A1F68B8BFF7F7FFF7F7FFF7F7FFF7F7FFE7F7F +F38D8DE1A6A6D4B7B7CFBDBDCEC1C1CDC1C1EE9494FF7F7FEA9999CDC1C1D5B6B6FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FF19090D0BCBCCDC0C0D0BCBCF38E8EFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFD8181EE9393DFA6A6D7B3B3D1B9B9CFBEBED3BABAD8B3B3E2A4A4F19292 +FB8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FD8181EC9696E0A9A9D7B4B4D1BABACFBDBDD2B8B8D7B1B1E3A1A1F39191FC8383FF7F7FF48C8C +DBADADCEC0C0D4B4B4F78A8AFF7F7FFF7F7FFF7F7FFE7F7FF48C8CD2B6B6CEC0C0DDACACF58B8B +FF7F7FFF7F7FFC8383F19191E3A4A4D5B6B6D3B9B9D8AFAFE69E9EF58B8BF19292CDC1C1CFBEBE +FB8484FF7F7FFF7F7FFF7F7FEB9A9ACDC1C1D5B6B6FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEB9898 +CDC1C1D4B7B7FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FEC9898CDC1C1D3B7B7FF7F7FFF7F7FFF7F7F +FF7F7FE4A3A3C8C8C8D6B6B6FC8282E79C9CDAAEAED1B9B9D5B7B7DFA7A7F19191FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FE1A7A7CDC1C1DEA9A9FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8080F28F8F +E2A4A4D8B1B1D2B8B8CEBEBED2BABAD7B4B4DFA6A6EE9696FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FED9797E2A5A5ED9696FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE8080F78A8AEE9595E89C9CE5A0A0 +E2A3A3E5A1A1E79C9CED9595F58B8BFC8383FF7F7FFF7F7FFF7F7FE79F9FE2A5A5F38E8EFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8383F48C8CED9797E79E9EE5A2A2E4A1A1EA9A9AF09292 +F68A8AFC8282FF7F7FFF7F7FFF7F7FFF7F7FD0BBBBC8C8C8E89D9DF98686EF9494E79D9DE3A2A2 +E79D9DF09292FB8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE8080F68B8BED9595E89C9C +E5A1A1E3A4A4E5A0A0E89D9DEE9595F68A8AFD8383FF7F7FFF7F7FFF7F7FFF7F7FFC8484F29191 +E99A9AE5A0A0E3A2A2E79F9FEB9898F78A8AFE8181FF7F7FFF7F7FFF7F7FFF7F7FFC8181F19191 +E89C9CE4A1A1E2A4A4E2A5A5EB9999FF7F7FFE8080E5A1A1E2A5A5F58C8CFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFE7F7FEA9898E2A3A3E3A4A4ED9696FF8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFC8383F09191EA9999E69E9EE3A2A2E4A2A2E79F9FEA9999F19090FA8585FE7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFC8383 +F19191EA9999E69E9EE3A2A2E5A3A3E79F9FEB9A9AF29191FA8585FE7F7FFF7F7FF48C8CE79C9C +E4A3A3EB9898FF8080FF7F7FFF7F7FFF7F7FFE7F7FF48D8DE4A0A0E4A3A3ED9595FD8181FF7F7F +FF7F7FFC8383F68C8CED9696E59F9FE5A0A0E99999F28F8FFB8484F28F8FE2A5A5E79D9DFF7F7F +FF7F7FFF7F7FFF7F7FF09393E2A5A5E99A9AFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF19191E2A5A5 +E99D9DFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF28F8FE2A5A5E79E9EFF7F7FFF7F7FFF7F7FFF7F7F +E2A4A4C8C8C8D6B5B5FD8080F18F8FE99A9AE4A0A0E69F9FEC9696F68989FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FEF9494E2A5A5EA9999FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7F7FF88686EF9393 +E99B9BE59F9FE3A3A3E4A1A1E69D9DEC9797F38D8DFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FF98686F78989FA8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7E7EFD8282FB8585F98787F88888F78888F78787 +F98787FA8585FC8282FE8080FF7F7FFF7F7FFF7F7FF88686F78989FB8383FF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFE7F7FFC8282FA8585F98787F88888F88888F98686FA8484FC8282FE8080 +FF7F7FFF7F7FFF7F7FFF7F7FD9B1B1C8C8C8DFA9A9FE8080FB8484F98787F78888F88787FA8484 +FD8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8181FA8484F98686F88888F78888 +F88888F88787FA8585FC8383FD7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF8080FC8282F98585F98888 +F78888F88888F98686FC8383FE8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFD8282F98585F88888 +F78888F78989F78989FD8080FF7F7FFB8484F78989F98686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFC8181F88989F78989F78888FD8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FE7E7EFD8282FB8585F98787F88888F78888F78787F98787FA8585FC8282FE8080FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE7E7EFD8181FB8585 +F88686F88888F78888F88888F98787FA8585FC8282FE8080FF7F7FFF7F7FFB8484F88888F78787 +FC8484FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8484F78888F98888FC8484FF7F7FFF7F7FFF7F7F +FE8080FC8383FA8686F98888F88787F98585FB8282FE7F7FFA8484F78989F98585FF7F7FFF7F7F +FF7F7FFF7F7FFA8585F78989FB8686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFB8585F78989FA8686 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFB8383F78989F98787FF7F7FFF7F7FFF7F7FFF7F7FE1A6A6 +C8C8C8D7B4B4FE7F7FFB8383F98686F78787F88787FA8585FD8282FF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFB8484F78989F98686FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFE8181FB8484F98686 +F88787F88989F88888F88787FA8686FC8383FD8080FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FE1A6A6C8C8C8D6B4B4FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE0A7A7C8C8C8 +D7B3B3FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +EA9B9BC8C8C8CDC0C0FD8181FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FE0A9A9C8C8C8D7B3B3 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FF29090C8C8C8 +C8C8C8F48D8DFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDFAAAAC8C8C8D8B3B3FF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFA8585CBC4C4C8C8C8EB9898 +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FDEABABC8C8C8D8B2B2FF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7F +FF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFF7F7FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/edje-perspective-example.png b/doc/img/edje-perspective-example.png new file mode 100644 index 0000000000000000000000000000000000000000..37b86fa0cff0c731b006acbb521962e16f73b428 GIT binary patch literal 17478 zcmeIa^;?wR_dSe?DAJ9jO8KH;P`VK$1S#oKy1PT9K|oMi7(xkA0g*0g>F&-Mnqi0m zhT(h0&+{idKfc#B%EfSV-)GJ_d+)W^-iMf%>PkfS=oX$&lUz z?=*<5yMQlvuT_;4uKxjF|7;$-gYWv>zyk+|fE@ep#^^#Y8V5&yQ&~Y)$9HybVatbN zE4#+6Z_>W+5^owWD|>jDOL8oGgH`k+#0FD(-muxpouPcenr#{yi8uT9#=+$yqf{qJ zzMu0NDLkshw)O4qL8hM3WLhOU?m;_xEtk#O6ZTbxKdPT6vnt!ml{Uy=zvkR91YcDC z;P5CXv$C1LO=VS1Cg+z?1#jZh=CUa#f59aj2H$Ai#Iprg{CDHlZ*aw@xBvUK|4qsN zcFF$?=YLM&e}3}+_s}uAf0Oa_;2Lvqy>I%#Gri?L>wn4LUX@PRPcS09k>ig`?qhy_ z_>xL(B(mtALkxmcvVcrW)%!sZr})}%uBZjYK>TVFxpi#R3FlT$K7MmQcZpol1_ZOT zcATp&h?uIs0XpcBG7k?PTsX5x4Euv2oGZnDzjvi$9CH|NVGAPRg{XdL@GaVG@PuF~ zJor@Rh{5R4(2_**qBr>N69+%|#Sp?<#}3{99+PPKHaPy@)ffcfaM|sGN>=63QZS%c z@I){mL+~bdLFE^{jFtk{rY7U(8!4;!AgFHX+T6aNvhV~?^p~W~y0 zF#tb5dGi(%#sBXfKM9AWAqABQvr9vkf*C4oSp(Lkx@S?r+zD)$%dwWsmNC|*cyJB9 z21M+eR?mieU0q!TfL2LqX(?BVdl|gj(3A{7($do2y&;xz^h+(-^eHS96C*^QSvOE$IkvdCXnI*wqJ!lW z)l3Ww3}41lRK6zn>;m}81upRL=1BM*tB=x01(l(xw%<5az4N> z>bEyrdNtH))N`k(LSrU!7-WfgNe*$b?zIzySpe9 z%6D(c{afFL%2%zDmJn}m@9KsCD=VuA``-cQUT4Q!=SbL)Ua1oRY%mBpAiPwoaqM1I zrOTOeFJy79&rQYqg z!(cGY0p}CH>t@Er#wyGC1qB6vHDvW|xSuc?{3z5a8Q*u#d-?eNd-P#DiS+TA20#PJ ziTl^F5tsK+E*bGr`O&$~d&i06yLM}X+4REB^ZI7YU`4>J=xi@9FF!!H08aOHs;cI@!&L*j-Hs)IWx>rTFd<6{`U5EzCc*?XY3q}x5|Q9-@ycf|G7d2t%U(Jasp9@ zEA8#AhGnS%XHwYF*VKpu@R?j3_3^bhqEUg^>*KEL&yL4p&SdCw*|v(z-v-|RQ^wbV zzB&lG4%obiANoz|ya7X=OCTH^O7*#^#lets5 z`u!W;K0ZDgpVKolGdZdC02ZdozUgqL_#eZ!Crb4o8SZt)g;_IK`Fcu5b3;qFc$8ge z?vOp*Iv>fvd*6cISi@C~T-?6)HXGao%@IC`mFm`S* zn2d~!`)4PmyRBh6Q)OnbA=uzTqaU*HQlTufoeJ(Lc2!BG!l3ea%gN$)eW$n0Kf|1bzK#gi7k7qZBbxcdB!gJ|mN5Jhw1h)at9 zQ0nhHViI@cGuB!ff@jy1l1|Fkn{5$ z0NdNZxsmF^l9Ft%MAbiRxC7&Jbivx$!2!&@j)4QB{`DL^I0&rr4+C*GiGh(3J+NPM z{H6W<^Ye4Rn?f&G2#vnPhtt_VZD?s}8FF7m^IUImbbRuxH|9;7o5Px0`yZ{NffqdY z^beq+rlv+Qtd)(<)HOCX_OE;H>;PZf)ZZ{VQB_-8`xoNk=m|^!a{R%IZEgMZvjYH|vg2cJfG=Z8Ya(fuDJoLXA>@Aat45krEfM!%ZYjp?OziM^)A~B484c5Y z6RV)aK5uL-R(;=CC;$9eK!As65f|@#T~S*x0{o}EQY(9ZgP7z7lH!i$wA6M3bIAFmV=Get`cb3kJ#T3pfi z*u4&xR6b+I#hB0|w7Vv!pm@;*N7;W41nm~<0*I=$n!0IA@YTieFtE)WHMRMAubo$W zEHQ!}9yWuYMIqACAON)G53sP1FiH6Sc~h)S&VF~}^V@S#*)NqIUS3{LK7tKmR4P2z zUTH%C(ANjc6N4qk1ZO)^>-w8YJDBVbmZXVE8y{_>O7W$FZXI39IgNwX>M{Aq4)PU035vo z0s8JH;{n6)r7GxKo&u>ZSI#*hmD(t|hO+IlcYG9XoEXlF8R zaK236;65E4-MtqqNPzI_@(8dj&;G1xvoDfqh^pU(bN3>T?4!0k#hU77CMG7Ts;L<( zaN&;CK+T}NYxG#*hHyeiL#+sQI=_+y{AX%$TNk#mk(ZbEkk@e9C87;X!R*Q#z%49m zSvqbLb`u7~9B3-tF*-rBxVk01NhBDFh={m-y4S1X8QR;h7LYWc7?A!ZIH(CY-o)p< zolG?O#@{9y&f46lNQPHtE-o)G{Y(U~HKzsrgQoe`FH?Cvt z?^C^yBX_Gb-iO2C4^V|;-0%VA8gRqyXD|*8UJ%Uf{4cOkTqCT1gI$vL(mL7`+5JXMd_D4r!0J9=3 z!C&oM1-`+VokDlZe(Cl>=Ho61scf5+GKl&wy#SY4w07YyRdx!BN2%5t8;Suk*Yom# zHCpMQqAF$9l2YW4xokc}`r+g!6>LyJDCI~6U1P2;(HVXCOdc1Wo{p|$&uC8m{5d{8 z7OH4iOscLJ0X7L}f`EX4tZm_G{}Q=R^eX}aq1z|mlJLIwsQ@pZ%wwN?fLQ7pkd8;x z&l~9*h=NBeOKlw1-vPM1)KvR&nlYfrBO^f~`+?=-kNhVEr&J|tNBBoGUfw^yfB$~i z6fG@?dx8B3KX`6>V*O4Hx2nST`2`aL1A`TglXttly;%B`Cm|7n-Jz(bUVx6eO8l;& ziR*l=H+6Aw;s3Sm>oefnd}<%_P{(zuSlQUv6k&rvWo2m`JOn+PADAE%>bla+v>APm z21{hy*>3cmjZdOT^m6Hm9<9$z525j<7Yln$A5-4TBjZZz+d!Qn4C4>ZpO4Nh^Nyk1J;!Qw`~K+kLff z6j`bpe!dwK^O<{XLPEAJd+>-@Occd(TlXap)6i||86@g(TjRV*orv*$iX9~hRTnC+6NXH8iIg&8W{=f z;X){oYv;<;OOaUF5~^Lzk&S)W+RFiuQZBtPxDHl#mdhsX-`7>=32=kN;(S5WK2C zTU)>_L1C7eDrAMee4ZVt;G@{UMtoYC^#3J{!AI+>opChs1AMW6E&8Ts#Ni0GS{ znH4=`#W;pLobIi4rvXo;z*v7e)8;r2!uH=BQFKfT53W z5z@#yqzz~E@jZ`%7Vo|_k$XMeC5o^-^)jxQ0DuJ)QyHO>t zTIae!Raf3`X@AQT%WDFfNl2c>OU=X+ovwhKR@UWUbaYf}P4Yiwm+BgR8DaYDmTOEH zi4^K>t?No#npyCu%*(Y(ePad?XtJ^;JvRIAt6vM* zz1$%ZE|?htT+MZRJnRk$Q-?!FTpX6wWb}YJyO$K*nm|Yy=Mn<{!<(YQwv8|rBqEjq z{vJP(BXfANZAa_m``%3sT1^LIQz^IA4*crSIA-Uxu|xUB%_PsKm1WT?jrUAC5!JC> zdynEPpj&dAmBjLhd|T5?<%r8$AQL3N{vsz?TUAx{B-^^!RwzrM7*ja5C6uPS;STtL z>x~{M5&?nOtd-R-fN(HYM%XqTfe{5Oc_z-X2lQIxP%<_a6nx> zQth_V^AlRwa))Wl%UwbE{W#uZ>zm7xx}p+peUn;p;MOe<0KiEni2+2aw4W8cR=G=D z<6l63b*wDyd$<^I(9}J!F+8sM<5lT+ow!)KQa<2N(LQGfA&0GZm`T^f#M403jowta zvmI^mb{v?}VU>FFy2l*$Tp!}8}q{n_zYGUEIJD4r*V;j88I53nLA0O{VI6SD?&BvAg<~0JJ^Wy)M~qD^ zgz7}lwxgpXK@WdYBl#D87#E0Z_5H zX&_Zd>%&+^MlJy3eAmD(CAve$fB@jzXg95-n;{~mq1Gg>eqAm&r%w+)b#X{p@$%fA zJZ3}AL>P$Q9YEj&=@efoiV&ZB^M`+ejyboMBKN1QdHYu-_YryFRoTN2WoYh2+*Eqd zl17U|hnE9HPR=rNJV8J>9w|LT)3YkOWC=^jaO|{SUhFKPH-%gBl07$i&8{z|TF6^g zbtUUbN?wr{#AtJG_4iyN*38hWG%dNYlM_|HfBznz5(ci`gxeW_T-e74FqB!3w~CdPaL$0doluMHlDvf z;pZ?m_^GBfqgLbi>|Jn|nl4wOn1i2p#)&!e)&Pl7R>aw539Ps^^rZ*e_~|h>FE6j4 zC8thX`p0lF1a^~92u3d}n4U6G0b>NV#-d1(K`Wye$cm>K7lisyNWkuI1awEjg&u5D zVBubYC9tQKd&3%wG}+zg_1&2)VVA}AnQcZM&n}7^83qxmG;J^M>Vov7kBl5zdLvM) ze@{ka^HFGMByMkfJQ!{;=gw|VXefv#2B)-8_HLUJ9bgASknq?yI%zL123AB%{Kjt2 zjkP1H!Gv{O5pAE1zdrX4x7#g_o|1AHUu?h4dS;sb-@COa@uzt%0f6(zi%TO!Xq6~8 zDPV0WnUdWgU#rmP7Q9=glTY@pFJ>)@q>F1fFrhJRaImwp^V$Afcxt3=@oK9q;Ex=6 z9}7NRLe!vX>SrMQy0eaFrHC@+u4(t39CHIHCJG;eG6rNQR8^L#{h-u7<<(Dkf=c69 zy*Dp$b5Wkui`!UHVCINlwI6&qsUhanclN-q7YX!?6@96hp=Zeb_zVUlBs0v087AT* zu7_2J(wN6lfgwet6PWX=Y!L)Dzs1$ImpfKF*j)#55>m38t6AYuPQ3QPrZskm4-+5X zccHYP3~6+GmuJp>#aL)AF4oYQEe^!TT3M$oCbNs`we}nG1S-ILl49C$jmU03if8_8 ze0hP*wJ$GxpKeEE*|7M%nog_`l3|nCN7BZi`F<7>^oN_RJ!fV0;rMNB;7ABv`+M3(;>;{~y$IAXJ26V=7V96F9KQj0=&%4t*xyi={OQO zbRyuL67(P{v|-k>oApVAB(FOBd128f4A1&|{#dEeGW7;U!fz(NDLl=HaYpl0*+{Wi zQ(8b@`faq8c`w`f<^Z2f+%&QS@SFLNXU(jF`IiB2J)Ev6bR8waL^6zvcY?V4kk0|Ed7c z*{pBKL)YJ&56Sj62mW~!b}?;@4KL9qGO|^wfy=Wc5IfF9nksU84iB-y(@}HVh3DrZ zAi{%BPfX=hQCPjI19Uc4(cDxLayePFsC(9A&Vm;BdySOotHY} zSdK3yMomLQlQEJ(pH0YM$!~1?Cmkr$d7R1tis({#2l8Edn5j@65?T$alu<<-)37ii@j}w`P^zykDHF9L3L)gc6$OJ=H|977uP=)`D3JFk(_aba+~iZ^J2mWXmNacqHIDUyu+?R)pH51 zX}~)L$J!^HsVt(qwdHxJu_VTK^UKns$c~Xy83xviu@s|AU;B*R`*ISxY8c~7luqpS zlN(}me^l6>aDM_)oHVpY=z<%5_SG(Cd9bn*_I-IyL03GmAhE2wTkqBe$M2GkhW>NW z7mN>&v|6!}mW3JP&l`}JB8H#Dxz~er0!bgz;OOL*lrUeUT%Fxty)V;m8(K_%d5DSO zD{>Fqd2YM@ylBjBKWhRr8G8UdgkcrRu4l&opRAvw!q()pn2xjH=*j+IvHk?;@xg`% z0`s^ePZ|dR_&F4H?gX9gV%6}w!xlXbc%xXAT7BSH?FNBEm zzP1zFBS2%B-jvc_bV0QB2ne+Jh4{(MT(d5ySL{56zTJ`bb6;tTAP|~3G$;=-b&Qw1 z5Gje%)_z}OF-}n?Id!U4=@i&2!QrskNz=OGwUq~>fE~RhAiO!b`uex?qck=NNc)t1 zP3$R-^UjzLy_xS-SW4$ycwgSEU3Vy}3p;q**C{cjo8kXkeQ zv)xfinvB9~e7=Ei6ZCT1xp(7vnQC+IdGx(hm6~O6ue}*0BoierJ>n=gzZ1>(R3~nU zWB#gG_<>gPBA$!PTj!@@m85^pmX>PW*1Ft6H0~DKxB+oAtJ!Ef&SEAG)Z467M8y2t z<2Ad!kpR}+#W5|$ZI~FJIXO`Z4Z)nl5K4jP8wbH>4NJPEfFpw}7VEoQSsF}9xHP%H zqq}!2K_^x(8ZY8zoc4D>yCNU@16^$HWOeh05i}4`f3%DU|0P zfr>Ey;sS_cQnOL!9n@TTts*EEj6w%K$l{?pp;2A5H<@_^5Td5(8R7apiw_<|{v1=h zjF%=mu&sYyuOa7|@JJ`UyB<-hG$%7rX}XaW&5)R~D{TFvuqJEP0}?bhKeXb`rL&ar zlh=?IewdRNc8((Wi)z>u_$@Tv{N|l|AXDP(*X4FD#UC_*WezrTcUyv1FHeE=mW!|t zv2g0dhRN+SgiIpJ%E;-q7*q3kjqwAC3;{2C@UrTMRpH~#$b2iNQbd$7O2gJT!WV|CK?#Y zNmu&^UFnN~*FzCqh;96HT8v&3rn({4&m8hQ zqQJYUt38B%U^E;3oWRI`J~;JDO{)VPHv9DCfN1j-!73_HP8YUhchrLsGq>6rsR3U* zS#AXjaLJ3vU)(wu(JX&3*nEv)zD9LRcQMN@q{XsuF?JR4mj)^Nv)zBJc#>w+{`o<> z(+uhz9bskMwl2cv&4`Pb|K$ZBW7g^K%NBdGW|=-7liePKCK|q+R&|_Mi8Vw9Y=Pae zJYNSFWtM96-kW`5nwCB|a5a1WHcJ-LQ=l~Rp%sBBfJjcg=5rg7TbG>A|MSByRUF%Z z!1{^QvZPSE5}J(-76#Q9<0ZDVY(sLMn|K$AC3{4~OeWQZ_kYKc?mJA~b~M${DER5H zNOMDAKHHoWBrc0gXMuEgl<277HHCUP2Xc*0Ylm)BQ=pQd((r5#(#>~X8}PEsF1ByP z*PJL14S&R!=g0CbV(QYAIVWQ6{Dv5Jdxxvq{;ZJmN-@#!$f`Ksse$krqtD~KFT!IE zl(`?T?iEJ7Wh*pb-rt=us&QUWx%hSl^j*y50UsaMll<~FG@{QdTI|Q^ZV0}r9Fn@^ zmg+lNX!ysxRdIA-{&C^mWJ~we6u+~oXc=&bMP=1t%Mc3-{qGwfM|-nU>ZIMw61CW=%*QF^aR>SuRb)peOCCDnojh3a5`%OH5boBS{-@6l@ z)~8nQs!^5v!cQ%@nw!m=?#DT3HpKHCjW$l`vMw3- zn}jMx&qi3U!c(p7pYe*?k3`* zV`6@6P`K`QLo9fttgUZ+{^D z|AO}mP9c$iy-E$dC#~A)c@pN&`Q(|kX0B4DX~%aPUu-^C!1J*BqN>u-L2i!`c#n zKq&(=yIOqui07#Wc^7@|Jm{JXI1n#!XsF$yW^^9qcc6A@oRT?85$36WPl9DdZ4wh`3cQ8$+xF?XIjfFN{EEmZC0~ z9iR|qbZzkdDt-O0pYb_1wA3>+q4 zYl|^otJ~dIzt5bmLf#x29#?YRB-shgpn@7^>(Hk@kr@-zSKYwwOQs5zotH5|qK5`)I|8y-+sSwOgSqtW(GavGCOyCK93g@fHQsDw8 zr2c9+uf;4qJGk_?mnwK8#bq-)mn`D1k+{*#BJ)`e zYa0%Bc6MLFTd3j^ZCxuUg;nu2s6hfWPn+hi_F-&9D0ikii(*w{?+QMl^5Ta`GRL`$ zU+T>>o2whIa`SL?ONIbSMlK^S-U=H}*a&4u}0J^%AMq~+CX`{o6>y%v3B zu$bBh8qQBxX>*{)Nhr)-0Qr$W08jq7n7LcJ#5TWsZBhJ%V82a&?>o-`4~@tRpT>|( zaU4Rs4UUrrXu+&U;KSpKZrw%@t1daE=F2l=!-b&X1}X{N&z{2#q?>Oty0kARRe8br zm;PeqB^vq@YON&J&L*uJVg{a=?b4;IeV>+s(xcI@L(vMnbnIEI#k9#j!9*hE@8OrCZ5iEwaVrc z<_0B`AIrBgn`YWKEH4)S*ovq}l;2%tOp4H#|M8(O3uWjZf406twVQ0=ZDT6=ogiJk zXpC^v0W;>?w-XjGr{x4QYXWp{z!P6~5>#a|aDsBFMT z=c|T{=Nd<986%v%Fz6%BVT2c^7_0TlP1lUrkZsPJ_oUkU>C z_Nl^4&hqt0=BW2z*3Dsjrwt~_ra@)T36v^ZOhsEm5YK)u{{?AA(CLf~H)-~i}~Z@|w*pdA4$Qtrel6o=9yzA|}LKGZI+kn4^t?zQXZGI+{zX z3hI=b3V;85?Vk)D?r519*GitBDa~eEcZ^o z|6X)h7zE&Rb-NY;w%u*~zspM?`oS`ixj)*0nR%17bz+(5mI>3He$(GR@J3%G6W-q= z$|Nj5AZWkxK#X+5&db(G(vZ*cKMF%P+xT2agWLG}>#(ynSH%li2WDkYP(T9RsheYY z+2;ROD|i#8S{ND%*iGH6tGvW&<>q}cF;La3j?U7Nk*{5uj+>mAo9lxi{isbhF*0j) z3fp;^syM5US7{5CGNik2QP2H3OIV9iz00e*`a>KslbPX|(4-QP)4)u4hxP5RkaTx} z4tT+ei%$)hsIWN2oAk1&+jekz_M3{OPbYuU=r=I0B3*>WE>(q}hB(jP8VFDZT*D_` zvdap`=S{8jpO<~v*|x*>sP_qqe!&hACHo@o_FTh27B(^#6i_9+COXqdV7i4k>kQ6~ zi93kn&{1|t4Dr2<74Qx(fM)Ygz|%&Z?1Z4#0GWP0;`gr?(#9IJkaiW{6lA1dNwh0! zLl1l2!Pc$jWR~C9n&{W@i*1p2XEde9PKh4`g6#l(vdEOrL?99sJZzg_-*%%+N;+hF zyhK|Kp$IQ(ebBthcmQ8)N|d^Q7qo=*|G@4yyW}x`4xN1d6!&lA9VH_ppgJdEKDbtX zEe?8pXmPvjvV30X+>5(Vr0}Y63b%eO%s4U5C|X6qT-P(0N}AYqVLyHjNB*;jIZig=%Vr)~SrfSOI6#J;F|#wQ z@Q<6~f0urdto0R=7TPJT(D#z{L0mrzjkS#!zjgMeCO&Onp-zD5<(_k|-pD+-xg^L- zDB@m=yLzcL=iTPeNiS*-TU|C2SbTe6sBh!x>gxJIl}rlZ%BtYQi6VA(ELZu;+GK(W zrGkT&u$B&&g^S}c4e1RI=D#)xv=Mjc)fZA@OFTu7gNhGWc$xw^**FcXy z+i>(vf0kZ=8ho)0dW%D@ug=D{K=)sB@D)5ZtV%>v!0d_qu%V%d=mrq)jT%}2T}E=d z%UVVE?*I9N?K*q^o?*|o*@Gj~CX7O2?^Sz1*z@{;3RIrPMl0APB{g^M7FpUaHogk<5?W+=qW+q#H328+ z{OF%lJh`t?UvsV(c+Z#;VHg$l32Z0wgLek)b^HaPMW)iib9MEz*r;hev;dTiIK7RG z@PtT`Li2E>m2NKfAeW7@mafF&R?|nw5M1x4`OGl9}H7ZG^@qaZLCnblDr0ZFlg|ftJ zWQ0^zQcUE?1NGuRuStJMY)4U~qr^2HF(AC(WTO7inW>}CC5I7ALBX&NJ+XBT#Mz*5 zTtU-mM*GHNqhPcN@`XCX@iAcPIL1S7M~7RBpdeqwDZ z3EsrX{!Wol{`Vb=lM|5C8^9tjU0*F-o0P?l(aMJZ*Ivx%F1LY8L87ma@seiUn(d?| zPzq{eFOezfYuz^Xe<~AR9_-@e`mzPQx>h2mdykeCNIAbZiq&}FC*jhmgP|WDj*pL1 zmg03mk^k2Q{vcdnn3MZbj@AhXKpdu|Zobb}Zx2l_G?kZ^|B+hxGFX}NuPMu74yyrA zOH15(7{fc^8_)UM30w8K4BxXXJ31%Nxl8o$m-dTY(CV_%V%%STM?KsBaJe;Xc05P_&@rEswEj!agTuTpvJxui9g17CkdFGt95JdFpa}+C?FX)Z0Ko5^JGL-0h~9 zF7i>%<99n?SlMMLcfoN|Q-ca;;yFsSKC)-!Dn)w&7zxMQk&0R4vg}Ll`~+*-YgamYibFXs7~= zB4LTjxc`th6Z+?;+wDx%XkP-QH5`+MMsElY1FqGqJF40}<3$-HAciM~#P5r4$!P{? z%}P9#LH;*9-^MM5{yDd>kpx6_lRV*i?C}Whg|-hJa9-^uze2XH7blfhy{gpNF?HNl zZ87UjXBb!rcm?-UhqtPE&i^uZr#xxv5jSMviN+fnw&`c}L^C3G8V;n+*FS2Y@C7Om zf{o$jKrTV8B}%jNl0I3ze=+|EtEDDL)7M~jI<*%A^goDhKO)kF*?QIZDkPK%`W}J0$hzfP@auOhQ1LRk z>93WagY-ilNk3xO%y~|C5*>vzfcef?O|z%5Pl8V0y4n7E^UBeXib}M(uq%)&9 zxK&Mos!d4zb4qR0SCq>1V}qZugh$zb#@5;*<{C_rOvEIz!HCxH$;VU&W{Bq4W}^a>+>OLYXW%QmsQn}hmuJO8T>-!RVn5MKO#FrOZKtHPRKJ$_>Mk* z9!*zBgz|r`SbQGhx}BX_k4<&(@W|LoHb_~g@xIww)GdJhR#=qUYL6H@oS(;5vxf$< zMLjkNC!{9L)?s;0VMgm6?Db6efuMVB>?E?6EIZ~u1?FuJi$jBP3P0Z#fw)8PJYI<1 zcvn!4sG4#$RaOBrlGG{TNtcDni{IJuxzl9cqXDQs!< zUR#GB+S2pb_L+3Tp#lT!^?PWgUWT6daWYe4^nJ6o%!hB)^r;Wx6NVxf%=EK-m4>ec zmZHm{;NVnMQ?{$}3xRvlh#9I?kCt_JO>NR7uE0JJ=fzS})1&!8zg!I1nQLKtcMTi) zR^7jnzmV%L>N$ISY_HTU6FBLyYA5oID@7%ufmcT>EmaY~x6}VdW`H1~-Vy0Qin*eJ zd-&%T{89PfRCp)zs$ck%DRTJMKn)6rd2g3g(UF#D#U{KI)c2t(D)=ES-od|yq=z|8 z0LHvWWo_9XP)YZB@)zgxr9TsVPLdzZTIL`c?g`eE3h>5&esmpNgXOi}l(kFaEE@K^ zeV`AKUt@dZ{B_Ke`Md1T-HzA^y?n+R?hiQ2u3w$bJr*--M%Q3ZQw$K=7@K0%!F5Xt zvHwKBk|kqXW%O~gGGy+id5(?Rl9dgOP+h@Cz!{J-a?>H`^(LsO7#Q5gw&_Q1zVyQe zFcw9Aiko@Wrc{vNU#z5+HikxaE7AFox%MBH{*Un^JR8V|NkSeW?h|4Ugv@|uYhG(Z z!~8$kK9hFj@yQEtu4igTBVJ>-Q#_t;Q_XWTJ4cM_Bn~1i9KtR(Wn?XC3uHX2;Kajg z>|!+pfR2rX^l1_GPQDLtv5jA$4`}xZN$-i$6vJ9i-DEe?w8jVV_vhw7 zcNHnLk-NjVnFd=(2;>tJ2jUaWxlsZxoqMraq*W7^q&wJX!OrC$Y*yv7#J0Z6do&NM zxYw=CJCf5;XJ!Lsxk=spAL8LRiNZyb2o#z=k1=2K?a%B#KhN(8xm9M|6PnWyu|9BX z^>!uwLEYnW>r^?tV9ggnP0TyKBbnR>$#jaoe1EpAu339P*+jD_PQ!zs(qP+iI;6M_ zw4(E^F>GV2<+d=VpUsdW*WwkeMK1l?als5vThIGgLm>+W9wJ=IZ5u?M=;w7fWE0l| zgZ}5_8j1BZ&^knN5)c3T7_*&pjs`~*>}_Cx9OG5QM3Y|E=tRPaVI1MU>MjVch1IaT z84?Nny|?ABuDX=5?GnPm_*$A@SdJ|#N7(KZnL5Kg5b`FKr-i(i662i(s%ck2ZLgg? zbD&UY8O?Fs-PoyfxvOTZIOB1v(pEIlLWqe?6m;C{;ofEUZAHeo6a)5B<(HL0CWFS(gyjfhSQ9KfSbnrq=|A>S-sS5@vg(R znbj}0p{n-44)1__=+8*o&XMHn%k#jk{U3T9?5~dg@@p%xNQC&Jk+7WyLQy<+ zlolj>AZ3bzB!?ETHTnd7WUoDu_}r&?tu>p5=ec^$i(; z=~GnI@9w-)6XBF_cF=WZ0fg2u zZgvp!zG>_1M^wTl@A>c_fzva==tGyRrBdn6r1Q0AmJ#kw?qqT^A4uRM&Ggb5w%s9q zE(l}K$W^TWoQ#Iw-5nmDD2K(Unx~m0mxpI?c(vPl_}+?kg509p9O-~0d5dpp&45LR z95_^hG>m^EkVrW2OlK@Hu~A$5Ut`d>e8O5wuZgwhDIOlpJAMVt+o+RTY02BZn64(5UFY5xCKd)D!-6yd8i>9c}cbfj%c7 z+u7n5{I@d@)SdH$wQ13`Hlp1uM4EZ>E~}Ww*y-q3KG5k#aQ6PVFxnsdA&jzS8dQpt zC+3|0WO02R^l$$}P~>|coo)erCTgyJo;msWn<`~){Gc>*Jp|Nr3P7eE4gD;Bb~0ra svS;hFHQ?dsxKMAQD;Q#;t literal 0 HcmV?d00001 diff --git a/doc/img/edje-signals-messages-example.eps b/doc/img/edje-signals-messages-example.eps new file mode 100644 index 0000000..55290de --- /dev/null +++ b/doc/img/edje-signals-messages-example.eps @@ -0,0 +1,7202 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (edje-signals-messages-example.eps) +%%CreationDate: (2011-08-01T15:12:15-03:00) +%%BoundingBox: -0 -0 225 225 +%%HiResBoundingBox: 0 0 224.977 225 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 225 225 +userdict begin +DisplayImage +0 0 +224.977 224.977 +12 +300 300 +0 +0 +FFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0808FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFF7F7FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0808FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF +0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF +0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF +0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF +0404FF0404FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF000010F6F20CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF6 +0CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF6 +0CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF6 +0CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF60CFAF6 +0CFAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F2 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +0CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +FB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF080808040404FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F99F9F9F4242422121210A0A0A202020404040848484 +D4D4D4FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3373737030303010101000000000000000000010101 +020202030303FBFBFBFFFFFFFFFFFFFFFFFF080808040404FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C6C6C020202101010828282BABABAECECECE0E0E0 +BFBFBF7A7A7A292929FCFCFCFFFFFFFFFFFFFFFFFF040404000000FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2727270101018D8D8DFBFBFBFEFEFEFFFFFF +FFFFFFFEFEFEFDFDFDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF040404000000FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF121212000000D0D0D0FEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF080808000000000000040404040404 +040404040404FBFBFBFFFFFF080808040404FBFBFBA7A7A75353531D1D1D050505FBFBFBFFFFFF +080808040404FBFBFBFFFFFFFFFFFFFFFFFF080808040404FBFBFBAFAFAF5151511919191D1D1D +4D4D4DD3D3D3FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD8E8E8E3838381111113F3F3F8F8F8F +FDFDFD080808040404FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFCDCDCD5858582C2C2C0D0D0D2B2B2B565656CBCBCBFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFF080808040404FBFBFBAFAFAF5151511919191D1D1D4D4D4DD3D3D3FEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFE4E4E46A6A6A3838381111111C1C1C414141A1A1A1FCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF424242010101414141D5D5D5 +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000000000000000 +000000000000000000FBFBFBFFFFFF040404000000868686050505010101000000000000FBFBFB +FFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF0404040000008A8A8A050505010101000000 +0000000101010A0A0AD6D6D6FEFEFEFFFFFFFFFFFFFFFFFF5A5A5A030303010101000000010101 +020202797979020202000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF898989070707010101010101000000010101010101050505898989FDFDFDFFFFFF +FFFFFFFFFFFF0404040000008A8A8A0505050101010000000000000101010A0A0AD6D6D6FEFEFE +FFFFFFFFFFFFFFFFFFA8A8A81111110202020101010000000000000101010202024A4A4AF9F9F9 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F2 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCCCC0C0C0C010101 +0303031F1F1F535353808080C6C6C6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB040404000000 +FBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFF040404000000060606515151A8A8A8F1F1F1FBFBFB +FFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF0404040000000707075C5C5CAFAFAF +E4E4E49D9D9D282828010101595959FCFCFCFFFFFFFFFFFFB6B6B60404040606065B5B5BC4C4C4 +C5C5C55D5D5D080808000000000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFCBCBCB0606060000004040409C9C9CE2E2E29D9D9D3F3F3F010101040404CACACA +FEFEFEFFFFFFFFFFFF0404040000000707075C5C5CAFAFAFE4E4E49D9D9D282828010101595959 +FCFCFCFFFFFFFFFFFFDDDDDD1010100303037E7E7EB6B6B6E8E8E8D0D0D09696961D1D1D020202 +8D8D8DFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +0CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEDDDDDD +616161151515010101010101020202030303222222B6B6B6FEFEFEFFFFFFFFFFFFFFFFFF040404 +000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000545454FAFAFAFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF0404040000005D5D5DFAFAFA +FEFEFEFFFFFFFDFDFD9E9E9E020202232323FCFCFCFFFFFFFFFFFF4D4D4D010101616161FAFAFA +FEFEFEFEFEFEFCFCFC616161010101000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF575757010101414141F9F9F9FDFDFDFFFFFFFDFDFDFCFCFC404040010101 +545454FCFCFCFFFFFFFFFFFF0404040000005D5D5DFAFAFAFEFEFEFFFFFFFDFDFD9E9E9E020202 +232323FCFCFCFFFFFFFFFFFF626262020202868686FBFBFBFEFEFEFFFFFFFEFEFEFDFDFDAFAFAF +030303383838FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +FB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDF9F9F9CDCDCDA1A1A15C5C5C0F0F0F010101030303BCBCBCFEFEFEFFFFFFFFFFFF +040404000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000ACACACFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF040404000000C6C6C6 +FEFEFEFFFFFFFFFFFFFFFFFFEDEDED040404040404FBFBFBFFFFFFFFFFFF252525010101ADADAD +FEFEFEFFFFFFFFFFFFFFFFFFAFAFAF030303000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF2A2A2A0101019D9D9DFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF9E9E9E +020202282828FCFCFCFFFFFFFFFFFF040404000000C6C6C6FEFEFEFFFFFFFFFFFFFFFFFFEDEDED +040404040404FBFBFBFFFFFFFFFFFF313131010101040404060606050505050505040404040404 +0303030000000C0C0CFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFCFCFCF3F3F35B5B5B0101013C3C3CFCFCFCFFFFFF +FFFFFF040404000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000F3F3F3FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF040404000000 +FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF0B0B0B000000 +E6E6E6FFFFFFFFFFFFFFFFFFFFFFFFE9E9E9040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C0C0C000000E2E2E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +E5E5E5040404090909FBFBFBFFFFFFFFFFFF040404000000FAFAFAFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF040404000000FBFBFBFFFFFFFFFFFF0E0E0E000000000000000000000000000000000000 +000000000000000000000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDADADA0303030E0E0EFBFBFB +FFFFFFFFFFFF040404000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF040404 +000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF242424 +010101B0B0B0FEFEFEFFFFFFFFFFFFFFFFFFB1B1B1030303000000FBFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF292929010101A0A0A0FEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFA2A2A2030303272727FCFCFCFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF2E2E2E010101AFAFAFFAFAFAFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1C1C1030303222222 +FCFCFCFFFFFFFFFFFF0C0C0C000000E8E8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000 +FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFF +040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF +4A4A4A010101656565FDFDFDFFFFFFFFFFFFFFFFFF656565020202000000FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF535353010101434343FCFCFCFFFFFFFFFFFF +FFFFFFFFFFFF434343010101515151FCFCFCFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF6161610101012A2A2AF7F7F7FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF2B2B2B6F6F6FB4B4B4D6D6D6EFEFEFE9E9E9B7B7B7848484171717000000 +626262FDFDFDFFFFFFFFFFFF282828010101828282E3E3E3FFFFFFFFFFFFFFFFFFFFFFFF040404 +000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFF +FFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFF +FFFFFFB3B3B3030303080808636363C9C9C9CBCBCB656565090909000000000000FBFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7C7C7040404010101454545A1A1A1 +E6E6E6A3A3A3464646020202020202C6C6C6FEFEFEFFFFFFFFFFFF040404000000FBFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFDCDCDC121212010101404040 +868686C3C3C3F3F3F3E3E3E3C6C6C68484842F2F2FFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF050505020202030303030303040404040404030303020202000000 +2F2F2FEDEDEDFFFFFFFFFFFFFFFFFF7C7C7C020202020202040404040404040404FBFBFBFFFFFF +040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFF +FFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFB +FFFFFFFFFFFFFEFEFE535353010101020202030303030303020202707070020202090909FBFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE828282030303010101 +020202040404030303010101020202818181FCFCFCFFFFFFFFFFFFFFFFFF040404000000FBFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFEFEFEB4B4B4161616 +010101020202030303040404040404030303020202010101FBFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D6D68D8D8D4949492626260B0B0B0B0B0B242424454545 +A1A1A1F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFF3F3F37E7E7E2727270C0C0C000000000000FBFBFB +FFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFB +FFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000 +FBFBFBFFFFFFFFFFFFFFFFFFFAFAFA8888883333330D0D0D3A3A3A8B8B8BACACAC030303292929 +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDC6C6C6 +525252262626080808252525505050C5C5C5FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF040404000000 +FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF040404000000FBFBFBFFFFFFFFFFFFFFFFFFFEFEFE +EEEEEE8282824141411E1E1E0606061A1A1A3838387B7B7BCECECEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFCFCFC +FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFBFBFBFBFBFBFBFBFB +FFFFFFFFFFFFFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFBFBFBFCFCFCFDFDFD545454010101 +4D4D4DFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFCFCFCFCFCFCFBFBFBFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDFCFCFCFBFBFBFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF404040ADADADE2E2E2EAEAEAA6A6A65B5B5B060606 +000000B8B8B8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050505030303040404040404030303010101 +0000005F5F5FFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3C3C35757572222220707071E1E1E +444444A8A8A8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F2 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFCFCFCFBFBFB +FBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +0CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +FB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F208FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF00000CF6F2 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF +0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFB0004 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +0CF6F208FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6 +08FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF608FAF6FBFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFF +FBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFF +FBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFF +FBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FBFBFBFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFF +FBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFF +FBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFF +FBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFBFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000FFFBFB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404FF0000 +FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0404 +FF0000FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404FF0404 +FF0404FF0000FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FF0404FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 +FF0000FF0000FF0000FF0000FFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFBFB +FFFBFBFFFBFBFFFBFBFFFBFBFFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/edje-signals-messages-example.png b/doc/img/edje-signals-messages-example.png new file mode 100644 index 0000000000000000000000000000000000000000..808d535bf277f909b2ee7124ef22ce49350a670f GIT binary patch literal 3730 zcmeHK_g7Qd8jXU26ct9mf}%(nDWViH)Byt|N*NI$6agh6AWaB@0Rm%Wq^X%u1T-X1 z5s{K0sB{Avkd_#v4*?PpC6tgzjnur$fAHS?G(XH)Yp-+ey=UF?t^Ix9-s`0O>g*sd zb65rh0?EUm5LXarhu$`%cLQ%Q*hja4NfK=fbCU)}f;1u(c;0gh>WKz{_O@iHRJ2m68LMxKqw8W{S@*6WlIRH+XMfB&_Gs%+Z9?pL3xaUpeu@ z91h2K5AL|OBdd--$4wF|CG}4n#aCihyv{ zNah+PUbz%H(e^OvbMuaTlaR+2>-;xW39C_cbJZgn1ZYP@)25bR;%d>`nwkvsX_U`F zltZ%2;H~>tTR)h!lv1gWTT=Eh1}Wa(@=+uLR3r0YR%u`aut50)&IOzK>U`;KKICpS z`1&FrZ@snuYEFH9JrSNp#KNX9zP{y#22ysc`yosEi_1N-Ghtz2y`MfE&&kPA%=jP^ zj^5fb@)IxhxqKT>QF}Z~ZE)7n)&2G?DTZx63} zxVd$tE9oNIA05qfF4i`VaQsO=Ls*s`v}#@aF7&I~Vhti_AMNX!xNpXbTA3#H1sRumSBLgQn;q>M9bvPh zSw!#*#+P%jdvR%NT{tv8J|5X^DJMSa`Z5BxDon|1UQ9e8S=LIQnVTC}SctmK3f55U z*(IwSgvGw6E%jciPZDq8r0xJgrhS|msVkn~Z&tz`Jt$s90NZOreo0EBFX68PnR(Bg zoSfJk4pl-zg3V@^4h#&;5c>cILv(Vw9!>N4Zd{Rxa>jH3-ty)8%3NOrZPk9L+_Mmg zL}Dsc8FwY5jFmG=QiGhF9)^!pJKpx=~Ff?p@%=C&bF>XfL1> zumIf=jq`29ds{%Ox$%hSOifYkk~aS-al82R>C-nT{Rw&ZfPjD%Ci>2u^GDL7%_zW^ zkefIA!Nv0O^5Dfh<|z5jmp$8Ai{O-ZA`H#7q<1LTA0`b=@mvkCaRTsW45_TVnU-$}J z#`p5&apyHfvFa{*+m1Mp<>|9BUV>eD-)BntbnBKx@SVD zdM|r|+zNYwVn&#w3UEJR8M| z#uk=`{7@>N+v9T2pvCz{s27cm8@LgTtWF~SJc4FrXsF&36zwz7#bA6BHi;h>I^eq+ zF^f^v){$S5nPlsx&mx`4F5QZ3i24bKN2-MM^z_Dc{4q-%S!KOHf{b;FUC1l}+7L~) zjISnIVdI$Kw2oSy+HQ^}v%MiXH;*Z0cao5rotw+ZFrfWR;&pagi+zlpRb1WO&lS}@ z7y`~}1#4ScT4EMA1Pwwh3sHKyOe6~y8yicn^usRayef5bcULCzAd`tL@}{Y1XZFYl z5`lnZb|QL?kgw_L<8G&!$MEw~Q<(+kro7|KsuAneIHPs=@Bw5C5 zsg{4pP{~N`U=^5aO5+;WYa+O(ZT2H-o~8pjat#7G7sl2AYAAtg5O*P1p|R9hSOrxvb6(Ta(*!`WJsV;ueD=FC|LD_S>v*IrsD}F3*jQE6w~ND- z0V%5HF^(~FY)#QvESW#n;6X%JU2oYv-&nGFID-8aHp$FCiN#{KcVm_ZJdj)(HWR9W z@b~|Pwz=ZH?I1|T<9STEt1ME}F~?2>OSdl^j+Hz~fU;~OCf{7D8I8&ySzruNql?|v z6(n8>4>NqWP$erv{}uk+;Pd#(%HIY1aKFsX&Z0Tv%niBOp$d=gMdM?5e0-0Y^iJ%z z9FHpUY}W>{P`tUoFyOrpF&(ZG4!?1zc)!9Xu9C$*=XvmGRL^E_bfxmx`r6u8;GA44 z_4Kq*m`kVID1aNZ+^$~L1e9l6_W`YB9@@4upg?m0xr71|tx15UcGTI8-;kXteE4q4 zH#D?zJ*)FYgIsXwsE$#*?YbXB5VNBV928eK%cGxs)?K( zq(puHOy}?1_-M-2J8~}c4|8GTn<=uMQ?#H|r`Wk5GnRvKSP_ir0`e5K@gp+dJeCSn z*+syY`-g@YfJSS*wK}JySI;{MxAQ6YFCneR)0s_nEd9grB#$Lfr_b2+r7L-0>2|c{ z{Tm|>Ojc|~c+!gkyuefu`d!67AK zWf=9mv?_e8eouudl5_TGMJLNLpmg?no-gsb(&f_b>z>LPA2g(K#4;xY3w|tVBQiKF ztl-y#EpFuf9K6_h{}X{gz`uGzosbIjwcpIl%nJ&|sXA=LzWfXl_yzsYU~54WMe^;{{?qB@lIIv!_Y@2u{RQ&C7iQB6NS!?(S zm;E3^V(HDFGLgMQyBv|=*&lWw3PpD`p&RDxi3&Je1t GKkmPS?x5oU literal 0 HcmV?d00001 diff --git a/doc/img/edje-table-example.eps b/doc/img/edje-table-example.eps new file mode 100644 index 0000000..24c7825 --- /dev/null +++ b/doc/img/edje-table-example.eps @@ -0,0 +1,1241 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner +%%Title: edje-table-example.eps +%%CreationDate: Fri Aug 5 11:18:09 2011 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 14 14 417 416 +%%EndComments +%%BeginProlog +% Use own dictionary to avoid conflicts +10 dict begin +%%EndProlog +%%Page: 1 1 +% Translate for offset +14.173228346456694 14.173228346456694 translate +% Translate to begin of first scanline +0 400.99999999999994 translate +402 -400.99999999999994 scale +% Image geometry +402 401 8 +% Transformation matrix +[ 402 0 0 401 0 0 ] +% Strings to hold RGB-samples per scanline +/rstr 402 string def +/gstr 402 string def +/bstr 402 string def +{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop} +{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop} +true 3 +%%BeginData: 19661 ASCII Bytes +colorimage +JcE:\JH31[!'bu~> +JcE:\JH31[!).n~> +JcC<$JcG9?!<>rH~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JcE:\JH3.ZJ,~> +JcC<$JcG9?rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JcE:\JH3.ZJ,~> +JH16$JH5-=J,~> +JH34\JcE:\rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JcE:\JUk:]rr@Q~> +JH34\JUk:]rr@Q~> +JH16$JH5-=J,~> +JH16$JH5-=J,~> +JH16$JH5-=J,~> +%%EndData +showpage +%%Trailer +end +%%EOF diff --git a/doc/img/edje-table-example.png b/doc/img/edje-table-example.png new file mode 100644 index 0000000000000000000000000000000000000000..c748f840fff59af6132f1427c38c93b06bde20f3 GIT binary patch literal 1487 zcmeAS@N?(olHy`uVBq!ia0y~yV4MWR6FHcGA_qzqF#{>)VkgfK4i1jn5B(nixsoNW z5hcO-X(i=}MX3zwdHK1iy2Z&wsi}Fz8TlpenfKc{Zmvz{jLifVA^=ZhxL2ZotSLiAKNU;^&j|r{{GiIwOjp!*!daBJ@fA>GyHSk z)*x|{DJg}!W1_Bt+bD;GFqmwG9%FDv6?v5cMdAa+M%7G!cnu(>K~`#ZZsw zgH}l>Dveh>MvW?IgLpQfN(D)ZL?j`uuDjO#egEEdXRr0Gz0N*s|JnQO?>qa}86OWV z4P6ZY0H6i+JP8K?l&ro(U3Dvh&B(!QIh7PwC_;V9@aj=Fx6a#>JkO;70NQ_khfF~@d+}Ge@r*C;%JIENFW3lhCeCNh}uxbiLV?tKVy;+;FmLl95nzS=1#a$jY|z+#3&FDuVV$USKkBB zQ_;-Sy7G@U)%I=SSO2fCZQvCMypqp&yHJnY)z}rg0Uq+XkFlc|A&@3 z4%GKdeSs5eM0|Xrvno8)oFLoV_~tk%U8ohoEYaZ*AtW`!tjBXKQ_@wn71}rhLP{5G ze;mUkcMg5f>9}W%Zh84q=VF}O@nn-$q<@!`yLKu>D4L#UTa!lX+(v3mNu4*`0_zTt zS~I3=gA@Czh|5vxoj1CrDYK*+RPaPtXsEj89@0J7wKD-^2UYy8Ds3YN1b01Jow1qG z%lL!$OI1h#W3eFSb8VPn`Th8@BcyL5k;YlNnAs%jP~H4&y}hn}euCQa^5bC|Q%J@; z2z9h>r8}hVz>m}Q9tO8o2(p2WZtT}$X=K~p_IUt{@kMjbmm5=?sKepTQ{qRDrv0H8 zF7(P{FKR?6*5BJkH7R7r6Z;A~#>?jc%`4j>Fq5A~JA|(Xg+;8zkG!xnc zDxY1wCY_2YGN^zrM z>n`|Mw%AP(um0T*$F59WM|GOGlAY!tK*{0x>&ODwW@9 z4-X-|m`-M)7=H!M3AdZmT48?veiWDNU1;L8iJu7bdJNM8JGL^!0aG(P=`|{V$-cR3 zsik4HQm736K9c&>ckk9`+}#T*i{gEqO!Yw~-o=Fl`HHOhc-Op^?A?Z^oi^BY^m9QC zRzA!kY^vPyi=2B`DEX96r@U|Y)x9~pd3CHBtZHM#->86$dB~zG61h4hcsqhJEiDm$ zpz_Ue@F14Tw9$9i(@~cH7F~YYeElbOO@uLiEkc2QeQ9De@?l;V_D8d~YG*g)TpbSn zFzG_?=afLW`U1OnoIcs%Tw??0g{@!cU4|@~n{S_D5)+Ei=W*uXWBzjw%DfI~MMwl4 z-9s#NOfUnyawhii@aHZ{ip@WXc(2R%-zgeU(&Sk2{MyvoGw9Ol#l;b}-a^}NYu=yr z693%PJRa`c>@M#*WLN3}1X0O34&&`tS*$V^*_yS=U-G(oTZ31Uo}7r9%HE>)_8Wq~ zssDdV^5zBu9Kc%?Y3GzAnrqNiZF4sPx~ijIO*g?SqGUY{`?j^YUk`Tux0+K7suA&3XTxwW8KV2zf|2`&g_Ak@vdfzUDC>650}RrltO;&T z*%FPIq^|_@bIQO5EVI;3B46DKDx9JHQ#DI>JW% zugg&_HA#=>xf!(AzPp?qP6%lv;NfVKfu_x+yHT>X29&Jom8}$;h(bj-mLDiE0HL42 z97`CK-7sXcmXlGzG%CeMtqnUk-`*&F zd}Fy4h__SOSRX=~LTApkkJVx8z=;Vt1Lw}>ChyN{u}YWATGC%9v#pA^m@QZIng!2p zRp7GeQ>qvqCp7oc{GZz?jWc`nIkf7dK0BQqKtg1ovd7&3X0OcylMLMA@8HXF6tuuO z6b}CxDx2ifhAw~c?6-ry{Qbn?0xCiD(IjBQBWLh)Bj{60DrI(K=1@=w^0{Ka2Q1ge z07BJbY@qZ?_hmMua<2L#5YLu*0}o2m630x;Q-DW#-4GvgOB1G2_pZT^8U~a5Ot2w~ z{WkKdXE`I7c3=P!(i)Os!*G<+C6n!qyx-I`sG4nlO^)m{gt4!IT4FJ%KIOSd>_pYM z9^eS4P?ta6=+BD@?tSiyJc~xx@`)U*S%CpTJcOOj`m0b<${!Dwm;j2>_&-!7dOs>h zoc#$WDfjMCTXgU0(zPQrU-v0GXs#N^obBsL9i?53+3$3HH{+VhBqj8UKdUY#S?tG% zxvP*qhd^^xiIS$qXU|T$vD#l!yszZJ%0!g7>b_CmQ6SP}V3d2joR8ZON8!TV-4{w! zGFJr6DwRufADgkGv};FwA=Xe``&c-hu?&MQ6;SyL!(O@9&tuDAa#7D{_au5cmj|&4 zdg!=d3cVrW58S!4#}pCD+hN@vxebo;s`J5gyBKMkZKOzCTU&(fq&C8G2g~Y@2z^;mYBm&ZO+?|!`U*6Np3WP5Dlk1h h3 { + margin-top: 0; +} +.directory p { + margin: 0px; + white-space: nowrap; +} +.directory div { + display: none; + margin: 0px; +} +.directory img { + vertical-align: -30%; +} +/* these are for tree view when not used as main index */ +.directory-alt { + font-size: 100%; + font-weight: bold; +} +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} +.directory-alt > h3 { + margin-top: 0; +} +.directory-alt p { + margin: 0px; + white-space: nowrap; +} +.directory-alt div { + display: none; + margin: 0px; +} +.directory-alt img { + vertical-align: -30%; +} + diff --git a/doc/img/foot_bg.png b/doc/img/foot_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b24f3a48b4e076b88cf1e802b46087ffbb3fabd5 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^j6iJ9!3HE1Qx}DR1d4;)ofy`glX(f`uqAoByD;nl zL8a%*b^=8>3p^r=85p>QL70(Y)*K0-AbW|YuPgga7CvEi%SZD}LFVdux;TbNTu#2R zIsJTn+kYTPulo1Ll3AD;2!xfDmD#wLvj}>v&@k-CVP=T_%(cphxuXQAk-^i|&t;uc GLK6Ub>Mc;VkfoEM{Qf z76xHPhFNnYfP(BLp1!W^H+WcuRXD>A=l%i;Wq7(chG?8W+i%Esz<`6f_y7NWHH!5o z63R1{^0cb0vMSkFaE_%x<+7O{*?Xs&Ff%xKT5jO&GtAqcqoa~}b>qg&H07ky z617wnX2HUfTT*8{kPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOZ8 z6%`IG`XD&~00I3;L_t(o!^Kz8j>8}fODg_+AF{uksuh}hxC0rJP`W$mkkHl^jB%XM z>f`Y+`Dtd>`gxwMmr`2KIk$cshdiH8N#}XW6$o}5WA?p%5)sKc%eHO9fR!#HlFUqU z&XQ6Z1~3DUmCHm#rjx?$lu|lm24QA+Eh4g2CJ}X<;QbGo;J_$CohD|s1Tu}z3KIrH zRtpQ8-Z|UyQP4caCB~&Z3QG0mMzcQLYIcQ!(sFW-xf9knF@|(?iY~XAOhHzd%#8OD2m>x}XSSsVf@;^obfpX48<@ZgFF$M4@xtjbM#B=Ojp!9yfFNKXj22K7STvD?00000NkvXXu0mjfB76)l literal 0 HcmV?d00001 diff --git a/doc/img/header_menu_current_background.png b/doc/img/header_menu_current_background.png new file mode 100644 index 0000000000000000000000000000000000000000..de97c9268e4ac68310c8b92d6ab6bd8a245611da GIT binary patch literal 1200 zcmV;h1W)^kP)002J-1^@s6XaB>y00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RT3Fc5TrKj#zpOzs?z2=A0p@aw&u*pMn|G)ug+?Vh;0+zHe5dVLoF=!DBW&zJ?E zp99|S_j0@4%Io#|xG+sqdB5NP{rn5Cj%O+78UIn|DpKcsK9>`B2V6JsOB3oD&r;4a z{-e%Sw9ela{A&{jdu5*U-Tgr1~ zQc-ZvZCmQQrCnTG+COg8zWQ3Lv1sjNIKQPlR|Xsq_}(oT0MbDS91lPg3>xeBFKokrh3I+f~!N36>5GNtP zFb=56FWNP#oK=?bNEQ~!rtXW9X1GX=k~FL`OjOeF$R)LGB-wAZi(5xddgID^{pUl5 z$!2zVWE!iC5c%CAFL=jfl{TW1M$7Wjcr9z}SyPKmlC20r0B}G6Q80PClsJ^eQ9Rdb zuHflIJ5saoBdvW)J5o7`LrQ$sb0li*FS@pt^@$vLe#kJ^<1ntHwKLacEE8!V_VYY{ z^jk0Fa-9o0ILfhhgnDcg*`~%yk#UNgFLkMLQ1xp&>oHLMt>=krgKLZ9aoj&)eVyWk z+VI9yb#%knV zBgOT1iW^1q->g9a$6utrxv^4Ql-s5#yS%xS5>LwpJyaYZ1w-06F426k%%gi2p;YTL zn*Zi$*TU&q<}Gq{z5F%GPa}Dt9$}k233)sorIb>h&nNZ+VE-)`LNtIN1b_p=0f8Pk zSwvore6GJZg3A%uh&UU`%8A$z3ApNcvGym`^9BW5y;mkO7OVYaI#wj=im2;bzSt*w z8j*3rXhhk-tiA%ik?Y6P7yM_$}>d^Cl%aa8a!%A!J=gv)gqCjA%RAmjShY zk&jin$jBj)wrhPzE#o_v^@kLW;DnK~k;Uxogc+{8mlL+=3tKP%4hR4$2Lynj z95C}RO)LJ$<@I?2i7h|tH#%lcU&}tk-(ol0<1_foFDdWsgqjV%=7cRA;M<%KLNw4f z2!R6vT{&RuTk7799C>JZ4;!>{ThW;;ZOYD_SA%VO2ZR&C3B68;Eg1NXEf@e0gaF^` zfS#=57JO;X{zkCF($|*uL^8|wn48N;fkQ7R9I3CpA0+QRH%LYRy5b)R!`g7p731Il O0000002J-1^@s6XaB>y00001b5ch_0Itp) z=>Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOZ6 z5FZU~yaYY~00q2BL_t(|+U;H2a;q>5blUuRzqvD+7VvpFWE>%_)?7k5*?npguqAmd z8(5Uf*Vk7qf^ZV9(=;gx!g&NNrIcY9%E!ltq9Ht=fVI{#3`4nIuZo7C3@E%I0mpGH z+6xLIpzyv+um~ueb`dgXz*=j$TrP@=0TUO+Zl@)sQ3vT-lF8GjhNS)Y)Np5NBKI{~L@T3m#*2iTKp zt@p;JX@cbN4E2Ix|BjCFg536j+O}xz_u6Q`^V-S$v$poy&cxQ*Y0r;rMq}sMi^c@` z(Y9kbHGfVm!D!}MMH6RQOQ=PVd8HOe5K@dz0av&_)W-mG0@FVnX-$jszG6Cpd6iG4)S zD4R33W^wegr6p&!^ui1{3`424F0w(E#-nu32HZMgjcogm$jB1kn}usg#Vp4?lQGIP zmJDq6inbT557~swV%+wP_%pYAzYQ~vV>tL(hik9?P_~PVkL=oF50e?tN^s;oR77r% zlT|&VC}Ga0&tEJ%k7- zoJv4FMiNe2g8%YGh@d4{5VmDN2~q_u!NU6zP)o2N0s>_EwNi4;;4^G#zyC`L>8-YI zIsZ<;Sq-zMv%STs5t%X@*w0xZXGHX=S58L)URT4u^Pb?4-gC!@j zGZO+Nz0VPNkPS1cMpr9pK zPzLm{wVGyxy%obpDUi2TLEY1CBu?G4a_w4M*7W_50a2rjQkgL}dUVxOnilo5_XJ|? z^0b6KgUQ;2DyO!8Gi7vpi4|3GMVi2@-Nh0d2`yX4qE34Ty0;9h7ucR!#o2^lg6|D> zq>N@KDl1M!v148j=!p*!BwK!Xg({IeZ9%}cIAvzMSJ)Ae5UHkn2oMDWN!z_bn~X9f z@-5QES=A0wM|(C$1t(DkMz$~$G8#J+SMOZ5Dyv8A`w~27zqUXna*hph7O3bmD~Gp^ z*;fa=*%<}bla(WZrnkg+@^mC+kFs@kF8aj)Hk+cY4=Q!sYBVE3usz00Cd{g}$bgX+ zEs`2}PM|AlPwbhc>#U3~dKV?KArhvt%U4th9!;L?oeXA`K|g&EO%g=b=rg7ws`Z0W zfG^}&b8$*k*B4={a+xJocKjaIK(oCqTOT@;wzHCX)@Jr%Fnd8LdMj})ftln4_kht_ z?hOuGQ#w0_X^UxNi{yO`dG|z5aq*tmGIh6m-ucZ4$E=q33^;eTcR-I+1i!M{_!a$H z+wPGv{WJp#!l6$>RG?fqm4Ls$zapS;ZU)p6ES#PJ^<&F|2q=hvg78!V{`~xifWmnM uoCT@+p&H=~TxzX#9LMtc`Kf3KPscx4r4cOw-wj9r0000c73e^-^QHU$G0h_3|cuDljd5QbT#Je?6pNPP^G($^aTorE>q=yral%n2Rktlk|u< zB6SbBG`&ZF=tG%tj9|RLw-;=+A0K(VYgY{_m@_Mu;#9$;A9&jo($nUG3m{pPG9sKJ z)-SrEJ!oZpgRkTbv#N2w?Avv1g`*hj3@X!Cn+Jh2Ml;^V7@mz6b|Fo-YFT&Oc=qw1 z@}>V_jJMQ>kyo}tc5CX?e65}5iLW`a*?=JPI$Jx)*JdpOpdFk$7LNZlSowU@cr#Mjx)>#Vh2qRYMG@4%U~V=*(;bxq6%o;REM)$>G`C7nd~m&p*#P>~ zXHur`Yquq~Y&12(1U{S4izUj!VqeX6#jVc9i4wfL*s)~-o}QjXMEK_BCOa2bR1e|w zfOiwc9TpT4;xRu`3f2tu^&xUXTv-ZkyvdBZz~6YF9A*}l+0tzM1w6ihdTKaGCcM-b zM}+kR##h<)t_vDPGSvAu;zhryW3SGaF8dM)M|gO64tMi+Iy@ydmbFeUae-c2{QNoG z(9m#bJ|Lb-MPIsvICAtT6Qr%J&FlJgLwoz<%m(`4rx$N)fyA(+zm0CXPABZ`Y;G;L z{_bdyy$#F#KH(XXsO3Jb1Q#zc1fq{*U zjYV~JP>U?NSCL2Ad=K{iTFJ6FGWAV|A0&YtJIM(N3JQvei!+~p$aC|>Dl6&yL|#Xg zIX+2Weg&eas2K77JvQjh9i*O~D5!_YojcEE+(AXktE#$w{w%LP_%H5M=b04kBWh}D zxc2O9VLyNW)gECtF*P+|5T~J=o2apg$$#_(d-_h^TCnHtq71c!2zRWxWDpjn!_UuO zcWv<0kxLtcNl8iN)zxTQTLC2}o9m(byTL;$JWs}{A3oS^ZEvS;Z{E>Cp-_rSN|AlCExY6x%V{lP3aGQ&Z}<7hzfQ zF07zj10`OsC@iK}tTCCaB&2|+E-(9l0(Hy>@X!C-*+HtR-ujI2c$AdYyXh^~)F4Il zzzMlLC8a)YPnWbhjIFPa%gD$GmE?PCduwZ^?eCPKudkxBi;LOH8N8LwW`;LSS$4%) zx?ENsdRA0Kgd_bexl4mJQOGB;;>g}!^1**?gy$7$wPR|Ei zVs8!%jpMNr88)kWN^?ogde$9cWo2b)X&FJ2;y!k)F9OgLp&JTI(cO{q^YfcwF#H{j z%mHD&8k`>k(lj9Q-C;Og+VS&=mg%exwn**okO~FI#6R7i^cR~amJZy`{L_nl_Uzd# zP+riFoNM<}Q<iF240XUkipnh)?rRKXHCsH%<~~eP9Nw zkqau%sz*Z!{@*$FcNP?o@?cZr%EaUjMedC|I-tV!fV+9RVQ_4jZKfCbIfH;Kg45E_jJnnwJDq^pApCdwVgPKmHB z!=6@FPNzCr)C6drgvA1wG8MJ9x;!~AS&DhwVSc;3B#qv%<6L7Hx)0{h+mg+0 z0jqK$SZNPm{q3QtspPPKfBq{eiS~+YJS!pb6?`OSoRqamr_%>N_q^qN00y+O`IQf2 z+ONq@jb3~&ch@XXS3^S)t+$ts^fgp^l*D2hS>*bVDk_42(C2Bz#jeZyq=~0Iw_8tY z=KJ_03RcSYhZI2ZA^5$2n^Z zhKHkI8AsB4C}Cb-U2XZaezlWJK@9Yhu?X!asz+tBKS$Zr%IdX3`!1>nqM47)$jG={ z6Hw*j?B(e@8paOM)YQD_>MGBrf)C%jMf%)G{A_Ab!GaWc-rAa)nHj@)ozmsgEFfWL zXIE5Pd(7NL^`S8bMGS3ZguyK+PiESq78xme#+H`U#qGE0lGfJNvkkwHO>4CJD>xwo z1A{jM11ylm>2^1Vo*e(Pl1LDQ5Ws)HygDLK6i)xZ|&>dfsOPKeXm+M(}+hAe4X z6^(1_>#6teN95%pc2{4Es^8g=`ug?jBeWA}$-@!V(E(v)V{=!8L18fV@bGXsTtjrf znx^KxYlUG#U=E@&U;>bLx5xnj0W$+?(|PNsIb8382bo;|XlLL`xUQxqTtr0V=kjuF zbF&(t;zeg?&f;NqvRMLSa&mHZZZ58_PO-bU7l}ggM@B{}!jl?)gFFKHeR&Zq0D+2% zretIY!nj${CML!8^?U#T%DQSrV~56cXy{^gjJZ5-NJt2yBl4*FtzUx9&dx=n^A{Z* z<3>hoGP1Hd>2zVBB+57`HanY674K}2^S*xF8jnx@@#E^^RNIN1oSaWB#cMgJ*Otw*rB&I6XkW|M$G6uvyt`6=4Q|K`kZ_71o=n5$YD92 zJ{1C@Q+zl8Tt!rSyB;@d6scf;|L*S2Lai5x)ZLRPtfZ|?1=~Oy8x#I6Pp+)3br$G^ z42_NbX`h$s5(7DsmzRH{J7@@G0_>a>lRU=kBQ^b#^fF9~Kp@mz9e@J|CF~Z; z=i}oO1g5^dRdnUai@D1~BN_7E-_c)hH&#LIcW)}f^hZ^u!v4CB{}Fsm_VV)Tm@5qD zjdcf6#)5f&1{ecDqyO64P9`KI#K*@&x)g(!n&@@JQ3+sRI=q{XKyeVzcDKRmK@VQGJz^%tG zO*DH_jWQ#&1@Sat zu45x^o;XwQrjLI%y5Cr6|6eo|$`MN}mI6S}%?;gTi+K0Wd__BDY6`#c=MU}03j`ox z^qWHiar!iqj*br68Cc1Nu2gRuM_H0oc5HR5WMzw#YBJ+Wsm%9p=9#t=@;89dymqau zKP+D>F!{yAmoIV_{<5;N^>;SCQP(Ui607kFI%@i(8yU7p?}*InZkocy4qt5dWs-8? zfgi_Qz*j9%K=LhN|IXK+Sz20ZXd>1-)p-pgacy|{UKB9&V(6&+^xiuNNGBjAK~PEEit98WM7_;rO9m;+2guV_@NG{Ge#WUS;h@L?P8tromlX#$Kot@+EAvw0X{G> zBop1$Ph)K>4hgxB0@Dr*OP#c8kkk<{Q^-jNXEdH_|tm zdCc;uP{nCO6E}6YL*Npj_=*zMILf958|RY88;}d152UfQh%>zejE+CUt8T+!U)6`4 z*8}~phlSCM42@XOE_60ns~LNGdeW2X0!v<3I)ih07>W_GiSiIBIXC#U{jjZvjeHJ?=4*t{GNnt4)T(q*XUq;oC^NY3jcB4ZAL+S}W*#(lX@Z#(2({$d}Ht6nB z8*54_X*Lnomodf^_d*w zB1_>Fu*cB3h4`(O&AQkDCP>0GxW#laxV-bMQBuTXPk8vvEpiCV-R+g^)^2m9ZZ5q# zZ(M>{394tybz+8iW=C@2&i z0mRvkOxl$_(YO8>@Cm)yt*?Y=T-Rx=G?wZpsV@1XB`M5wPcu$fhN$^USuEJWB&6HAPR{W8mMp&&5f*}>qgwvyS9rxf841pV|NKBd2qzz?3Ls2 zo>Riy!+e@M{Vn&w)JdTa2@ZOQ&YzOcick-Dn;OoKs8io&FXwzp-k&T?O$;i_Wwgd8 zjR?y+d#B%ss%pFR#(OCFv)At%Y+R09jxApj`6fn>utJ$ZgWnhrL?#JA;m#E$`SidW8tiKlQGjaQrTn93gsWLv~e+7^cgn?ITGqjv|W1}5uCN8H_cef zYSfDcBlwQhH|AX6nLGVo&V5|>oPG7Eidfum@LTPsm0t|_Zh_WfF5pBIDdGA zO3{??4fE&5c+!E0up-aW%)zQ=Z==HO#whIw#(%@|S5Eo$LKY#gA@Q zRvrrr{u8B5Pqb|*Ar&yagmg`!*+%Z)!&_d zY$B{*ANr5QL`KB!D#gmhIR06|Oj_e$s3qzgzjd)8t=!sM@csLQ?2Z5{1H|TaBZ_Gz z+%c&JdX5M#Ze(!Iu=u!JGh%j^&|xvgEC9uZZ9pMCp%cCCA|ovfa6&!ArqA{@x12_u zIURk!vi@BVlChT~k;@v}W0MSj)TZoa-z%x1mXs^C9Yry5x*Gw($Tni=Se<`4+r&k}?|L{3K z{i&wO0gOStL`*QQ6p7S;?0vs3!sVcc&M9pB{$wl z+p82@BGZ+(zge-j$KJCC6VH_FUbde(xG!?NL#_V+eU{uS`11VNvI(9_#af~JJHGIq z6lPJLIFH8=K21j}ou+3W{Nwm6*xJ%m$6RnxcVu+XlT^!kP?X=(^Z4#ZM#&#JGj|Y! zUuET7e=vJm@}qJ@B@j=2F##usua`7&B)x^?4=9_kGap-*6rZi0dV{Z>1XjuSoWmKr zwArBtNAWKO#iY`*EaEXCV`B{v#71j4=J}sj>_6tDvfYj{2%+Cg=^lYQj&>hN>*l2i z9k7&@X`PdtVG**~%X$29A3U$>nU5Opb%_4Pl)Ko5f75HL%PFnfUg@rNoKA2R-z+KDC-+^A<)a}&bRhOh-|?!5+@n(x{?TlU%Q% zJn0mb-Wx>R)?|0LO_V)4cvxi|A;4Z0Xs{~Fm|>)^0PhJpsuUlW(Nn8~BgjNnvW*1E zFK@H!SST#07TorEtnc(Cf_-vY)OTYK1708mVN{`{u{PVA6$SW8zAgB#z+HUX+05zq zrgZ3m&Roy4cw@ysPM@pItYuWI&9J>EbOg^^l?}(=oiXPfJlS_I#x8=I%(ky|(?7;f zn<<^uH@wILTjo_1oJzO#xPKa@ODg!imfe9KvQ9>yq>8u~_zm-6&zcc*&y;HS@>!)~ z`Aj<45cvDH3;xqXJzj_2%-tuo?4esy=NS9x` z%tb~`hnDOY>-tc7^%tx@MNP4BgAs~5i4j(>9d&JQificAtQ_{q9ev<2dr(|wjGMU# z7;!HCS%g1I4&O}M4!sCzU0IRVDWsSW@8jZL1 zvz0&u@r$Ga{mpBRiN7qH^c&5m7v1YbB#bF*BtjKPD5^p&T9&l?vfAC(=Jsi^%j{st zSv5sPtk(YEkj>Ad=G$4fGS>J!sYnNdz8OZ3f;WbG+aKB3O&7$<{%X9=2D=lfr`f%i z*V}PiHS7TMubdPW!!2Ba-rraX?OmC4+-hkZbvcB=#ADlx6hzKnW#5(7e3WS6esqov z58CZQAq5`VIBB<@`~(N54j9~4${zmdbYBN!F>0cn8Ft=RGj`3kgZ<*9Lg-Epr}P%p z^E2nyC^?lINAhi9bC$vdkGHJD2~g(-;)#CPG5gMIvL40X{CyFM5J$J=k)quqgH~ky zh}8bh`^w&WJ+(}mvjy=&(wm~v^;ollRDn#0ZQsD9xuxJg1DEVV_F-dR4G7ldPO4_x z?Fo&BPt~Mek1&Rrk#_LU9=Dcwt>^0#(W<@2JJQFRa6z6@6Awpyiwr)~45Pihdob7- ziUsEH>DhoSre8cX%?Z=q#$r9PDKm@;3$6d&1;gN9-mF}g=DJULKbt!!s6)-TW^(dE z2@iy*@%9R3Vwh=sdv#s6uExk4xjJ}kema9lnY!9y@yUe$lJ+@sNw8|R3F?Ubt=Oym z4fcQ?!^GFbn(&heTgD~fAi@d0mgRQcypfsV2a~{}nhSC>2!*w}w|^N|>#Q}ss|i?0 ztYh4!ZcmAM!X!j6^^&ta@u;$;33WGMw)u{v-Q1Pr$+rAnUp!x%ZP5OpP*NcQ8DAg1 z_Ef2TzaHmKan`Qz{rv>k?R>lXS zMX{a%(kz%tR@k>y9iMrh0q&eL7m~W^MlZ3MztXw8URHMRhfuG@eCPI+t>VSS`3Ht} zWqn|HkUl14g6q$(+Tc?DoBjOcpE<}szkT-}mn`;@fL->ESGfS&Gm)Xbo*qufAI=65 zoR>Q)`$cc|b5N>6_JAaRMv0~iXJw@qQK_IW1X1Cc!cr~4;JIZYifs=e3f7$ow%3BC zc3V)|zH2?s?8htTgcaxoffPCxUVmz$>2pwR2y++r)gEpg3O}1%gRouT?v-;kU~wf_ z8#hF4?E|joNd=hF`#1Ck13(PevoTXgckIu2)2^PU8=FONw^XB=mczmBh%sId{~4$5 z^QquouYP#(Nt-oNdnqlw;ulHk6th*A8TYyzu?vTWzK>EfZilXUKzN{|>ds^CZaJck zK6#Z@lsV~he0iH*pd6%}P6cyAlwn;C&^*Dqx_k1X|b1C}&j zsDHk?L~ZLe5?8Hh6Sy>ov3RgeMtG9=HQIGI^v_Z)>1V~p^Q5jb&t4zIjl?7W6UO46 zANXG3d;Bhwt&kaHk_&b{5O+MgHI7E*7G|48zkk??wK4v9K8(qFrl1%;8%)AN%&yts z@+?V&?u&H!H{-TpM2tw+TC(%q;1kUrKSVq3&@$|xe~ZHOEGSs~5iv~;XO3EI_VnZw z5AC>Zx!4GwX)h7!1zHnHr`ZZNb83$WX>y(oXn$_HTX&a>DoKac6pAe$4v(RjKO4}Y zNYP%xH8gQmXfrYX%(0>K{JcAysBazav$ePNO~D()KpPnTlLreIy z)rkbPdm>9!>m;>8%d(=vQsdwcy-l6fxGCDu_jnpnk?c~>_w!qOWniF z%hGf2e0Zp}W2>@TyR3wxkvT<0*!ueV@p0e>_+bBjv22dIG-~MUPb9MSTq zSS3Wl9heSl&v~p|5B@k_PF5#vU#~qJ(`u_kG-{*e@n-wD$`D3OOvaF4@ZOb0n}oV1 z`#B+2sKynxjQ1@`QkaWv&$^Q_tjg=@-AH`pw!_vDWB8#@11&8bGu)BP{ zO}&!&$M~?Gz?v^#R=mDl*YJ^o*DlUBPqtdKU|I(Jc`S^+KPi50ch}-hPWyY8 zEpHNV+k#6h!MKf7ZV>X};YejMsqgxVw4cSB7ZzzuU#S5|V387VH$)L9 zb%*_<5s+!RFSTZC^MrCZQ-&VcKfYPh^X6AVu`gj{@~RL$5-cU|H3GO3yXGFFli~Eep6=xm!-YV`<&YT$ii3Lg zWl{;d8=d~wLxK(NG8od&aWnCcuZ>2OBB0$$XTR)I4*APFU>AhF8U5vArOHN#VMXPj z(4iVaPkF|%n+}z2S%bxx#@=yH5L;?>_jGl2edXci;$om}3DGHc&?k_9AXn~Zb+0<( zb|W}r>bCk63bw@itYC6}HfLmGK+sT%{N1?%QBGENdH+BmS8jQV__){RN>_}F?ba=M z-r=a%<6oB)kNGITA&oC_6e7FvE&Q|_fkkGH|E%}v1$Lm)SxoAG^pW7Wjq^NqD)Z3^ zHkr-0{|c*W9sF&Ho^~&gN^-oEL@QW0_HFUo8+W!{i%w`-c6Zidr{c#2em8}~Zm4zh zWPIGU;Vp4go=bm3GB&2=k2={xa5qI&##g6v-3uetA{kHudjwho;sqtxlEL($E$zz5 z*Mk^pHlJfhE|q4sqJ9};l~IoFpJ)pPN40Nn6+OR)#*Cz4(ICC=#UL;(7&hA8Vb zUWw394eiu7g0Lc|S)75Jne| z(*Z0=!ntTK_A4L|(=|UCv?j2kaqShyrT>LD?oMNWC_tDU{p5+t(0>6QmuJE7nMW2Mz{XHF3Mm1Ryj=L;+H^n170P{$%(9Ga4GW3K+hYB!%ryT0&Rq|@ipyenqIG1&hhJ5 z91y0Gl9Gng`L^(Zv{Sk-E`gW`A+%GA=~Kl3<#JGL$kBqc_2u88O4tZ39|d}EylMf1 zAPXBh9*f0}kB@VZS3E0RoSl_$+ad$?k<&o+6IN&K5(F}}@7=pMp-8Oj#PC_tufC4d zFAeVG1DtA`r!BCz@@JnUxw+|7&!Fm|{V97_wFR=3to)st z%%{PY!r9ilG7tD}g8H z`J?O+Lp1P=l7@v|gbro0{GS*xB;i~}%=my~V1zG1C4**yP2o$=s{fi486zz^-Um?! zuV}vn5)DhJ$cvH@Q#1T<8(qmTcEejvS>1}fUzF|TV=WIailG^Wr==17FRsxFWRGyE zcmTFRS0*5lprf6STbWjQq*vv#qW^eg@l~6Ul>pxPk%y50 zA@46~cnv+hi2SsYpbF>g8>?cs>ZLiuxHH$lysHB#yC1bss@!dxiity(K;pD>9Doi; z6s3$GERAt`#Qb9+2lPe^cCkQrKVR(SNY=wzQ&`RMbaB^ECu?ix`A{a+aLD(f7d+?U zN*adiHC%!!s&{GAf}t;H7$URkQ6*NwjPdHyO9w8l&6hym38J!Kmd~Pf&nTzEiBM_( zZCs8PGBQq?PMK!l@%{Q3-KeO5!MJy^?Qx~0a{aKMvX4SAo*o{GceAg6-u(DJ!e3CS zOqP@uRLzXec(KYwJrJ8ts0eU4%5HdZg2Rj@-8;95sRStmklb0gdK zSk{}_tu ztJ162nl(IIDO!uxHcl?7Vx}bv7iWI7+HMEYyUW~WG%&)=9#x(33Yc)YxY!~2Kz%t9 z)6rI7NSoV2S_t3C)sdSp$Q+^(}c>ZT*}qnT1lr)P@<)5s zkY@dr?X_z)W~n60u%_d_&^))SDrOcZJFA#B8l~p1czJ1_4DC@K27UJJR`k@ASm2*^ z)j)e-2gpK`-S6i5QkX;LV3u3jS8L*#YHDw$UAyl6R%P%Y>06pLHG>fE4wLc4l_tmf zAD;|kUHPH76}@!8JM3;ZxH9EdmyGw98ecrn^~OaUFw$`oIewXl8{@bZF4IDtxwqU5 z&hN{o&uDgZx3^xGE^eV<&X5FX|Bz}kLsR=RN6VD6on1)q&W!GG%5F}TxjCe8H^1uV z7cC#L&w3(y7QkyL<116ys`aQ$1hMG-V`N8%%|9TygfTadFdXwa+0%`&|KvA`=cK?P_1z z`9ZxUy;7X4VmQt%II%@uYn*V@{u(Sjmb1v4bH#Dcj%u#cP~pCl&xw-*$KMy#q_VNp z3?ev5jiq12Zc(N2d;E<#RKpBHWODNZ$MNk$pQ-~gS`XTM)y`LW6Z?aofMeD9irwDEbaFb``FWM{r@b{SD|PQXnjo_lk!V+m4tVmCDaxKn<3=>T37Cz}Cp1lR zz+bVX5yDI)Ta?vSv!VhR%vN$9*v2TOk(fEGNM4UQDEr$Jl~0M1Y6GDxSCwh5dMLUA z^jZ^uG{;4HT2)mYuH2L(X7j#O&5){KL|IL+=e%>^d!UWH_jCUfrzX^2%EPD#i{0#3 zl@Wh~kvH{VNhb%8FlE!;W63bm$$AjD8q4SAaQ2SKZ?Rwin18Jfm+XKL@*x$&n!qaD z_@ciGonN2JX+cTbX4yXZ{kAH4UNoE(@)gK(94EA>sp1($!u|~Nt<|M;4VlfUXgkzs zR@|kQ27zt{|2+%9EFsY@MJAo-SU|S=9DR z{_vmn*aHaiol4}opZrHRH_B<~9}4Duy2kWDDsKTG4r$)= zr@ux8IB(Yv(PZVbXD9f%I*atXmuRy&C|A}~b_KLh3f!2dFC&j}PPGvS`og(xFAZW- z3-)7fFtSwW7mwTN{OiyF-xyHT=C?gCQFao<;%yLvcD5Zf2MZyAK+Yv=%|L~unljzMTeg&Z+i8KLeDBn@r&lSDb8VkF>dxJ znIX3`^+vDID*15Tx%z3lvbbp2=~n+YApJE@NSb_~ktgmvK3%R8iqV&1rR*^sjQN_k zNA>9UHp91A&agjlJ$Vi}o6*5Y4)SMmdo8W4Qm4Ft9?e&67a3^lSFUOSY_RWW)RbK!D{Nd>Ai5G*xD2`GSP#`3Qg zRP)O*aI2ezR6eZAFa=CSeW>w-o5&)Vcc;dduUQ3AZ24vYki3!xX1QKgdSLIWYL1;;*I*JP5 zs&HC+drwC5xqnd=;{IG;%COVVOu$+!%U=3a23dKupZysDBFg#ie(Lm zx+eM=4^f1yx@;Cq>9LKYjiiaiCp;g`8h3Gfl@smJ> z?W_Fb?RB>HLzE@ZQTjr~RDAYB5iod3w&2}H9-S=UoD8dHS0fy50_lO;hX9D4fGHS- zLk^}ifr)n=5{YE>XfG)*j|A{V0{C3j4gF>fHDO@*tL^FXlMvD(q`}?8gIC(_3`k0z z00W1hBIxHEeDVjAs$0e3VXCVAwxkVPDQRh;@+jiuoBp@|iG*G~6-TTr4m*vYRt)$N z$tWcuVFeU~zz}<#Ea5u9q?Qn+Duxh>VN7iXd=H6;vqkv40IhwZ<5i{U2cB@P(SW3~1f<{4rSKTFkQ3nVN%u>i-yi72^>mh(Zw%1sTLD#fiGf`g4^kfJaoM?m zca}Ul_uf$mo42@34aCyH;L^)}Gv(Pfr}K`<-GID>%<7$Tc#u~-Yn1F4ct(;Hj{?Hh zF1=@i9ST$yJaR-*5@g(9hjkXs&t$hh0Ifo3555rKJ6|zWHiB1lb6@BdNEJ8)RB3_4 zGyuDL0_f9buCrh{(1dxEJNlcA(~AkPB|DelcADPwkqrRE>)vgzV?**AK-&n=WY8O9 pa;m?bqQ7k=t-sp)|K2i5>B;jaO`jK;g#hY6Pt~8P)vMUO`wz=k28aLv literal 0 HcmV?d00001 diff --git a/doc/img/swallow2final.eps b/doc/img/swallow2final.eps new file mode 100644 index 0000000..7d89707 --- /dev/null +++ b/doc/img/swallow2final.eps @@ -0,0 +1,7730 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (swallow2final.eps) +%%CreationDate: (2012-04-03T13:51:00-03:00) +%%BoundingBox: 0 0 299 324 +%%HiResBoundingBox: 0 0 299 324 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 299 324 +userdict begin +DisplayImage +0 0 +299 324 +12 +299 324 +0 +0 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424443403C3B383A3A363B3A373C3B373B3A363B3A36393834373733363632363632363632 +3636323636323636323636323636323636323636323837333938343A39353A39353A3935393834 +383734363632363632363632363632363632363632363632363632363632363632363632383733 +3938343A39353A39353A39353938343C3B3743433E474642464541474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642454440 +3E3E393C3B373C3B363C3A363D3A363C39363D3A363C3A363C3B363C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373B3A363B3A363B3A363A39353A39353A39353938353938343938353A3935 +3A39353A39353B3A363B3A363B3A363C3B373C3B373C3B373C3B373B3A363B3A363A3935393835 +3A39353938353938343938353A39353938353A39353D3D39454440464541474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746424746424746424544423D3B37 +3B3A363C39368A5E4EC0795FE0896BF79674E1896BC17A5F8D5F4F3D3A363B3A363C3B373C3B37 +3C3B373C3B373B3A363B3B363B3A3639383539383559585474736E87868298979287868275746F +5A59553A39363938353A39353B3B363B3A363C3B373B3A363C3B363B3A363A393539383554534F +77767187878294938E8887827978745756513A39363938353B3936454440464541474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464247464247453F43413D +403F3F454642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464143403C3E3C3B414341 +47464247464143403C3E3C3B414341474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464143403C3E3C3B414341474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746424746424544403D3B383C3A36 +57463DDC8364F8916BF78F68F78D66F68B64F78D66F78F68F8916BDF846559473D3C3A363C3B37 +3C3B373C3B373B3A363A393539383443433F81807C94938D91908B8E8D898C8B858E8D8991908B +94938D82817D4444403938343B3A353B3A363C3B373B3A363A393539383442413C7B7A7692918C +91908B8E8D898C8B858E8D8991908B94938D81807A4544403938343C3A37464541474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464247453F424753636E74 +807A614C413E45453E3D39373737393F4241474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746414340475F7079898F8674503F +4143404340475F7079898F8674503F414341474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474641 +4340475F7079898F8674503F414341474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746424746423F3D393B3A365C473D +EA8763F5875FF38156F38156F38156F38156F38156F38156F38156F5875EEC88645B463C3B3A36 +3C3B373C3B373B3A363938354544418988848D8D8688878187878086857F86857F86857F878780 +8887818D8D868A89854544413938353B3A363C3B373B3A3639383542413D8685808D8D86888781 +87878087868086857F86857F8787808887818D8D8689888443423F3938353F3E3A474642474642 +47464247464247464247464247464247464247464247464247464247464247453F3E3736363635 +3636353636353636353636353636384144414746424746424746424746424540373F68A9DCD9D1 +DFC687543C3A3B405A8EB4C3D5C7A481513D3F4241474642474642474642474642474642474642 +47464247464247464247464247464247464247464246443F3E3C38383736363635363637393B3B +404341474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247453E393D5FABD5D0DEDBC49B5B3D +3C413E393D5FABD5D0DEDBC49B5B3D3C4141474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247453F3E3736363635363635363635363635363635363638 +414441474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464247464247464247453E +393D5FABD5D0DEDBC49B5B3D3C4141474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746424444403C3B373D3A36D77955 +F07D51EE7647EE7647ED7647EE7647EE7647EE7647ED7647EE7647EE7647F17E51D877533F3A36 +3C3B373B3A373A39353938347D7C7689888184837D83827C82817B81807A807F7981807A82817B +83827C84837C8988827D7C753A39353A39353B3A373A393538373479797389888184837D82817B +81807A807F797F7E78807F7981807A82817B84837D8988827D7C753A39353A3935474642474642 +47464247464247464247464247464247464247464247464247464247453F3D3A508BC4D0DEDBD2 +DFDBD2DFDBD2DFDBD2DFDBD2DFDBB075453A4144414746424746424746424540373F68A9DCD9D1 +DFC687543B38394C7DC1D7CFDDDAD0B670433B4041474642474642474642474642474642474642 +47464247464247464247464247464247464246433C3D475F829CACC6CECDDFDBD2DACFBFBFAB8F +775541414341474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247453E393D5FABD5D0DEDBC49B5B3D +3C413E393D5FABD5D0DEDBC49B5B3D3C4141474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247453F3D3A508BC4D0DEDBD2DFDBD2DFDBD2DFDBD2DFDBD2DFDBB0 +75453A414441474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +47464247464247464247464247464247464247464247464247464247464247464247464247453E +393D5FABD5D0DEDBC49B5B3D3C4141474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4746424746424746424746424746424746424746424746424746423E3E3A3B3A3686543FED784B +EB6E39EB6E39D56334C0592FEA6D39EB6E39EA6E39C45B30D06133EB6E39EB6E39EF794A88553F +3C3A363B3A3639383455544F85847E7F7E787F7E777E7D767C7B747B7A737A79737B7A737C7B74 +7E7D767F7E777F7E7886857F5555503938343B3A3639383551504C85847E7F7E787F7E783F3E3A +3B3A363B3A363B3A363B3A363B3A363A39357E7D777F7E7886857F555550393834474642474642 +47464247464247464247464247464247464247464247464247464247453F3D3A508BC4D0DEDBD2 +DFDAD0DCD8D0DCD8D0DCD8D0DCD1A770443B41454147453F413D39383736363635416AAADDD9D1 +DFC687543C3B3F3D4159738290836851403E444542474641423E3B3938353636363737393D4040 +46464247464247464247464247464247453F3B3E5692C2D0DEDBD2DED9D0DCD8D0DCD9D0DDD9BD +90543C3D4340413A36363635373C3F46464246433B38363637393E45464247453E3A3636363636 +3C4141474641433D38383735363635363636383A3B41434147453E393D5FABD5D0DEDBC49B5B3D +3C413E393D5FABD5D0DEDBC49B5B3D3C4141474642474641423F3B3A38363636363738393D3F3F +464542474640413A36363635373C3F46464246433B38363637393E45464247453E3A3636363636 +3C414147464247464247464247453F3D3A508BC4D0DEDBD2DFDAD0DCD8D0DCD8D0DCD8D0DCD1A7 +70443B3F3D3836363636373A424542474640403A36363635373C3E464541433D38383735363635 +363636383A3B414341474642474640403B3838373636363536363537393A3E3E3B3C3937373636 +3737383C3E3F46464247464247463F3F3C3938373536363536363638393A3D414046464247453E +393D5FABD5D0DEDBC49B5B3D3C4141474642474641423E3B3938353636363737393D4040464642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +474642474642474642474642474642474642474642474642474642474642474642474642474642 +4544404544404544404544404544404544404544404544404544403C3B373A3935C36946EA6F3B +E96A33E96A33BF5C32502817BB552AE76933C2582C522917B95A31E86A33E96A33EB6F3BC66A46 +3C3A353B3A363938346D6D677D7C767A79737A797379787178777077766F77766F77766F787770 +7978717A79737A79737D7C766E6E683A39353B3A363938346A69637E7D767B7A737A79733F3E3A +7E7D767E7D767E7D767E7D767F7E773F3E3A7978727B7A737E7D76706F693A3935454440454440 +45444045444045444045444045444045444045444045444045444045433D3C3A508BC4D0DEDBD2 +C6864F3934333333333333333333373F433F45433D3D3F517697ACC6CFCFDFDBCACECACFDFDBD2 +DFC687543B39373D5FABD5D0DEDBC49B5B3C3C403E3E3A435D7D98B9C5C9DEDBCED2C3A9967251 +403D3D4344404544404544404544404541383B568CCBD9D1DFDBC29D67463935353B424C5C6459 +49413C3D394473B2CFDDDAD2D19A593E3A383A4D7FC2D9D1DDB36B46393A37426BB4D8D0DEDBC4 +995B3C3A39406092AECBD0CFDFDBD2DFD4C4C4AF8D72503E3F403C383D5FABD5D0DEDBC49B5B3C +3C3F3D383D5FABD5D0DEDBC49B5B3C3C403F45443E3E3B425C7B96B6C2C6DBDBCDD0C1AA997654 +413C3B3E394473B2CFDDDAD2D19A593E3A383A4D7FC2D9D1DDB36B46393A37426BB4D8D0DEDBC4 +995B3C3C403F45444045444045433D3C3A508BC4D0DEDBD2C6864F393433333333333333333337 +3D3B3A5183B2DBD9D2DFC99060403A3B394675ACCBDDDAD1C892593F393F6092AECBD0CFDFDBD2 +DFD4C4C4AF8D72503E3F403D3D3D5080A0ADC3CBCADDDBD2DFDBCACDB99A8B818AA8BCC3DADBD2 +D6CAB5A8835B443D3C44443E3D3E5181A1ADC4CBCADCDBD2DFDAC8CBBBA3916E4F403D3D44433D +383D5FABD5D0DEDBC49B5B3C3C403F45443E3E3A435D7D98B9C5C9DEDBCED2C3A9967251403D3D +434440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +454440454440454440454440454440454440454440454440454440454440454440454440454440 +42413D42413D42413D42413D42413D42413D42413D42413D42413D3C3B37393835E07146E96830 +E8662EE8662EEA713FC273534F28179C4622502717BC6F51E97241E8662EE8662EE96830E17246 +3C39353A393538373379787277766F77766F76756E75746D75746D75746D74736C75746D75746D +75746D76756E77766F77766F7978723938343A393538373475746E78777077766F77766F3F3E3A +75746D76756E75746D76756E76756E3F3E3A76756E77766F7877707A797339383442413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42403B3B39508BC4D0DEDBD2 +C788513C3736363635363635373A3B42403C3D38436DA7C8DDDAD2DED9D0D9D2CDDDD9D1DFDBD2 +DFC687543B38363C5FABD5D0DEDBC49B5B3C3A373C578DB9DDDAD1DED9CFD4CECBDDD9D1DFDBC7 +A669443B3D3C41413D42413D42413D413F39394C7DC1D8D0DFDBD0C0936C5443383838383C3B3A +41413D403B374B7BB3DCDAD2DFBE7B4E3838436FAADBD9D1DFD098603D363C5B95D0D9D1DFD19C +613F383D383B5C9AC1DAD4C7D0CBC6D9D9D0DEDBD2DFC386553B38363C5FABD5D0DEDBC49B5B3C +3B3D3B373C5FABD5D0DEDBC49B5B3C3B3D3C3F3A3D598EBADDDAD2DEDAD0DDD8D0DDDAD1DFDBD1 +BD834F3D38374A7BB3DCDAD2DFBE7B4E3838436FAADBD9D1DFD098603D363C5B95D0D9D1DFD19C +613F383F403D42413D42413D42403B3B39508BC4D0DEDBD2C788513C3736363635363635373A3B +42413B393B4F84B8CFDDDAD2C88F5A4F6FA0D4D9D1DEC1895B3E393C383B5C9AC1DAD4C7D0CBC6 +D9D9D0DEDBD2DFC386553B38363D5FABD5D0DEDBD2DED7CBD9D9D0DEDBD2DFDBD2DED9D0DAD7D0 +DDDBD2DFDBC9A767413B3D3A373D5FABD5D0DEDBD2DED7CBD7D8D0DDDAD2DFDBCEB67B4B3C3B3A +373C5FABD5D0DEDBC49B5B3C3B3D3C3F383C578DB9DDDAD1DED9CFD4CECBDDD9D1DFDBC7A66944 +3B3D3C41413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D42413D +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B3C3B37393834E97140E66228 +E66228E66228E66228E76E39A05B4043221499583EE66E3DE66228E66228E66228E66329E97040 +3C39343A393538373379797273726B73726B74736C3C3B373B3A363B3A363B3A363B3A363B3A36 +3B3A3673726B73726B72716A7979723938343A393538373376756F73726B73726B74736C3F3E3A +74736C75746D75746D75746D75746D3F3E3A73726B73726B73726B7A7973393834403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403E393A39508BC4D0DEDBD2 +DFDBD2DFDBD2DFDBD2DFDBD2CD94563D3837384B7ABFD9D1DFDBC6A16944373435436FADDDD9D1 +DFC687543B37363C5FABD5D0DEDBC49B5B3C394670B5D8D0DEDBB88B573E38363A4E7AADDBDAD1 +DFB872483A393E3E3B403F3B403F3B403E3A3C39406190B4DAD8D0DEDAD1DFDBCAC3AA8C785942 +3B3A3A3F3D37394E81C3D8D1DFD8A76E423F63A3C8DDDAD2DFDBBC8C533D5084B8DDDAD2D8A964 +413A3A3F3F393D383737393C4247494D5A7DBDD9D1DEDBB57D4A37363C5FABD5D0DEDBC49B5B3C +3A3C39373C5FABD5D0DEDBC49B5B3C3A3B38384671B6D8D0DEDBCAB1805844383A517EAEDADAD1 +DFD4A2684136394E81C3D8D1DFD8A76E423F63A3C8DDDAD2DFDBBC8C533D5084B8DDDAD2D8A964 +413A3A3F3F3B403F3B403F3B403E393A39508BC4D0DEDBD2DFDBD2DFDBD2DFDBD2DFDBD2CD9456 +3D393A403D36394F7DB9D6D0DEDBCBD1D9D2DEDAB88C583D393C3A3F3F393D383737393C424749 +4D5A7DBDD9D1DEDBB57D4A37363C5FABD5D0DEDBC49B5B3B37446CB1D6D0DEDBD2BD774637384B +80BCD0DEDBD2D49F5C3E3A39363C5FABD5D0DEDBC49B5B3B3536416291BBDDDAD2DFD09A613F37 +373C5FABD5D0DEDBC49B5B3C3A3A38384570B5D8D0DEDBB88B573E38363A4E7AADDBDAD1DFB872 +483A393E3E3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B403F3B +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393C3C37393835DC6839E65F25 +E55E23E55E23E45E23BF511F5129179A593F4F2818B94E20E45D23E55E23E55E23E66025DD6738 +3C39353A3935383733706F6A706F68706F6871706A7A79737B7A737C7B747C7B747C7B747B7A73 +7A797371706A6F6F68706F68706F6A3938343A39353837336E6D68706F68706F6972716A3F3E3A +73726B75746D75746D75746D75746D3F3E3A717069706F69706F6873726C3938343E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3C383939508BC4D0DEDBD2 +DFDACBD5D1C8D4D0C8D4D0C4BA89523C37353C5F9BD4D9D1DFD39E633E373B3A353F68A9DCD9D1 +DFC687543B37353C5FABD5D0DEDBC49B5B3C3D5C97D1D9D1DFDBD2DEDAD1DEDAD1DEDAD1DEDAD1 +DEC98E583C363C3D393E3D393E3D393E3D393E3D383A3639465B6F8C9FAECDD8CFDDDAD2DFDBC7 +AE764B3B3A373839508EC3D0DEDBC49C635F98C9D0DDD6C8DEDBD2BC7A5775B3CFDDDACEB26D43 +393A373B3943648CA8CCDAD1DEDAD0DDD9D1DFDBD2DFDBBD8D533A353C5FABD5D0DEDBC49B5B3C +3A3A38363C5FABD5D0DEDBC49B5B3C3939353C5C98D3D9D1DFD4A0643E373B3C3737436DB8D9D0 +DEDBBE8E543A3738508EC3D0DEDBC49C635F98C9D0DDD6C8DEDBD2BC7A5775B3CFDDDACEB26D43 +393A383E3D393E3D393E3D393E3C383939508BC4D0DEDBD2DFDACBD5D1C8D4D0C8D4D0C4BA8952 +3C39383E3D383C37395080B1DDDAD2DFDBD2C68B543D38383E3D383B3943648CA8CCDAD1DEDAD0 +DDD9D1DFDBD2DFDBBD8D533A353C5FABD5D0DEDBC49B5B3C38384D85BFD0DEDBD2C2814C39363A +5A98C4DDDAD2DEB269413737353C5FABD5D0DEDBC49B5B3C3A3936374B7BC0D9D1DFDBB7844E39 +363C5FABD5D0DEDBC49B5B3C3938353C5B97D1D9D1DFDBD2DEDAD1DEDAD1DEDAD1DEDAD1DEC98E +583C363C3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D393E3D39 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373A3935B75A32E45F23 +E35B1CE35B1CC04E1C512816BA6949E67140C26E4D502717B94D1BE25B1CE35B1CE55F23BA5B32 +3C3A353A39353938345F5E5A6D6C666C6B646E6D66706F6972716A73726B74736C73726B72716A +706F686E6D666C6B646D6C66605F5B3A39353A39353938345F5E5A6D6C666C6B656E6D673F3E39 +706F6873726B73726B73726B72716A3F3E396D6C666C6B656D6C6664635E3938353C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2 +C6864F3934333333333333333537373B39353B5E99D4D9D1DFD6A36840373939343F68A9DCD9D1 +DFC687543A36343C5FABD5D0DEDBC49B5B3B3D5F9CD3D9D1DFDBC1AC958A908E89908E89908E89 +8F81644A3B373B3B373C3B373C3B373C3B373C3B363A39363A3834373633353E527EACCADDDAD2 +DFC688553B363936395591BFDDDAD2CBA39DC9DAD1BE8779ADD3D1D9B694B6D4D1DED8AB724538 +3A38353C609BD5D9D1DFD9B69D807173788CBFD8D1DFDBBD8D533A353C5FABD5D0DEDBC49B5B3C +393936353C5FABD5D0DEDBC49B5B3C3938343B5D98D2D9D1DFD4A1663F363A3A3637446EB8D9D0 +DEDBBE90543B3836395591BFDDDAD2CBA39DC9DAD1BE8779ADD3D1D9B694B6D4D1DED8AB724538 +3A3A373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2C6864F393433333333333333353737 +3C3B373C3B373838446DA2C5DDDAD1DEDBD2D9AF764D3A353B39353C609BD5D9D1DFD9B69D8071 +73788CBFD8D1DFDBBD8D533A353C5FABD5D0DEDBC49B5B3C37374477B7D0DDDAD2C3824C393639 +538BBCDDDAD2DFB46B423836353C5FABD5D0DEDBC49B5B3C383835364874BCD9D1DEDBBB885139 +353C5FABD5D0DEDBC49B5B3C3938343C5E9CD3D9D1DFDBC1AC958A908E89908E89908E898F8164 +4A3B373B3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A367B4730E35E23 +E25817E25817CA5727BD6A48E4662FE25817E4642BC16C4BC75727E25817E25817E45E247A4631 +3C3A363B3A363938344B4A456A69636867616968626B6A646E6D666F6E67706F686F6E676E6D66 +6B6A646968626766606B6A644A49453938343B3A363938344B4A456A69636867616A69623E3D39 +3B3A363B3A363B3A363B3A363B3A363B3A366968616867616C6B654E4D483938343C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2 +C788513C3736363635363635363635373A35384874B9D8D0DEDBCDB67F523F3837416AAADDD9D1 +DFC687543A36343C5FABD5D0DEDBC49B5B3C384A77BBD8D0DEDBCDB683594339363636363B454C +4A3F383A3B373C3B373C3B373C3B373C3B36393B496873685B4E443E3937373B496C9EC4DDDAD2 +DFCB925C3D363B39343A558DCAD9D1DFDBD2DFDBBB8B534971B0CEDDDAD2DFDBD2DCB26E463937 +3A37364A7BB3DCDAD2DFBD7B4E3936363D5EA5D1D0DEDBBD8D533A353C5CA5D0D0DEDBCEB37046 +393936363C5CA5D0D0DEDBCEB3704639393537466FB5D7D0DEDBCBB2835B453B3D5480B0DBDAD1 +DFD4A16841373A38343A558DCAD9D1DFDBD2DFDBBB8B534971B0CEDDDAD2DFDBD2DCB26E463937 +3B3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2C788513C3736363635363635363635 +373A363B37374771A1D4D9D1DEC8A6B0C8D0DEDBD0BB83513C37364A7BB3DCDAD2DFBD7B4E3936 +363D5EA5D1D0DEDBBD8D533A353C5FABD5D0DEDBC49B5B3C37374477B7D0DDDAD2C3824C393639 +538BBCDDDAD2DFB46B423836353C5FABD5D0DEDBC6A1623F37363A507CAEDBDAD1DFD5A4684236 +363C5CA5D0D0DEDBCEB37046393834364977BBD8D0DEDBCDB683594339363636363B454C4A3F38 +3A3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3835C35626 +E2591AE15511E35D1FE36228E15511E15511E15511E36127E35E22E15511E3591AB151273C3935 +3C3B373C3A363A39353938345E5E5966655F64635D65655E6867616968626A6962696862686761 +65655E64635D66655F5959543938353A39353C3A363A39353938345E5E5966655F64645E6D6C67 +706F6972716A72716B72716A706F696E6D6764645E66655F61615B3A39353A39353C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2 +DFDBD2DFDBD2DFDBD2DFDBD2DFDBC9B36F4337373E5D94BDDBD8D1DEDBD2DFD8CAD8DAD2DFDBD2 +DEC687543B36343C5FABD5D0DEDBC49B5B3C38373E5F96BEDBD9D1DEDBD2DFDBD0DBD9D2DFDBCC +A9643E383A373C3B373C3B373C3B373C39353A558ACAD8D0DEDBD2DFDBD2DFDBD2DFDBD1DEDAD0 +CC995E4139373B3B37373A5392C6D0DEDBD2DFC98C583B354571ABDBD9D1DFDBCEB37045393937 +3B39353C5990CCD7D0DEDBD2D6C7B5BAB8BBD8DAD1DEDABD8D533A3637497DB7CEDCDAD2DFDBC7 +A8664138384A7DB7CEDCDAD2DFDBC7A8664139373C598EBADBD8D1DEDBD2DFDBD2DFDBD1DED9D0 +BF84503B38373C3B37373A5392C6D0DEDBD2DFC98C583B354571ABDBD9D1DFDBCEB37045393937 +3C3B373C3B373C3B373C3B373C3A363838508BC4D0DEDBD2DFDBD2DFDBD2DFDBD2DFDBD2DFDBC9 +B36F4338456BA9D1D0DEDAC0965C3E3E5A8CC8D8D1DFDAB284503B3D5990CCD7D0DEDBD2D6C7B5 +BAB8BBD8DAD1DEDABD8D533A353C5FABD5D0DEDBC49B5B3C37374477B7D0DDDAD2C3824C393639 +538BBCDDDAD2DFB46B423836353C5FABD5D0DEDBD2DFDBD1D8D4D1DFDBD2DEDAD0CA93583E3736 +3737497DB7CEDCDAD2DFDBC7A8664139373E5F96BEDBD9D1DEDBD2DFDBD0DBD9D2DFDBCCA9643E +383A373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A36523C30 +D0551DE15612E0520AE0520AE0520AE0520AE0520AE0520AE0520AE15612D2561C4D3B323B3A36 +3C3B373C3B373B3A363938353E3D3A605F5962615B61605A62615B63625C64635D63625C62615B +61605A62625C5F5E5A3D3C383938353B3A363C3B373B3A363938353F3E3B605F5B62625C61605A +62615B63625C64635D64635D62615B61605B62625C61605C403F3B3938343A3A353C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A3638394F89C2CEDBD8D0 +DCD8D0DCD8D0DCD8D0DCD8D0DCD8D0B871433939373838435D7D96B6C1C3D8D8CFDCD8CED4C9B6 +B49568473936353C61ACD5D0DEDBC49B5B3B383A353837415C7C95B4BEC1D7D8CFDCD8CED1C2A9 +9161413A3A373C3B373C3B373C3B373C3A373D4D698CA2ACC4CCCBDCD8CFDCD8CBD1C4AFA38766 +4C3B373A3B373C3B363A37395086B8DAD7CFCE97583D3837364771B7D6CEDCD2A16941373A3B37 +3C3B3739383D557893B5C5C9DCD8CFDCD8D0DAD2C2C3B2916F49383939363D4F6E98B3BFD8D7BC +93583B3839363D4F6E98B3BFD8D7BC93583B383A373838415D7E99B8C3C6DBD8CDD1C1AC9C7955 +4138363B3B373C3B363A37395086B8DAD7CFCE97583D3837364771B7D6CEDCD2A16941373A3B37 +3C3B373C3B373C3B373C3B373C3A3638394F89C2CEDBD8D0DCD8D0DCD8D0DCD8D0DCD8D0DCD8D0 +B8724D6399C1DAD7CFD4A66845393639374067A1C5DAD8CFD6AC6F47393E557893B5C5C9DCD8CF +DCD8D0DAD2C2C3B2916F4938353C5FA9D2CEDCD8C29A5A3C37374476B5CDDBD8D0C1814C393639 +5289BADAD7CFDCB26A423836353C5FABD5D0DEDBD2D4C7C2D7D8CFD9CDB8B18F67493A363A3A37 +3B3A363D4F6E98B3BFD8D7BC93583B383A353837415C7C95B4BEC1D7D8CFDCD8CED1C2A9916141 +3A3A373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A36 +483B32AA4A1FDD540EDF5207DF5106DF5004DF5106DF5207DE540DAC4B1E493B323B3A363C3B37 +3C3B373C3B373B3A373A3A353938343B3A3754534E5E5D585E5D585D5C575D5C575D5C575E5D58 +5F5E5955544F3C3B373938343B3A353C3B373C3B373B3A373A3A353938343C3B3855544F5E5D58 +5E5D585E5D575E5D575E5D575E5D585F5E595C5B56403F3B3938343B39353B3A363C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3A36383433333333 +3333333333333333333333333333333538373C3B373C3B373A3735353433333333333333343434 +3536363836353B5382C4D9D1DFDBBA874F39393A373C3B36393834353433333333333333333434 +3739373C3B373C3B373C3B373C3B373C3B373C3A36373534343333333333333333333434363736 +3B3B373C3B373C3B373C3B363A37343333333437363C3B373C3A36353333333434393B373C3B37 +3C3B373C3B373A3835353333333333333333333433343535393A373C3B373B3A36373533333334 +373A373C3B373B3A36373533333334373A373C3B373C3B373A3834343433333333333434373736 +3B3B373C3B373C3B373C3B363A37343333333437363C3B373C3A36353333333434393B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3A36383433333333333333333333333333333333333333 +3538373A36343333333435363C3B373C3B363935333333333335363B3B373A3835353333333333 +333333333433343535393A373C3B363533333333343739373C3B373835333333333537373C3B37 +3A37343333333335353C3B36353C5FABD5D0DEDBC49B5B3B3634333333333537363B3A373C3B37 +3C3B373B3A36373533333334373A373C3B373C3B36393834353433333333333333333434373937 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3B3A363A39356E3F28AC491ACF4E0EDC5107D04E0EAE4919703F283B39353B3A363C3B373C3B37 +3C3B373C3B373B3A363B3A373A3A3539383538373345444050504A58585259595458585351514B +4544403837333938353A39353C3B363B3A363C3B373B3A363C3A363A3A35393835383733484742 +52524C59595359585459595354544E4948433938343938343A39353B3B363B3A363C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B36 +383A528BBAC5DBDBD2DFDBD1DDC88F5C3D363B3A373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B36353C5FABD5D0DEDBC49B5B3C3939373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373B3A363A39353938353938343938353A39353B3A363C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373B3A363B3A373B3A363A3935393834393834383733383733383733393834 +3938343A39353B3A363B3A363B3A363C3B373C3B373C3B373B3A363B3A373B3A363A3935393834 +3837343837333837333837333837343938343A39353A3A363C3A363B3A363C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B36 +363E5EA0C7CEDBD8CCCEBA9A7E573E3A39373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B36353C5FA9D2CEDCD8C29A5A3C393A373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373B3A373B3A363B39353A39353A39353A39353B3935 +3B3A363B3B363C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373B3A363B3A36 +3A39353A39353A39353A39353A39353A3A363B3A363C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B363634333333333434343839373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B363533333333343739373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B373C3B37 +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A3F3E3A +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF7F7F7F3F3F3EFEFEFF0F0F0F0F0F0 +F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3 +F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6 +F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 +F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9FBFBFBFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF6F6F6EFEFEFE7E7E7E0E0E0E1E1E1E1E1E1 +E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8 +E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBECECECECECECECECECECECEC +EDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F3F3F3F7F7F7FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF1F1F1E7E7E7DCDCDCD2D2D2D3D3D3D3D3D3 +D4D4D4D6D6D6D6D6D6D7D7D7D8D8D8D9D9D9D9D9D9DADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDE +DEDEDEDEDEDEDFDFDFE0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9EDEDEDF3F3F3F8F8F8FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCECECECDFDFDFD0D0D0C2C2C2C3C3C3C4C4C4 +C5C5C5C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E8E8E8EFEFEFF6F6F6FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F5F5F5F1F1F1F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1 +F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F0F0F0E3E3E3D9D9D9CDCDCDC2C2C2C3C3C3C4C4C4 +C5C5C5C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E5E5E5ECECECF1F1F1F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFCFCFCFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAF2F2F2EAEAEAE1E1E1DEDEDEDFDFDFDFDFDFE0E0E0E1E1E1E1E1E1 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E3E3E3DADADAD3D3D3CCCCCCC4C4C4C4C4C4C5C5C5 +C6C6C6C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFDFDFDFDFDFDFE4E4E4E7E7E7ECECECF0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2 +F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F6F6F6F9F9F9FCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF7F7F7EBEBEBDEDEDED2D2D2CCCCCCCECECECECECED0D0D0D0D0D0D1D1D1 +D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D5D5D5D5D5D5D1D1D1CDCDCDCACACAC5C5C5C6C6C6C7C7C7 +C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEE2E2E2E4E4E4E6E6E6E8E8E8EAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9EBEBEBF1F1F1F6F6F6FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF5F5F5E3E3E3D3D3D3C2C2C2BBBBBBBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1 +C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8 +C9C9C9CACACACACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFE1E1E1E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E2E2E2E2E2E2E4E4E4ECECECF3F3F3FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF8F8F8F5F5F5F2F2F2F1F1F1 +F1F1F1F1F1F1F1F1F1E9E9E9DBDBDBCCCCCCBFBFBFB8B8B8BABABABBBBBBBDBDBDBEBEBEBFBFBF +BFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0E0E0E0E3E3E3EAEAEAEFEFEFF6F6F6F9F9F9F9F9F9 +F9F9F9F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F0F0F0E9E9E9E1E1E1DFDFDF +E0E0E0E0E0E0E0E0E0DBDBDBD2D2D2C8C8C8BEBEBEBABABABCBCBCBDBDBDBEBEBEBFBFBFC0C0C0 +C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACA +CBCBCBCCCCCCCCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E3E3E3E8E8E8ECECECF0F0F0F2F2F2F2F2F2 +F2F2F2F2F2F2F2F2F2F6F6F6F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5E8E8E8DCDCDCD1D1D1CFCFCF +CFCFCFD0D0D0D0D0D0CDCDCDC8C8C8C3C3C3BEBEBEBCBCBCBDBDBDBEBEBEC0C0C0C1C1C1C2C2C2 +C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACACACACBCBCB +CCCCCCCDCDCDCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E2E2E2E2E2E2E3E3E3E6E6E6E8E8E8EAEAEAECECECECECEC +EBEBEBEBEBEBEBEBEBF0F0F0F5F5F5FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2E1E1E1D0D0D0C0C0C0BCBCBC +BDBDBDBEBEBEBEBEBEBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3 +C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCBCBCBCCCCCC +CDCDCDCECECECECECECFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E4E4E4E4E4E4 +E3E3E3E3E3E3E4E4E4EBEBEBF2F2F2F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF8F8F8F5F5F5F3F3F3 +F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4E7E7E7D8D8D8C9C9C9BABABAB7B7B7 +B8B8B8B9B9B9B9B9B9BABABABCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCD +CECECECFCFCFCFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6 +D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDCDCDC +DDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 +E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2 +E1E1E1E1E1E1E2E2E2E9E9E9EFEFEFF5F5F5FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFA +FAFAFAFAFAFAFAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF6F6F6EEEEEEE6E6E6E0E0E0 +E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2D9D9D9CECECEC4C4C4BBBBBBB8B8B8 +B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5 +C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CECECECFCFCFCFCFCFD0D0D0D1D1D1D1D1D1D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7 +D8D8D8D9D9D9D9D9D9DADADADBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDF +E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4 +E3E3E3E3E3E3E4E4E4E8E8E8ECECECF1F1F1F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3 +F2F2F2F2F2F2F4F4F4F8F8F8FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF0F0F0E4E4E4D8D8D8CDCDCD +CECECECECECECFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CBCBCBC5C5C5C0C0C0BABABAB9B9B9 +BABABABBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5 +C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9 +DADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2 +E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6 +E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5 +E4E4E4E4E4E4E5E5E5E8E8E8E9E9E9ECECECEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEECECECECECEC +EAEAEAEAEAEAEEEEEEF3F3F3F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEBEBEBDBDBDBC9C9C9BABABA +BBBBBBBCBCBCBDBDBDBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBDBDBDBCBCBCBBBBBBBABABABABABA +BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6 +C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCF +CFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D2D2D2D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8DADADADBDBDB +DCDCDCDDDDDDDEDEDEDFDFDFDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5 +E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E6E6E6E5E5E5E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5E4E4E4 +E2E2E2E2E2E2E8E8E8EFEFEFF6F6F6FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCF9F9F9F6F6F6F1F1F1E1E1E1D1D1D1C1C1C1B2B2B2 +B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7 +C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D6D6D6D7D7D7D8D8D8D9D9D9DADADADCDCDCDDDDDD +DEDEDEDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8 +E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7 +E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2 +E0E0E0DFDFDFE6E6E6ECECECF3F3F3FAFAFAFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF6F6F6EEEEEEE7E7E7E0E0E0D5D5D5C9C9C9BEBEBEB3B3B3 +B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBC +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7 +C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1 +D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDFDFDFE0E0E0 +E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBEBEBEB +ECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +ECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4 +E2E2E2E1E1E1E6E6E6EBEBEBEFEFEFF5F5F5F8F8F8FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF0F0F0E4E4E4D9D9D9CFCFCFC8C8C8C2C2C2BABABAB4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8 +C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D2D2D2 +D3D3D3D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE1E1E1E2E2E2 +E3E3E3E4E4E4E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBECECECEDEDEDEDEDEDEEEEEE +EFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEDEDEDECECECECECECECECECEBEBEBEBEBEBEAEAEAE9E9E9 +E9E9E9E8E8E8E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E4E4E4E4E4E4E6E6E6EAEAEAEBEBEBEFEFEFF3F3F3F6F6F6FAFAFAFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE9E9E9DADADACACACABEBEBEBBBBBBB9B9B9B7B7B7B5B5B5 +B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBD +BEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8 +C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D3D3D3 +D5D5D5D7D7D7D7D7D7D8D8D8DADADADBDBDBDDDDDDDEDEDEE0E0E0E1E1E1E2E2E2E4E4E4E5E5E5 +E6E6E6E7E7E7E9E9E9EAEAEAEBEBEBECECECEDEDEDEDEDEDEEEEEEEFEFEFF0F0F0F0F0F0F1F1F1 +F2F2F2F2F2F2F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 +F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0EFEFEFEFEFEFEEEEEEEDEDEDECECECECECECEBEBEB +EAEAEAE9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E7E7E7 +E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9EEEEEEF3F3F3F8F8F8FEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBFAFAFAF7F7F7 +F7F7F7F7F7F7F7F7F7F7F7F7F2F2F2E0E0E0D0D0D0C0C0C0B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1D2D2D2D4D4D4 +D6D6D6D8D8D8D9D9D9DADADADCDCDCDDDDDDDFDFDFE0E0E0E2E2E2E3E3E3E4E4E4E6E6E6E7E7E7 +E8E8E8E9E9E9EBEBEBECECECEDEDEDEEEEEEEFEFEFEFEFEFF0F0F0F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 +F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0EFEFEFEEEEEEEDEDED +ECECECEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9 +E8E8E8E8E8E8E7E7E7E7E7E7E6E6E6E6E6E6EBEBEBF0F0F0F5F5F5FBFBFBFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF4F4F4EEEEEEE7E7E7 +E3E3E3E3E3E3E4E4E4E4E4E4E0E0E0D4D4D4C8C8C8BDBDBDB3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCECECECFCFCFCFCFCFD0D0D0D2D2D2D3D3D3D4D4D4D6D6D6 +D8D8D8DADADADBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4E5E5E5E7E7E7E8E8E8EAEAEA +EBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6 +F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F0F0F0 +EEEEEEEDEDEDECECECECECECEBEBEBEBEBEBEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +E9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E7EBEBEBEFEFEFF2F2F2F6F6F6F8F8F8F8F8F8F9F9F9 +FAFAFAFAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EDEDEDE1E1E1D5D5D5 +D0D0D0D0D0D0D1D1D1D1D1D1D0D0D0C7C7C7C1C1C1B9B9B9B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D3D3D3D5D5D5D6D6D6D8D8D8 +DADADADCDCDCDDDDDDDEDEDEE0E0E0E1E1E1E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAECECEC +EDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8 +F9F9F9F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F4F4F4F3F3F3 +F1F1F1F0F0F0EFEFEFEEEEEEEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8EBEBEBEDEDEDEFEFEFF1F1F1F3F3F3F3F3F3F5F5F5 +F6F6F6F7F7F7FAFAFAFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6E5E5E5D5D5D5C4C4C4 +BCBCBCBDBDBDBEBEBEBEBEBEBEBEBEBBBBBBB8B8B8B5B5B5B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCFD0D0D0D2D2D2D3D3D3D5D5D5D6D6D6D7D7D7D9D9D9 +DBDBDBDDDDDDDEDEDEE0E0E0E2E2E2E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEE +EFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFA +FBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7F6F6F6 +F4F4F4F3F3F3F2F2F2F1F1F1EFEFEFEEEEEEEDEDEDECECECECECECECECECECECECECECECECECEC +ECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBECECECEEEEEEEEEEEEF0F0F0 +F2F2F2F4F4F4F7F7F7FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBF9F9F9EEEEEEDCDCDCCBCBCBB8B8B8 +AFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCDCDCDCECECED0D0D0D1D1D1D3D3D3D4D4D4D6D6D6D8D8D8D9D9D9DBDBDB +DDDDDDDFDFDFE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0 +F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFC +FDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFAFAFAF9F9F9F9F9F9F8F8F8 +F6F6F6F5F5F5F4F4F4F3F3F3F1F1F1F0F0F0EEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9EAEAEAEBEBEBECECEC +EEEEEEF1F1F1F5F5F5F8F8F8FCFCFCFEFEFEFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF4F4F4EEEEEEE7E7E7DCDCDCD0D0D0C3C3C3B6B6B6 +AFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCECECECFCFCFD1D1D1D2D2D2D4D4D4D5D5D5D7D7D7D9D9D9DADADADCDCDC +DEDEDEE0E0E0E1E1E1E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF1F1F1 +F2F2F2F3F3F3F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFCFCFC +FDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFCFCFCFCFCFCFBFBFBFAFAFAFAFAFAF9F9F9 +F8F8F8F7F7F7F6F6F6F5F5F5F3F3F3F2F2F2F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBECECEC +EDEDEDF0F0F0F3F3F3F7F7F7FAFAFAFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7ECECECE1E1E1D5D5D5CCCCCCC3C3C3BBBBBBB3B3B3 +AFAFAFB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5 +B6B6B6B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CBCBCBCCCCCCCDCDCDCFCFCFD0D0D0D2D2D2D3D3D3D5D5D5D7D7D7D9D9D9DBDBDBDCDCDCDEDEDE +E0E0E0E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3 +F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFBFBFB +FAFAFAF9F9F9F9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F0F0F0F0F0F0EFEFEFEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +EDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +ECECECEEEEEEF2F2F2F4F4F4F8F8F8FAFAFAFCFCFCFCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4E4E4E4D4D4D4C4C4C4BABABAB7B7B7B3B3B3B1B1B1 +AFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B6B6B6 +B6B6B6B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CBCBCBCDCDCDCECECED0D0D0D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDDDDDDDFDFDF +E1E1E1E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4 +F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFC +FCFCFCFBFBFBFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F1F1F1F0F0F0EFEFEFEFEFEF +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEBEBEB +EBEBEBEDEDEDF1F1F1F2F2F2F5F5F5F9F9F9FAFAFAFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFCFCFCFCFCFCFBFBFBEEEEEEDBDBDBC8C8C8B6B6B6ACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CCCCCCCECECECFCFCFD1D1D1D2D2D2D4D4D4D6D6D6D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1 +E3E3E3E5E5E5E6E6E6E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6 +F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFDFDFDFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F3F3F3F1F1F1F0F0F0F0F0F0 +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECEBEBEB +EBEBEBECECECEFEFEFF0F0F0F3F3F3F7F7F7F9F9F9FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFAFAFAF4F4F4EEEEEEE7E7E7DCDCDCCFCFCFC0C0C0B2B2B2ACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6B8B8B8 +B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CCCCCCCECECECFCFCFD1D1D1D3D3D3D5D5D5D7D7D7D9D9D9DADADADCDCDCDEDEDEE0E0E0E2E2E2 +E4E4E4E6E6E6E7E7E7E9E9E9EBEBEBECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5F7F7F7 +F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F1F1F1 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECEC +ECECECECECECEFEFEFF0F0F0F2F2F2F5F5F5F7F7F7FAFAFAFBFBFBFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF5F5F5EBEBEBDFDFDFD4D4D4CACACAC2C2C2B9B9B9B0B0B0ACACACACACACACACACADADAD +AEAEAEAEAEAEAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B6B6B6B7B7B7B9B9B9 +B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2 +C3C3C3C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCC +CDCDCDCFCFCFD0D0D0D2D2D2D4D4D4D6D6D6D8D8D8DADADADBDBDBDDDDDDDFDFDFE1E1E1E3E3E3 +E5E5E5E7E7E7E8E8E8EAEAEAECECECEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8 +F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F3F3F3F2F2F2 +F1F1F1F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEFEFEFEFEFEFF1F1F1F3F3F3F6F6F6F8F8F8FAFAFAFDFDFDFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF2F2F2E1E1E1D2D2D2C1C1C1B8B8B8B5B5B5B1B1B1AEAEAEACACACACACACACACACACACAC +ADADADAEAEAEAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B3B3B3B4B4B4B5B5B5B7B7B7B8B8B8BABABA +BABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3 +C3C3C3C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCC +CECECECFCFCFD1D1D1D3D3D3D5D5D5D7D7D7D9D9D9DBDBDBDCDCDCDEDEDEE0E0E0E2E2E2E4E4E4 +E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9 +FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3 +F2F2F2F1F1F1EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F2F2F2F4F4F4F7F7F7F9F9F9FBFBFBFEFEFEFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCECECECD8D8D8C4C4C4AFAFAFA8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACAC +ADADADAEAEAEAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5B6B6B6B8B8B8B9B9B9BBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4 +C4C4C4C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCDCDCD +CFCFCFD0D0D0D2D2D2D4D4D4D6D6D6D8D8D8DADADADCDCDCDDDDDDDFDFDFE1E1E1E3E3E3E5E5E5 +E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8FAFAFA +FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5 +F4F4F4F2F2F2F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F2F2F2F5F5F5F8F8F8FBFBFBFCFCFCFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF4F4F4EEEEEE +E8E8E8DADADACBCBCBBDBDBDADADADA8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACAC +ADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6B7B7B7B9B9B9BABABABCBCBC +BCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4 +C4C4C4C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCDCDCD +CFCFCFD0D0D0D2D2D2D4D4D4D6D6D6D8D8D8DADADADCDCDCDDDDDDDFDFDFE1E1E1E3E3E3E5E5E5 +E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8FAFAFA +FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFBFBFBFAFAFAF9F9F9F8F8F8F6F6F6 +F5F5F5F3F3F3F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F2F2F2F4F4F4F7F7F7F8F8F8FBFBFBFCFCFCFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6EAEAEADFDFDF +D4D4D4C8C8C8BEBEBEB6B6B6ABABABA8A8A8A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAACACACACACAC +ADADADAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B6B6B6B7B7B7B8B8B8BABABABBBBBBBDBDBD +BDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5 +C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCECECE +D0D0D0D1D1D1D3D3D3D5D5D5D7D7D7D9D9D9DBDBDBDDDDDDDEDEDEE0E0E0E2E2E2E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F7F7F7 +F6F6F6F4F4F4F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F1F1F1F3F3F3F5F5F5F7F7F7FAFAFAFBFBFBFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1E0E0E0CFCFCF +BFBFBFB6B6B6B2B2B2AFAFAFA9A9A9A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9AAAAAAACACACACACAC +ADADADAFAFAFB1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBEBEBE +BEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 +C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCECECE +D0D0D0D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DBDBDBDDDDDDDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF8F8F8 +F7F7F7F5F5F5F3F3F3F3F3F3F2F2F2F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F5F5F5F8F8F8FAFAFAFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECD6D6D6C0C0C0 +AAAAAAA5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9AAAAAAACACACADADAD +AEAEAEB0B0B0B2B2B2B3B3B3B5B5B5B6B6B6B7B7B7B9B9B9BABABABBBBBBBCBCBCBDBDBDBFBFBF +BFBFBFC0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7 +E9E9E9EBEBEBECECECEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFAFAFA +F9F9F9F7F7F7F5F5F5F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2F3F3F3F6F6F6F9F9F9FCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F3F3F3EEEEEEE8E8E8DADADACACACAB9B9B9 +A9A9A9A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A8A8A8A9A9A9AAAAAAACACACAEAEAE +AFAFAFB1B1B1B2B2B2B4B4B4B5B5B5B6B6B6B7B7B7B9B9B9BABABABBBBBBBCBCBCBDBDBDBFBFBF +BFBFBFC0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7 +E9E9E9EBEBEBECECECEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFAFAFA +F9F9F9F7F7F7F5F5F5F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F0F0F0F1F1F1F2F2F2F4F4F4F7F7F7FAFAFA +FDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3E8E8E8DEDEDED2D2D2C8C8C8BDBDBDB2B2B2 +A7A7A7A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAABABABADADADAFAFAF +B0B0B0B2B2B2B3B3B3B5B5B5B6B6B6B7B7B7B8B8B8BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBF +BFBFBFC0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7 +E9E9E9EBEBEBECECECEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFBFBFB +F9F9F9F8F8F8F6F6F6F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F0F0F0F1F1F1F1F1F1F3F3F3F6F6F6F8F8F8 +FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEDDDDDDCDCDCDBCBCBCB5B5B5B0B0B0ABABAB +A5A5A5A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A8A8A8A8A8A8AAAAAAABABABACACACAEAEAEB0B0B0 +B1B1B1B3B3B3B4B4B4B6B6B6B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0 +C0C0C0C1C1C1C2C2C2C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7 +E9E9E9EBEBEBECECECEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFC +FAFAFAF9F9F9F7F7F7F5F5F5F4F4F4F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F1F1F1F0F0F0F0F0F0F0F0F0F2F2F2F4F4F4F6F6F6 +F8F8F8FAFAFAFBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E8E8D2D2D2BDBDBDA5A5A5A3A3A3A3A3A3A3A3A3 +A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A8A8A8A8A8A8AAAAAAABABABADADADAFAFAFB1B1B1 +B2B2B2B4B4B4B5B5B5B7B7B7B8B8B8B9B9B9BABABABCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0 +C0C0C0C1C1C1C2C2C2C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7 +E9E9E9EBEBEBECECECEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFC +FAFAFAF9F9F9F7F7F7F5F5F5F4F4F4F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F1F1F1F0F0F0F0F0F0F0F0F0F1F1F1F3F3F3F4F4F4 +F7F7F7F8F8F8FAFAFAFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F4F4F4EFEFEFEAEAEAD8D8D8C6C6C6B5B5B5A2A2A2A0A0A0A1A1A1A2A2A2 +A2A2A2A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A8A8A8A9A9A9ABABABACACACAEAEAEB0B0B0B2B2B2 +B3B3B3B5B5B5B6B6B6B8B8B8B9B9B9BABABABBBBBBBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1 +C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCCCDCDCDCECECED0D0D0 +D2D2D2D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FBFBFBFAFAFAF8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3F3F3F3 +F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0F0F0F0F1F1F1F2F2F2F3F3F3 +F4F4F4F6F6F6F8F8F8FBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEF3F3F3E8E8E8DDDDDDD3D3D3C6C6C6BABABAAEAEAEA1A1A1A0A0A0A1A1A1A2A2A2 +A2A2A2A3A3A3A4A4A4A5A5A5A5A5A5A7A7A7A8A8A8AAAAAAACACACADADADAFAFAFB1B1B1B3B3B3 +B4B4B4B5B5B5B6B6B6B8B8B8B9B9B9BABABABBBBBBBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1 +C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCCCDCDCDCECECED0D0D0 +D2D2D2D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FBFBFBFAFAFAF8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F3F3F3F3F3F3F2F2F2F1F1F1F0F0F0F1F1F1F2F2F2F2F2F2 +F3F3F3F5F5F5F7F7F7F9F9F9FCFCFCFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDEDEDEDDCDCDCCCCCCCBBBBBBB5B5B5AEAEAEA7A7A7A0A0A09F9F9FA0A0A0A1A1A1 +A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6A8A8A8A9A9A9ABABABADADADAEAEAEB0B0B0B2B2B2B4B4B4 +B5B5B5B6B6B6B7B7B7B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCCCDCDCDCECECED0D0D0 +D2D2D2D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 +F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F3F3F3F5F5F5F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDE6E6E6D0D0D0B9B9B9A4A4A4A2A2A2A2A2A2A0A0A0A0A0A09F9F9FA0A0A0A1A1A1 +A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6A8A8A8A9A9A9ABABABADADADAEAEAEB0B0B0B2B2B2B4B4B4 +B5B5B5B6B6B6B7B7B7B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACACCCCCCCDCDCDCECECED0D0D0 +D2D2D2D3D3D3D5D5D5D7D7D7D8D8D8DADADADCDCDCDEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6 +E8E8E8EAEAEAEBEBEBEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FBFBFB +FCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F2F2F2F2F2F2F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9 +F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F2F2F2F1F1F1F1F1F1F1F1F1F0F0F0 +F0F0F0F2F2F2F4F4F4F6F6F6F9F9F9F9F9F9FBFBFBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9F5F5F5 +F1F1F1EAEAEAD8D8D8C4C4C4B1B1B19E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1 +A2A2A2A3A3A3A5A5A5A6A6A6A7A7A7A9A9A9AAAAAAACACACAEAEAEAFAFAFB1B1B1B3B3B3B5B5B5 +B6B6B6B7B7B7B8B8B8BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DBDBDBDDDDDDDEDEDEE0E0E0E2E2E2E3E3E3E5E5E5 +E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8FAFAFA +FBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F3F3F3F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFAFAFAFAFAFA +FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F3F3F3F2F2F2F1F1F1 +F0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F7F7F7F9F9F9FCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF2F2F2E8E8E8 +DEDEDED3D3D3C6C6C6B8B8B8AAAAAA9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1 +A2A2A2A3A3A3A5A5A5A6A6A6A8A8A8AAAAAAABABABADADADAFAFAFB0B0B0B1B1B1B3B3B3B5B5B5 +B6B6B6B7B7B7B8B8B8BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DBDBDBDDDDDDDEDEDEE0E0E0E2E2E2E3E3E3E5E5E5 +E7E7E7E9E9E9EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9 +FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F3F3F3F3F3F3F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F5F5F5F4F4F4F2F2F2 +F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F6F6F6F8F8F8FAFAFAFDFDFDFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBECECECDCDCDC +CCCCCCBCBCBCB5B5B5ACACACA4A4A49C9C9C9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1 +A2A2A2A4A4A4A6A6A6A7A7A7A9A9A9ABABABACACACAEAEAEB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5 +B6B6B6B7B7B7B8B8B8BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4 +E6E6E6E8E8E8E9E9E9EAEAEAECECECEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8 +F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFCFCFCFCFCFC +FCFCFCFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFAFAFAFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F4F4F4 +F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F4F4F4F6F6F6F9F9F9FCFCFCFCFCFCFDFDFDFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE4E4E4CFCFCF +B9B9B9A4A4A4A3A3A39F9F9F9D9D9D9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1 +A2A2A2A4A4A4A6A6A6A7A7A7A9A9A9ABABABACACACAEAEAEB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5 +B6B6B6B7B7B7B8B8B8BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCFCFCF +D1D1D1D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4 +E6E6E6E8E8E8E9E9E9EAEAEAECECECEDEDEDEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5F6F6F6F8F8F8 +F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5 +F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0F3F3F3F5F5F5F8F8F8FBFBFBFBFBFBFCFCFCFDFDFDFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF6F6F6F2F2F2EBEBEBD7D7D7C3C3C3 +AFAFAF9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9EA0A0A0A1A1A1A2A2A2 +A3A3A3A5A5A5A7A7A7A8A8A8AAAAAAACACACADADADAFAFAFB1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 +C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCECECE +D0D0D0D1D1D1D3D3D3D5D5D5D6D6D6D8D8D8DADADADBDBDBDDDDDDDEDEDEE0E0E0E1E1E1E3E3E3 +E5E5E5E7E7E7E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5F7F7F7 +F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFC +FBFBFBF9F9F9F8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBF9F9F9F8F8F8F7F7F7 +F5F5F5F4F4F4F2F2F2F1F1F1F0F0F0F3F3F3F4F4F4F6F6F6F9F9F9F9F9F9FAFAFAFCFCFCFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF2F2F2E8E8E8DFDFDFD4D4D4C6C6C6B8B8B8 +A9A9A99C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9EA0A0A0A1A1A1A2A2A2 +A3A3A3A5A5A5A7A7A7A8A8A8AAAAAAACACACADADADAFAFAFB1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 +C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCECECE +CFCFCFD1D1D1D2D2D2D4D4D4D5D5D5D7D7D7D9D9D9DADADADCDCDCDDDDDDDFDFDFE0E0E0E2E2E2 +E4E4E4E6E6E6E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4F6F6F6 +F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFB +FAFAFAF9F9F9F8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF8F8F8 +F7F7F7F5F5F5F4F4F4F3F3F3F1F1F1F3F3F3F3F3F3F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFCFCFC +FEFEFEFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAEAEAEADCDCDCCBCBCBBEBEBEB5B5B5ACACAC +A3A3A39B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9EA0A0A0A1A1A1A3A3A3 +A4A4A4A6A6A6A8A8A8A9A9A9ABABABACACACAEAEAEAFAFAFB1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 +C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCDCDCD +CFCFCFD0D0D0D2D2D2D4D4D4D5D5D5D7D7D7D9D9D9DADADADCDCDCDDDDDDDFDFDFE0E0E0E2E2E2 +E4E4E4E6E6E6E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3F5F5F5 +F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFBFBFB +FAFAFAF8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFAFAFA +F9F9F9F7F7F7F5F5F5F4F4F4F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F5F5F5F7F7F7F9F9F9FCFCFC +FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E3E3E3CECECEB8B8B8A7A7A7A4A4A4A1A1A1 +9D9D9D9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9EA0A0A0A1A1A1A3A3A3 +A4A4A4A6A6A6A8A8A8A9A9A9ABABABACACACAEAEAEAFAFAFB1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4 +C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCDCDCD +CECECED0D0D0D1D1D1D3D3D3D4D4D4D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE1E1E1 +E3E3E3E5E5E5E6E6E6E7E7E7E9E9E9EAEAEAECECECEDEDEDEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4 +F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFAFAFA +F9F9F9F8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFC +FBFBFBF9F9F9F7F7F7F5F5F5F3F3F3F3F3F3F2F2F2F1F1F1F1F1F1F2F2F2F5F5F5F8F8F8FBFBFB +FCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFAFAFAF7F7F7F4F4F4EBEBEBD6D6D6C2C2C2ADADAD9C9C9C9C9C9C9B9B9B +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA1A1A1A2A2A2A4A4A4 +A5A5A5A7A7A7A9A9A9AAAAAAACACACADADADAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3 +C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CDCDCDCFCFCFD0D0D0D2D2D2D3D3D3D5D5D5D7D7D7D8D8D8DADADADBDBDBDDDDDDDEDEDEE0E0E0 +E2E2E2E4E4E4E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3 +F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFAFAFAF9F9F9 +F8F8F8F7F7F7F6F6F6F5F5F5F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFD +FCFCFCFAFAFAF8F8F8F6F6F6F4F4F4F3F3F3F2F2F2F1F1F1F0F0F0F2F2F2F4F4F4F7F7F7F9F9F9 +FAFAFAFCFCFCFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCF2F2F2E9E9E9E0E0E0D4D4D4C6C6C6B7B7B7A7A7A79B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA1A1A1A2A2A2A4A4A4 +A5A5A5A7A7A7A9A9A9AAAAAAACACACADADADAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3 +C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CDCDCDCFCFCFD0D0D0D1D1D1D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9DADADADCDCDCDDDDDDDFDFDF +E1E1E1E3E3E3E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBECECECEDEDEDEFEFEFF0F0F0F2F2F2 +F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFBFBFBFAFAFAF9F9F9F8F8F8 +F7F7F7F6F6F6F5F5F5F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFD +FCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F1F1F1F2F2F2F3F3F3F5F5F5F7F7F7 +F8F8F8FAFAFAFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF8F8F8EAEAEADBDBDBCCCCCCBEBEBEB5B5B5ACACACA2A2A29B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA1A1A1A2A2A2A4A4A4 +A5A5A5A7A7A7A9A9A9AAAAAAACACACADADADAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBF +BFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CDCDCDCECECECFCFCFD1D1D1D2D2D2D4D4D4D6D6D6D7D7D7D9D9D9DADADADCDCDCDDDDDDDFDFDF +E0E0E0E2E2E2E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAEBEBEBECECECEDEDEDEFEFEFF0F0F0 +F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F8F8F8F7F7F7 +F6F6F6F5F5F5F4F4F4F4F4F4F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4 +F6F6F6F8F8F8FAFAFAFCFCFCFEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF6F6F6E1E1E1CCCCCCB8B8B8A8A8A8A5A5A5A1A1A19D9D9D9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA1A1A1A2A2A2A4A4A4 +A5A5A5A7A7A7A9A9A9AAAAAAACACACADADADAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBF +BFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CDCDCDCECECECFCFCFD0D0D0D2D2D2D3D3D3D5D5D5D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDEDEDE +DFDFDFE1E1E1E2E2E2E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EAEAEAEBEBEBECECECEEEEEEEFEFEF +F0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFC +FDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF9F9F9F8F8F8F7F7F7F6F6F6 +F5F5F5F4F4F4F3F3F3F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F5F5F5F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFDFDFDFCFCFCFBFBFBFAFAFAF8F8F8F6F6F6F4F4F4F2F2F2F2F2F2F2F2F2F1F1F1F2F2F2 +F4F4F4F6F6F6F9F9F9FCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF4F4F4DCDCDCC4C4C4ACACAC9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A5A5A5 +A6A6A6A7A7A7A9A9A9AAAAAAABABABACACACAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5 +B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBE +BEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CCCCCCCDCDCDCECECECFCFCFD1D1D1D2D2D2D4D4D4D5D5D5D7D7D7D8D8D8DADADADBDBDBDDDDDD +DEDEDEE0E0E0E1E1E1E2E2E2E4E4E4E5E5E5E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBEDEDEDEEEEEE +EFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFB +FCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFBFBFBFAFAFAF9F9F9F8F8F8F7F7F7F6F6F6F5F5F5 +F4F4F4F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2 +F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFDFDFDFCFCFCFBFBFBF9F9F9F7F7F7F5F5F5F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0 +F2F2F2F5F5F5F8F8F8FAFAFAFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF4F4F4DCDCDCC4C4C4ABABAB9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A5A5A5 +A6A6A6A7A7A7A9A9A9AAAAAAABABABACACACAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B4B4B4B5B5B5 +B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBE +BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CCCCCCCCCCCCCDCDCDCECECED0D0D0D1D1D1D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9DADADADCDCDC +DDDDDDDFDFDFE0E0E0E1E1E1E3E3E3E4E4E4E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECEC +EDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9 +FAFAFAFAFAFAFBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7F6F6F6F5F5F5F4F4F4 +F3F3F3F2F2F2F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2 +F3F3F3F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFAFAFAF8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F1F1F1F0F0F0 +F1F1F1F3F3F3F6F6F6F8F8F8F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF4F4F4DCDCDCC3C3C3ABABAB9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A5A5A5 +A6A6A6A7A7A7A9A9A9AAAAAAABABABACACACAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACACACA +CBCBCBCCCCCCCDCDCDCECECECFCFCFD1D1D1D2D2D2D3D3D3D5D5D5D6D6D6D8D8D8D9D9D9DBDBDB +DCDCDCDEDEDEDFDFDFE0E0E0E2E2E2E3E3E3E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEB +ECECECEDEDEDEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8 +F9F9F9F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9F9F8F8F8F7F7F7F6F6F6F5F5F5F4F4F4F3F3F3 +F2F2F2F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2 +F3F3F3F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBF9F9F9F7F7F7F6F6F6F4F4F4F3F3F3F1F1F1F0F0F0 +F1F1F1F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8FBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF4F4F4DCDCDCC3C3C3AAAAAA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A5A5A5 +A6A6A6A7A7A7A9A9A9AAAAAAABABABACACACAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACACACA +CBCBCBCBCBCBCCCCCCCDCDCDCECECED0D0D0D1D1D1D2D2D2D4D4D4D5D5D5D7D7D7D8D8D8D9D9D9 +DADADADCDCDCDDDDDDDEDEDEE0E0E0E1E1E1E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9 +EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6 +F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFAFAFA +FAFAFAF9F9F9F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F5F5F5F5F5F5F4F4F4F3F3F3F2F2F2 +F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2 +F3F3F3F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFAFAFAF9F9F9F8F8F8F5F5F5F3F3F3F1F1F1F0F0F0 +F0F0F0F0F0F0F2F2F2F2F2F2F5F5F5F7F7F7F9F9F9FCFCFCFDFDFDFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC +FAFAFAF7F7F7ECECECD7D7D7BFBFBFA9A9A99A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A8A8A8A9A9A9AAAAAAABABABADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3 +B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBBBBBBBCBCBC +BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCCCCCCCDCDCDCFCFCFD0D0D0D1D1D1D3D3D3D4D4D4D6D6D6D7D7D7D8D8D8 +D9D9D9DBDBDBDCDCDCDDDDDDDFDFDFE0E0E0E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8 +E9E9E9EAEAEAECECECEDEDEDEEEEEEEFEFEFF0F0F0F0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5 +F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9 +F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F4F4F4F4F4F4F3F3F3F2F2F2F1F1F1 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1 +F2F2F2F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBFAFAFAF9F9F9F6F6F6F4F4F4F2F2F2F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F3F3F3F5F5F5F8F8F8FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF2F2F2 +EBEBEBE3E3E3D7D7D7C7C7C7B6B6B6A5A5A59A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A8A8A8A9A9A9AAAAAAABABABADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3 +B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABABABABABABABABABABBBBBB +BBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCCCCCCCDCDCDCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D5D5D5D6D6D6D7D7D7 +D8D8D8DADADADBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7 +E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F2F2F2F3F3F3 +F4F4F4F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F8F8F8 +F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F3F3F3F3F3F3F2F2F2F1F1F1F1F1F1 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1 +F2F2F2F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBFAFAFAF9F9F9F6F6F6F4F4F4F2F2F2F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F2F2F2F4F4F4F6F6F6F8F8F8FAFAFAFCFCFCFCFCFCFEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9 +DBDBDBCDCDCDC0C0C0B6B6B6ACACACA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABA +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D4D4D4D5D5D5D6D6D6 +D7D7D7D9D9D9DADADADBDBDBDCDCDCDDDDDDDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5 +E6E6E6E7E7E7E9E9E9EAEAEAEBEBEBECECECEDEDEDEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2 +F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6 +F6F6F6F5F5F5F5F5F5F4F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0F0F0F0 +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFD +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFBFAFAFAF7F7F7F5F5F5F3F3F3F1F1F1 +F0F0F0F0F0F0EFEFEFEFEFEFF0F0F0F2F2F2F4F4F4F6F6F6F8F8F8FAFAFAFAFAFAFCFCFCFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4DFDFDF +CCCCCCB7B7B7ABABABA6A6A6A1A1A19D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9 +B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9CACACA +CACACACBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D5D5D5D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4 +E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFEFEFEFF0F0F0 +F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F3F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6 +F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5 +F5F5F5F4F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFD +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFBFBFBFBF8F8F8F6F6F6F4F4F4F2F2F2 +F0F0F0F0F0F0EFEFEFEEEEEEEFEFEFF1F1F1F2F2F2F3F3F3F5F5F5F7F7F7F9F9F9FCFCFCFDFDFD +FEFEFEFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFBFBFBFAFAFAECECECD4D4D4 +BEBEBEA7A7A79A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1 +B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D4D4D4D6D6D6D7D7D7D8D8D8D9D9D9DADADADCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E1E1E1E2E2E2 +E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEDEDEDEEEEEE +EFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F4F4F4 +F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3 +F3F3F3F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCF9F9F9F7F7F7F5F5F5F3F3F3 +F1F1F1F0F0F0EFEFEFEEEEEEEEEEEEEFEFEFF0F0F0F1F1F1F3F3F3F5F5F5F7F7F7FAFAFAFDFDFD +FEFEFEFCFCFCFEFEFEFEFEFEFFFFFFFFFFFFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF3F3F3EBEBEBE4E4E4D6D6D6C6C6C6 +B5B5B5A3A3A39A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1 +B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E1E1E1 +E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E8E8E8E9E9E9EAEAEAEBEBEBEBEBEBECECEC +EDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2 +F2F2F2F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1 +F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F2F2F2F3F3F3F4F4F4F4F4F4F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCF9F9F9F7F7F7F5F5F5F3F3F3 +F1F1F1F0F0F0EFEFEFEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F1F1F1F3F3F3F5F5F5F7F7F7FAFAFA +FBFBFBFAFAFAFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7E9E9E9DBDBDBCECECEC2C2C2B7B7B7 +ABABABA0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAFAFAFB0B0B0 +B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B7B7B7B8B8B8 +B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDEDFDFDF +E0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEB +ECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0 +F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F1F1F1F2F2F2F3F3F3F3F3F3F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF8F8F8F6F6F6F4F4F4 +F2F2F2F1F1F1F0F0F0EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFF1F1F1F3F3F3F5F5F5F7F7F7 +F8F8F8F8F8F8F9F9F9FAFAFAFBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3DEDEDECBCBCBB9B9B9ADADADA7A7A7 +A2A2A29D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADAEAEAEAEAEAEAFAFAF +B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8 +B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1 +D1D1D1D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDE +DFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E5E5E5E6E6E6E7E7E7E8E8E8E8E8E8E9E9E9 +EAEAEAEAEAEAEBEBEBEBEBEBECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEEEEEE +EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDECECECECECECECECECECECECECECECECECECEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F1F1F1F1F1F1F2F2F2F2F2F2F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FBFBFBFCFCFC +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF8F8F8F6F6F6F5F5F5 +F3F3F3F1F1F1F0F0F0EEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEFEFEFF0F0F0F3F3F3F4F4F4 +F5F5F5F5F5F5F6F6F6F8F8F8F9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAE +AFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DADADADBDBDBDCDCDC +DDDDDDDEDEDEDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E3E3E3E4E4E4E5E5E5E6E6E6E6E6E6E7E7E7 +E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBECECECECECECECECECECECECEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8FAFAFAFBFBFB +FCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6 +F4F4F4F2F2F2F1F1F1EFEFEFEEEEEEEDEDEDECECECECECECECECECEDEDEDEEEEEEF0F0F0F1F1F1 +F2F2F2F2F2F2F3F3F3F5F5F5F7F7F7FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAE +AFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DADADADBDBDB +DCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E1E1E1E2E2E2E2E2E2E3E3E3E4E4E4E5E5E5E5E5E5E6E6E6 +E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECEC +ECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F9F9F9FAFAFA +FBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6 +F4F4F4F2F2F2F1F1F1EFEFEFEEEEEEEDEDEDECECECECECECECECECEDEDEDEDEDEDEFEFEFEFEFEF +F1F1F1F1F1F1F2F2F2F4F4F4F7F7F7FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D9D9D9 +DADADADBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E0E0E0E1E1E1E2E2E2E3E3E3E3E3E3E4E4E4 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F8F8F8F9F9F9 +FAFAFAFBFBFBFBFBFBFCFCFCFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6 +F4F4F4F2F2F2F1F1F1EFEFEFEEEEEEEDEDEDECECECECECECECECECECECECECECECEDEDEDEDEDED +EFEFEFEFEFEFF1F1F1F3F3F3F6F6F6F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D8D8D8 +D9D9D9DADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDEDEDEDFDFDFE0E0E0E1E1E1E1E1E1E2E2E2 +E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F7F7F7F8F8F8 +F9F9F9FAFAFAFAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6 +F4F4F4F2F2F2F1F1F1EFEFEFEEEEEEEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEB +EDEDEDEEEEEEF0F0F0F2F2F2F5F5F5F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0 +D0D0D0D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D7D7D7 +D8D8D8D9D9D9DADADADADADADBDBDBDCDCDCDDDDDDDDDDDDDEDEDEDFDFDFE0E0E0E0E0E0E1E1E1 +E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F6F6F6F7F7F7 +F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6 +F4F4F4F2F2F2F1F1F1EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEA +ECECECEDEDEDEFEFEFF1F1F1F5F5F5F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCF +CFCFCFD0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6 +D7D7D7D8D8D8D9D9D9D9D9D9DADADADBDBDBDCDCDCDCDCDCDDDDDDDEDEDEDEDEDEDEDEDEDFDFDF +E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F1F1F1F2F2F2F2F2F2F3F3F3F4F4F4F5F5F5 +F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFBFBFBFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5 +F3F3F3F2F2F2F0F0F0EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEA +EBEBEBEBEBEBEDEDEDEFEFEFF3F3F3F8F8F8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCF +CFCFCFD0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D6D6D6 +D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADBDBDBDBDBDBDCDCDCDDDDDDDDDDDDDDDDDDDEDEDE +DFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F1F1F1F1F1F1F1F1F1F2F2F2F3F3F3F4F4F4 +F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5 +F3F3F3F2F2F2F0F0F0EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAEBEBEBEDEDEDF2F2F2F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCF +CFCFCFD0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5 +D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D9D9D9DADADADADADADBDBDBDCDCDCDCDCDCDCDCDCDCDCDC +DDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3 +E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F2F2F2F3F3F3 +F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF8F8F8F7F7F7F6F6F6F5F5F5 +F3F3F3F2F2F2F0F0F0EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9EBEBEBF0F0F0F6F6F6FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECECECECFCFCF +CFCFCFD0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5 +D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDB +DCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F1F1F1F2F2F2 +F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFBFBFBFBFBFBFBFBFBFBFBFB +FCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF8F8F8F7F7F7F6F6F6F5F5F5 +F3F3F3F2F2F2F0F0F0EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEA +E9E9E9E8E8E8E7E7E7E9E9E9EFEFEFF5F5F5FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAF5F5F5F0F0F0EBEBEBDCDCDCC9C9C9B6B6B6A2A2A29A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6 +C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F1F1F1 +F2F2F2F3F3F3F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9 +FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F7F7F7F6F6F6F5F5F5F4F4F4 +F2F2F2F1F1F1EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E8E8E8EDEDEDF2F2F2F6F6F6F9F9F9FBFBFBFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF5F5F5EBEBEBDFDFDFD4D4D4C8C8C8BABABAADADADA0A0A09A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2 +A3A3A3A4A4A4A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6 +C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0 +F1F1F1F2F2F2F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8 +F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F5F5F5F4F4F4F3F3F3 +F2F2F2F1F1F1EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E8E8E8EBEBEBEDEDEDF0F0F0F3F3F3F6F6F6FAFAFAFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF1F1F1E0E0E0CFCFCFBDBDBDB3B3B3ACACACA5A5A59E9E9E9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBE +BEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6 +C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +F0F0F0F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7 +F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F5F5F5F4F4F4F3F3F3F2F2F2 +F1F1F1F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDF3F3F3F7F7F7FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFECECECD5D5D5BFBFBFA5A5A59E9E9E9D9D9D9C9C9C9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3 +A4A4A4A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBE +BEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6 +C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCDCDCDCECECE +CECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6 +F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F4F4F4F3F3F3F2F2F2 +F1F1F1F0F0F0EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E6E6E6E6E6E6E5E5E5E5E5E5E7E7E7EEEEEEF3F3F3FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5 +C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCD +CDCDCDCECECECECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F2F2F2F1F1F1 +F0F0F0EFEFEFEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E5E5E5E3E3E3E5E5E5ECECECF3F3F3FAFAFAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5 +C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCD +CDCDCDCECECECECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F3F3F3F3F3F3 +F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F1F1F1F0F0F0 +EFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E5E5E5E3E3E3E5E5E5ECECECF3F3F3FAFAFAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5 +C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCC +CDCDCDCECECECECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1 +F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0EFEFEF +EEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E5E5E5E3E3E3E5E5E5ECECECF3F3F3FAFAFAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5 +C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCC +CDCDCDCECECECECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4 +E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEF +EEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEA +E9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E5E5E5E3E3E3E5E5E5ECECECF3F3F3FAFAFAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +F7F7F7F4F4F4F0F0F0DEDEDECACACAB6B6B6A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAEAEAEAEAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBC +BCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCB +CCCCCCCDCDCDCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3 +E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9 +E9E9E9E8E8E8E8E8E8E7E7E7E6E6E6E5E5E5E3E3E3E5E5E5EBEBEBF0F0F0F5F5F5FAFAFAFBFBFB +FCFCFCFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7 +ECECECE2E2E2D9D9D9CBCBCBBCBCBCADADAD9E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAEAEAEAEAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBC +BCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCB +CCCCCCCDCDCDCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3 +E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9 +E9E9E9E8E8E8E8E8E8E7E7E7E6E6E6E5E5E5E3E3E3E4E4E4E7E7E7EBEBEBEEEEEEF1F1F1F4F4F4 +F8F8F8FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1 +E1E1E1D2D2D2C2C2C2B7B7B7AFAFAFA5A5A59C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAEAEAEAEAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBC +BCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCB +CBCBCBCCCCCCCCCCCCCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3 +E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7 +E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9 +E9E9E9E8E8E8E8E8E8E7E7E7E6E6E6E5E5E5E3E3E3E3E3E3E5E5E5E5E5E5E6E6E6E9E9E9EEEEEE +F4F4F4FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECEC +D6D6D6C0C0C0ABABABA3A3A3A1A1A19E9E9E9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAEAEAEAEAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBC +BCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCB +CBCBCBCCCCCCCCCCCCCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3 +E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7 +E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9 +E9E9E9E8E8E8E8E8E8E7E7E7E6E6E6E5E5E5E3E3E3E4E4E4E2E2E2E0E0E0DFDFDFE0E0E0E8E8E8 +F0F0F0F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABABABABBBBBB +BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3 +C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACA +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8 +E8E8E8E7E7E7E7E7E7E6E6E6E5E5E5E5E5E5E4E4E4E3E3E3E1E1E1DEDEDEDCDCDCDDDDDDE5E5E5 +EEEEEEF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABABABABBBBBB +BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3 +C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACA +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8 +E8E8E8E7E7E7E7E7E7E6E6E6E5E5E5E5E5E5E4E4E4E3E3E3E1E1E1DEDEDEDCDCDCDDDDDDE5E5E5 +EEEEEEF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABA +BBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2 +C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACA +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECECECECECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDED +ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8 +E8E8E8E7E7E7E7E7E7E6E6E6E5E5E5E5E5E5E4E4E4E3E3E3E1E1E1DFDFDFDDDDDDDDDDDDE6E6E6 +EEEEEEF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABA +BBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2 +C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACA +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECECECECECECECECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDED +ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8 +E8E8E8E7E7E7E7E7E7E6E6E6E5E5E5E5E5E5E4E4E4E3E3E3E1E1E1DFDFDFDDDDDDDDDDDDE6E6E6 +EEEEEEF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9 +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1 +C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +ECECECECECECECECECECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0 +F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEEEEEEEDEDEDEDEDED +ECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E7E7E7E7E7E7E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDEDEDEE7E7E7 +EFEFEFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9 +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1 +C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +ECECECECECECECECECEDEDEDEDEDEDEEEEEEEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1 +F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0EFEFEFEEEEEEEEEEEE +EDEDEDEDEDEDECECECECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E7E7E7E7E7E7E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDEDEDEE7E7E7 +EFEFEFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9 +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1 +C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0 +E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4 +E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +ECECECECECECEDEDEDEDEDEDEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1F2F2F2F2F2F2 +F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F0F0F0EFEFEFEFEFEF +EEEEEEEDEDEDEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E7E7E7E7E7E7E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDEDEDEE7E7E7 +EFEFEFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACADADADADADADAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9 +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1 +C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0 +E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4 +E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +ECECECECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F4F4F4 +F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1 +EFEFEFEEEEEEEDEDEDECECECEBEBEBEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E7E7E7E7E7E7E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDEDEDEE7E7E7 +EFEFEFF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8 +B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0 +C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDF +DFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3 +E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +ECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F2F2F2F3F3F3F4F4F4F4F4F4F5F5F5F5F5F5 +F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F2F2F2F2F2F2 +F0F0F0EFEFEFEEEEEEEDEDEDECECECEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7 +E6E6E6E6E6E6E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDFDFDFE8E8E8 +EFEFEFF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8 +B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0 +C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDF +DFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3 +E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +ECECECEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6 +F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F4F4F4F3F3F3F3F3F3 +F1F1F1F0F0F0EFEFEFEEEEEEEDEDEDEBEBEBEAEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7 +E6E6E6E6E6E6E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDFDFDFE8E8E8 +EFEFEFF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8 +B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0 +C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3 +E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBECECECECECEC +EDEDEDEEEEEEEFEFEFF1F1F1F2F2F2F3F3F3F4F4F4F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7 +F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F4F4F4 +F2F2F2F1F1F1F0F0F0EFEFEFEEEEEEECECECEBEBEBEAEAEAE9E9E9E9E9E9E8E8E8E7E7E7E6E6E6 +E6E6E6E6E6E6E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDFDFDFE8E8E8 +EFEFEFF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D1D1D1B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8 +B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0 +C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDF +DFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3 +E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBECECECEDEDED +EEEEEEEFEFEFF0F0F0F2F2F2F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F7F7F7F6F6F6F6F6F6 +F4F4F4F3F3F3F2F2F2F1F1F1EFEFEFEDEDEDECECECEAEAEAE9E9E9E9E9E9E8E8E8E7E7E7E6E6E6 +E6E6E6E6E6E6E6E6E6E5E5E5E4E4E4E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDFDFDFE8E8E8 +EFEFEFF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBFAFAFAE5E5E5 +CECECEB6B6B6A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBF +BFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2 +E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEE +EFEFEFF0F0F0F1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9 +FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F8F8F8F7F7F7F7F7F7 +F5F5F5F4F4F4F3F3F3F2F2F2F0F0F0EEEEEEEDEDEDEBEBEBEAEAEAE9E9E9E8E8E8E7E7E7E6E6E6 +E5E5E5E5E5E5E5E5E5E4E4E4E3E3E3E3E3E3E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDFDFDFE7E7E7 +EEEEEEF6F6F6FDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F1F1F1EAEAEAE2E2E2D2D2D2 +C1C1C1AFAFAF9E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBFBFBF +BFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1E2E2E2E2E2E2 +E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEE +EFEFEFF0F0F0F1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9FAFAFA +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAF9F9F9F8F8F8F8F8F8 +F6F6F6F5F5F5F4F4F4F3F3F3F1F1F1EFEFEFEEEEEEECECECEBEBEBE9E9E9E8E8E8E7E7E7E6E6E6 +E5E5E5E5E5E5E5E5E5E4E4E4E3E3E3E3E3E3E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDEDEDEE4E4E4 +E9E9E9EEEEEEF3F3F3F6F6F6F9F9F9FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2E5E5E5D9D9D9CBCBCBC0C0C0 +B4B4B4A8A8A89E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBE +BFBFBFBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1 +E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9EBEBEBECECECEDEDEDEEEEEEEFEFEF +F0F0F0F1F1F1F2F2F2F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFBFBFB +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFAFAFAF9F9F9F9F9F9 +F7F7F7F6F6F6F5F5F5F4F4F4F2F2F2F0F0F0EFEFEFEDEDEDECECECEAEAEAE9E9E9E7E7E7E6E6E6 +E5E5E5E5E5E5E4E4E4E3E3E3E3E3E3E2E2E2E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDEDEDEE1E1E1 +E3E3E3E6E6E6EAEAEAEFEFEFF4F4F4F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECECECD9D9D9C7C7C7B4B4B4ADADAD +A7A7A7A2A2A29C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6 +A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBE +BFBFBFBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1 +E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9EBEBEBECECECEDEDEDEFEFEFF0F0F0 +F1F1F1F2F2F2F3F3F3F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFCFCFC +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFBFBFBFAFAFAFAFAFA +F8F8F8F7F7F7F6F6F6F5F5F5F3F3F3F1F1F1F0F0F0EEEEEEEDEDEDEBEBEBE9E9E9E7E7E7E6E6E6 +E5E5E5E5E5E5E4E4E4E3E3E3E3E3E3E2E2E2E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDEDEDE +DDDDDDDEDEDEE0E0E0E7E7E7F0F0F0F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B8A0A0A09D9D9D +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACADADADADADADAEAEAEAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBD +BEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDB +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0 +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E5E5E5E6E6E6E7E7E7E7E7E7E9E9E9EAEAEAECECECEDEDEDEEEEEEF0F0F0F1F1F1 +F2F2F2F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFBFBFBFBFBFB +FAFAFAF9F9F9F8F8F8F7F7F7F5F5F5F3F3F3F2F2F2F0F0F0EEEEEEECECECEAEAEAE7E7E7E6E6E6 +E5E5E5E5E5E5E3E3E3E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDB +D9D9D9D7D7D7D7D7D7E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B8A0A0A09D9D9D +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAABABABABABABACACACADADADADADADAEAEAEAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBDBDBD +BEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDB +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0 +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E5E5E5E6E6E6E7E7E7E7E7E7E9E9E9EAEAEAECECECEDEDEDEEEEEEF0F0F0F1F1F1 +F2F2F2F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFCFCFCFCFCFCFCFCFC +FAFAFAF9F9F9F8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F1F1F1EFEFEFECECECEAEAEAE8E8E8E6E6E6 +E5E5E5E5E5E5E3E3E3E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDB +D9D9D9D7D7D7D7D7D7E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B8A0A0A09D9D9D +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBDBDBD +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDB +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDF +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3 +E3E3E3E3E3E3E5E5E5E6E6E6E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF1F1F1F2F2F2 +F3F3F3F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +FBFBFBFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F0F0F0EDEDEDEBEBEBE9E9E9E7E7E7 +E6E6E6E5E5E5E3E3E3E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDB +D9D9D9D8D8D8D8D8D8E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B8A0A0A09D9D9D +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBDBDBD +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDB +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDF +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3 +E3E3E3E3E3E3E5E5E5E6E6E6E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF1F1F1F2F2F2 +F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FCFCFCFBFBFBFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F3F3F3F1F1F1EEEEEEECECECEAEAEAE8E8E8 +E6E6E6E5E5E5E3E3E3E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDB +D9D9D9D8D8D8D8D8D8E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B8A0A0A09D9D9D +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADADADADAEAEAE +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBDBDBD +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDB +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDF +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3 +E3E3E3E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3 +F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2EFEFEFEDEDEDEBEBEBE9E9E9 +E7E7E7E5E5E5E3E3E3E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDB +DADADAD9D9D9D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDE +DFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2 +E3E3E3E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3 +F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFCFCFCFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2EFEFEFEDEDEDEBEBEBE9E9E9 +E7E7E7E5E5E5E3E3E3E1E1E1E1E1E1E0E0E0E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDBDBDBDB +DADADAD9D9D9D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABACACACACACACADADAD +AEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDE +DFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2 +E3E3E3E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBECECECEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3 +F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFCFCFCFBFBFBFBFBFBF9F9F9F7F7F7F6F6F6F4F4F4F2F2F2F0F0F0EEEEEEEBEBEBE9E9E9 +E7E7E7E5E5E5E3E3E3E1E1E1E1E1E1E0E0E0E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDBDBDBDB +DADADAD9D9D9D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACAC +ADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E3E3E3E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4 +F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFDFDFDFCFCFCFCFCFCFAFAFAF8F8F8F7F7F7F5F5F5F3F3F3F1F1F1EFEFEFECECECEAEAEA +E7E7E7E5E5E5E3E3E3E1E1E1E0E0E0E0E0E0DFDFDFDEDEDEDEDEDEDDDDDDDCDCDCDBDBDBDBDBDB +DADADAD9D9D9D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACAC +ADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBC +BDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9 +CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADA +DBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDDDEDEDEDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E2E2E2 +E3E3E3E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F3F3F3F4F4F4 +F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFDFDFDFCFCFCFCFCFCFAFAFAF8F8F8F7F7F7F5F5F5F3F3F3F1F1F1EFEFEFECECECEAEAEA +E7E7E7E5E5E5E3E3E3E1E1E1E0E0E0E0E0E0DFDFDFDEDEDEDEDEDEDDDDDDDCDCDCDBDBDBDBDBDB +DADADAD9D9D9D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABABABAB +ACACACACACACADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8 +C9C9C9CACACACACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E2E2E2 +E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFDFDFDFDFDFDFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2F0F0F0EDEDEDEBEBEB +E8E8E8E6E6E6E3E3E3E1E1E1E0E0E0E0E0E0DEDEDEDDDDDDDDDDDDDCDCDCDBDBDBDADADADADADA +D9D9D9D9D9D9DADADAE3E3E3EDEDEDF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABABABAB +ACACACACACACADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8 +C9C9C9CACACACACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0E2E2E2 +E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFDFDFDFDFDFDFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2F0F0F0EDEDEDEBEBEB +E8E8E8E6E6E6E3E3E3E1E1E1E0E0E0E0E0E0DEDEDEDDDDDDDDDDDDDCDCDCDBDBDBDADADADADADA +D9D9D9D9D9D9DADADAE3E3E3EDEDEDF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAA +ABABABABABABACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2 +B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8 +C9C9C9CACACACACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDC +DCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFE0E0E0E2E2E2 +E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F1F1F1EEEEEEECECEC +E9E9E9E7E7E7E4E4E4E2E2E2E0E0E0E0E0E0DEDEDEDDDDDDDDDDDDDCDCDCDBDBDBDADADADADADA +D9D9D9D9D9D9DADADAE3E3E3EDEDEDF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAA +ABABABABABABACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2 +B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8 +C9C9C9CACACACACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9 +DADADADADADADBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDC +DCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFE0E0E0E2E2E2 +E3E3E3E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAECECECEEEEEEEFEFEFF1F1F1F2F2F2F4F4F4F5F5F5 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F1F1F1EEEEEEECECEC +E9E9E9E7E7E7E4E4E4E2E2E2E0E0E0E0E0E0DEDEDEDDDDDDDDDDDDDCDCDCDBDBDBDADADADADADA +D9D9D9D9D9D9DADADAE3E3E3EDEDEDF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADAEAEAE +AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1 +B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABA +BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7 +C8C8C8C9C9C9C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDB +DBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDEDEDEDFDFDFE0E0E0E2E2E2 +E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFAFAFAF8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E3E3E3E1E1E1DFDFDFDDDDDDDCDCDCDCDCDCDBDBDBDADADAD9D9D9D9D9D9 +D8D8D8D8D8D8D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADAEAEAE +AEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1 +B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABA +BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7 +C8C8C8C9C9C9C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2 +D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDB +DBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDEDEDEDFDFDFE0E0E0E2E2E2 +E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFAFAFAF8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E3E3E3E1E1E1DFDFDFDDDDDDDCDCDCDCDCDCDBDBDBDADADAD9D9D9D9D9D9 +D8D8D8D8D8D8D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9 +BABABABCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6 +C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADA +DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E2E2E2 +E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFAFAFAF8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E3E3E3E1E1E1DFDFDFDDDDDDDBDBDBDBDBDBDADADAD9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7CFCFCFB8B8B89F9F9F9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0 +B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9 +BABABABCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6 +C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1 +D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADA +DADADADADADADBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDDDDDDDEDEDEDFDFDFE0E0E0E2E2E2 +E4E4E4E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFBFBFBFAFAFAF8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E3E3E3E1E1E1DFDFDFDDDDDDDBDBDBDBDBDBDADADAD9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACACACACACACACACACACACACACADADADADADADAEAEAEAEAEAEAFAFAF +B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8 +B9B9B9BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5 +C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0 +D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9 +D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE1E1E1 +E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F0F0F0EEEEEE +EBEBEBE9E9E9E6E6E6E3E3E3E1E1E1DEDEDEDCDCDCDADADADADADAD9D9D9D8D8D8D7D7D7D7D7D7 +D7D7D7D7D7D7D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACACACACACACACACACACACACACADADADADADADAEAEAEAEAEAEAFAFAF +B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8 +B9B9B9BBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5 +C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0 +D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADADBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9 +D9D9D9D9D9D9DADADADADADADADADADADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE1E1E1 +E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F0F0F0EEEEEE +EBEBEBE9E9E9E6E6E6E3E3E3E1E1E1DEDEDEDCDCDCDADADADADADAD9D9D9D8D8D8D7D7D7D7D7D7 +D7D7D7D7D7D7D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABAB +ABABABABABABABABABABABABABABABABABABABABABABABABACACACACACACADADADADADADAEAEAE +AFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8 +B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5 +C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCF +CFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6 +D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9DADADA +DADADADADADADADADADADADADADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE1E1E1 +E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F0F0F0EEEEEE +EBEBEBE9E9E9E6E6E6E3E3E3E1E1E1DEDEDEDBDBDBD9D9D9D9D9D9D8D8D8D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABAB +ABABABABABABABABABABABABABABABABABABABABABABABABACACACACACACADADADADADADAEAEAE +AFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8 +B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5 +C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCF +CFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6 +D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9DADADA +DADADADADADADADADADADADADADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDFDFDFE1E1E1 +E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F4F4F4F5F5F5 +F7F7F7F8F8F8F9F9F9FBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFCFCFCFAFAFAF9F9F9F7F7F7F5F5F5F3F3F3F0F0F0EEEEEE +EBEBEBE9E9E9E6E6E6E3E3E3E1E1E1DEDEDEDBDBDBD9D9D9D9D9D9D8D8D8D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D9D9D9E2E2E2ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5 +A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7 +B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4 +C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECE +CECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5 +D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7 +D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDCDCDCDDDDDDDEDEDEE0E0E0 +E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAECECECEDEDEDEFEFEFF0F0F0F1F1F1F3F3F3F4F4F4 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E2E2E2E0E0E0DDDDDDDADADAD8D8D8D8D8D8D7D7D7D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D8D8D8E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABABABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7 +B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3C4C4C4 +C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCECECE +CECECECFCFCFD0D0D0D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5 +D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7 +D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9D9D9D9DADADADADADADBDBDBDCDCDCDDDDDDDEDEDEE0E0E0 +E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAECECECEDEDEDEFEFEFF0F0F0F1F1F1F3F3F3F4F4F4 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE8E8E8E5E5E5E2E2E2E0E0E0DDDDDDDADADAD8D8D8D8D8D8D7D7D7D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D8D8D8E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9 +A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +ADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3 +C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCD +CDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4 +D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6 +D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6 +D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDEE0E0E0 +E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAECECECEDEDEDEFEFEFF0F0F0F1F1F1F3F3F3F4F4F4 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE7E7E7E4E4E4E1E1E1DFDFDFDCDCDCD9D9D9D7D7D7D7D7D7D6D6D6D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D7D7D7E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3 +A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAABABABACACACACACACADADAD +ADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6 +B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2C3C3C3 +C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCDCDCD +CDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4 +D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6 +D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6 +D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDDDEDEDEE0E0E0 +E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAECECECEDEDEDEFEFEFF0F0F0F1F1F1F3F3F3F4F4F4 +F6F6F6F7F7F7F8F8F8FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFBFBFBF9F9F9F8F8F8F6F6F6F4F4F4F2F2F2EFEFEFEDEDED +EAEAEAE7E7E7E4E4E4E1E1E1DFDFDFDCDCDCD9D9D9D7D7D7D7D7D7D6D6D6D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D7D7D7E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9AAAAAAABABABABABABACACAC +ACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5 +B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3 +D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5 +D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5 +D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDDDFDFDF +E1E1E1E2E2E2E4E4E4E6E6E6E7E7E7E9E9E9EBEBEBECECECEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3 +F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFDFDFDFDFDFDFDFDFDFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F3F3F3F1F1F1EEEEEEECECEC +E9E9E9E6E6E6E3E3E3E0E0E0DEDEDEDBDBDBD8D8D8D6D6D6D6D6D6D5D5D5D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D6D6D6E0E0E0EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7 +A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAABABABABABABACACAC +ACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5 +B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCCCCCC +CCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2 +D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5 +D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D8D8D8DADADADBDBDBDCDCDCDDDDDDDFDFDF +E1E1E1E2E2E2E4E4E4E6E6E6E7E7E7E9E9E9EBEBEBECECECEEEEEEEFEFEFF0F0F0F2F2F2F3F3F3 +F5F5F5F6F6F6F7F7F7F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFDFDFDFDFDFDFDFDFDFBFBFBFAFAFAF8F8F8F7F7F7F5F5F5F3F3F3F1F1F1EEEEEEECECEC +E9E9E9E6E6E6E3E3E3E0E0E0DEDEDEDBDBDBD8D8D8D6D6D6D6D6D6D5D5D5D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D6D6D6E0E0E0EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABAB +ABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4 +B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CBCBCBCCCCCCCDCDCDCDCDCDCECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2 +D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4 +D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4 +D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D7D7D7D8D8D8D9D9D9DADADADCDCDCDDDDDDDEDEDE +E0E0E0E1E1E1E3E3E3E5E5E5E6E6E6E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF1F1F1F2F2F2 +F4F4F4F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F2F2F2F0F0F0EDEDEDEBEBEB +E8E8E8E5E5E5E2E2E2DFDFDFDDDDDDDADADAD7D7D7D5D5D5D5D5D5D4D4D4D3D3D3D3D3D3D3D3D3 +D4D4D4D4D4D4D6D6D6E0E0E0EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB7B7B79E9E9E9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D +9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6 +A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9AAAAAAAAAAAAABABAB +ABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4 +B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0 +C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACBCBCB +CBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1 +D2D2D2D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4 +D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D6D6D6D7D7D7D9D9D9DADADADCDCDCDDDDDDDEDEDE +E0E0E0E1E1E1E3E3E3E5E5E5E6E6E6E8E8E8EAEAEAEBEBEBEDEDEDEEEEEEEFEFEFF1F1F1F2F2F2 +F4F4F4F5F5F5F6F6F6F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFDFDFDFCFCFCFCFCFCFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F2F2F2F0F0F0EDEDEDEBEBEB +E8E8E8E5E5E5E2E2E2DFDFDFDDDDDDDADADAD7D7D7D5D5D5D5D5D5D4D4D4D3D3D3D3D3D3D3D3D3 +D4D4D4D4D4D4D6D6D6E0E0E0EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABACACACADADADADADADAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3 +B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0 +D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3 +D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDDDDDD +DFDFDFE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7E9E9E9EAEAEAECECECEDEDEDEEEEEEF0F0F0F1F1F1 +F3F3F3F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFCFCFCFBFBFBFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F1F1F1EFEFEFECECECEAEAEA +E7E7E7E4E4E4E1E1E1DEDEDEDCDCDCD9D9D9D6D6D6D4D4D4D4D4D4D3D3D3D2D2D2D2D2D2D2D2D2 +D3D3D3D3D3D3D5D5D5DFDFDFEAEAEAF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABACACACADADADADADADAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3 +B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBF +C0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9CACACA +CACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0 +D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3 +D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDDDDDD +DFDFDFE0E0E0E2E2E2E4E4E4E5E5E5E7E7E7E9E9E9EAEAEAECECECEDEDEDEEEEEEF0F0F0F1F1F1 +F3F3F3F4F4F4F5F5F5F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFCFCFCFBFBFBFBFBFBF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F1F1F1EFEFEFECECECEAEAEA +E7E7E7E4E4E4E1E1E1DEDEDEDCDCDCD9D9D9D6D6D6D4D4D4D4D4D4D3D3D3D2D2D2D2D2D2D2D2D2 +D3D3D3D3D3D3D5D5D5DFDFDFEAEAEAF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B2B2B2 +B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9 +C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECFCFCFCFCFCF +D0D0D0D0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2 +D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8DADADADBDBDBDCDCDC +DEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBECECECEDEDEDEFEFEFF0F0F0 +F2F2F2F3F3F3F4F4F4F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFCFCFCFCFCFCFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFD +FCFCFCFBFBFBFAFAFAFAFAFAF8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F0F0F0EEEEEEEBEBEBE9E9E9 +E6E6E6E3E3E3E0E0E0DDDDDDDBDBDBD8D8D8D5D5D5D3D3D3D3D3D3D2D2D2D1D1D1D1D1D1D1D1D1 +D2D2D2D2D2D2D4D4D4DFDFDFEAEAEAF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3 +A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B1B1B1 +B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBE +BFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8 +C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECE +CFCFCFCFCFCFD0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2 +D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8DADADADBDBDBDCDCDC +DEDEDEDFDFDFE1E1E1E3E3E3E4E4E4E6E6E6E8E8E8E9E9E9EBEBEBECECECEDEDEDEFEFEFF0F0F0 +F1F1F1F2F2F2F3F3F3F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFBFBFBFCFCFCFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFDFDFDFDFDFD +FCFCFCFBFBFBFAFAFAF9F9F9F7F7F7F6F6F6F4F4F4F3F3F3F1F1F1EFEFEFEDEDEDEAEAEAE8E8E8 +E5E5E5E2E2E2DFDFDFDCDCDCDADADAD8D8D8D5D5D5D3D3D3D3D3D3D2D2D2D1D1D1D1D1D1D1D1D1 +D2D2D2D2D2D2D4D4D4DFDFDFEAEAEAF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2 +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8 +A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACADADADADADADAEAEAEAEAEAEAFAFAFB0B0B0 +B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBD +BEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7 +C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCD +CECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1 +D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9DADADADBDBDB +DDDDDDDEDEDEE0E0E0E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBECECECEEEEEEEFEFEF +F0F0F0F1F1F1F2F2F2F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFCFCFC +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFC +FBFBFBFAFAFAF9F9F9F8F8F8F6F6F6F5F5F5F3F3F3F2F2F2F0F0F0EEEEEEECECECE9E9E9E7E7E7 +E4E4E4E1E1E1DEDEDEDBDBDBD9D9D9D7D7D7D4D4D4D2D2D2D2D2D2D1D1D1D0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D3D3D3DEDEDEE9E9E9F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2 +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8 +A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACADADADADADADAEAEAEAEAEAEAFAFAFB0B0B0 +B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBD +BEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7 +C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCD +CECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1 +D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9DADADADBDBDB +DDDDDDDEDEDEE0E0E0E2E2E2E3E3E3E5E5E5E7E7E7E8E8E8EAEAEAEBEBEBECECECEEEEEEEFEFEF +F0F0F0F1F1F1F2F2F2F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFAFAFAFBFBFBFBFBFB +FCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFB +FAFAFAF9F9F9F8F8F8F7F7F7F5F5F5F4F4F4F2F2F2F1F1F1EFEFEFEDEDEDEBEBEBE8E8E8E6E6E6 +E3E3E3E0E0E0DDDDDDDBDBDBD9D9D9D7D7D7D4D4D4D2D2D2D2D2D2D1D1D1D0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D3D3D3DEDEDEE9E9E9F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1 +A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADADADADAEAEAEAFAFAF +B0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBC +BDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6 +C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D3D3D3D5D5D5D6D6D6D8D8D8D9D9D9DADADA +DCDCDCDDDDDDDFDFDFE1E1E1E2E2E2E4E4E4E6E6E6E7E7E7E9E9E9EAEAEAEBEBEBEDEDEDEEEEEE +EFEFEFF0F0F0F1F1F1F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9F9F9F9FAFAFAFAFAFA +FBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFA +F9F9F9F8F8F8F7F7F7F6F6F6F4F4F4F3F3F3F1F1F1F0F0F0EEEEEEECECECEAEAEAE7E7E7E5E5E5 +E2E2E2DFDFDFDCDCDCDADADAD8D8D8D6D6D6D3D3D3D1D1D1D1D1D1D0D0D0CFCFCFCFCFCFCFCFCF +D0D0D0D0D0D0D2D2D2DDDDDDE9E9E9F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABACACACACACACADADADADADADAEAEAEAFAFAF +B0B0B0B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBB +BCBCBCBDBDBDBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C5C5C5 +C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCB +CCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8DADADA +DCDCDCDDDDDDDFDFDFE0E0E0E2E2E2E3E3E3E5E5E5E6E6E6E8E8E8E9E9E9EAEAEAECECECEDEDED +EEEEEEEFEFEFF0F0F0F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F8F8F8F9F9F9F9F9F9 +FAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9F9 +F8F8F8F7F7F7F6F6F6F5F5F5F3F3F3F2F2F2F0F0F0EFEFEFEDEDEDEBEBEBE9E9E9E6E6E6E4E4E4 +E1E1E1DEDEDEDBDBDBD9D9D9D7D7D7D5D5D5D3D3D3D1D1D1D0D0D0CFCFCFCECECECECECECECECE +CFCFCFD0D0D0D2D2D2DDDDDDE9E9E9F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAE +AFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B9B9B9BABABA +BBBBBBBCBCBCBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C4C4C4 +C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACA +CBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECE +CECECECECECECECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9 +DBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4E5E5E5E7E7E7E8E8E8E9E9E9EBEBEBECECEC +EDEDEDEEEEEEEFEFEFF1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F7F7F7F8F8F8F8F8F8 +F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F8F8F8F8F8F8 +F7F7F7F6F6F6F5F5F5F4F4F4F2F2F2F0F0F0EFEFEFEDEDEDEBEBEBE9E9E9E7E7E7E5E5E5E3E3E3 +E0E0E0DDDDDDDADADAD8D8D8D6D6D6D4D4D4D2D2D2D0D0D0CFCFCFCECECECDCDCDCDCDCDCDCDCD +CECECECFCFCFD1D1D1DCDCDCE8E8E8F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAABABABABABABACACACACACACADADADAEAEAE +AFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9 +BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3 +C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9 +CACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D6D6D6D7D7D7D9D9D9 +DBDBDBDCDCDCDEDEDEDFDFDFE0E0E0E1E1E1E3E3E3E4E4E4E6E6E6E7E7E7E8E8E8EAEAEAEBEBEB +ECECECEDEDEDEEEEEEF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F6F6F6F7F7F7F7F7F7 +F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F7F7F7F7F7F7 +F6F6F6F5F5F5F4F4F4F3F3F3F1F1F1EFEFEFEEEEEEECECECEAEAEAE8E8E8E6E6E6E4E4E4E2E2E2 +DFDFDFDCDCDCD9D9D9D7D7D7D5D5D5D3D3D3D2D2D2D0D0D0CFCFCFCECECECDCDCDCDCDCDCDCDCD +CECECECFCFCFD1D1D1DCDCDCE8E8E8F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADAD +AEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8 +B9B9B9BABABABABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8 +C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D5D5D5D6D6D6D8D8D8 +DADADADBDBDBDDDDDDDEDEDEDFDFDFE0E0E0E2E2E2E3E3E3E5E5E5E6E6E6E7E7E7E9E9E9EAEAEA +EBEBEBECECECEDEDEDEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F5F5F5F6F6F6F6F6F6 +F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6 +F5F5F5F4F4F4F3F3F3F2F2F2F0F0F0EEEEEEEDEDEDEBEBEBE9E9E9E7E7E7E5E5E5E3E3E3E1E1E1 +DEDEDEDBDBDBD8D8D8D6D6D6D4D4D4D2D2D2D1D1D1CFCFCFCECECECDCDCDCCCCCCCCCCCCCCCCCC +CDCDCDCECECED0D0D0DBDBDBE7E7E7F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADAD +ADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7 +B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D7D7D7 +D9D9D9DADADADCDCDCDDDDDDDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4E5E5E5E6E6E6E8E8E8E9E9E9 +EAEAEAEBEBEBECECECEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F4F4F4F5F5F5F5F5F5 +F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5 +F4F4F4F3F3F3F2F2F2F1F1F1EFEFEFEDEDEDECECECEAEAEAE8E8E8E6E6E6E4E4E4E2E2E2E0E0E0 +DDDDDDDADADAD7D7D7D5D5D5D3D3D3D1D1D1D0D0D0CECECECECECECDCDCDCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCFCFCFDBDBDBE7E7E7F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAAAAAAAABABABABABABACACACADADAD +ADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7 +B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7 +C8C8C8C8C8C8C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCDCECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D7D7D7 +D9D9D9DADADADCDCDCDDDDDDDEDEDEDFDFDFE1E1E1E2E2E2E4E4E4E5E5E5E6E6E6E8E8E8E9E9E9 +EAEAEAEBEBEBECECECEEEEEEEFEFEFF0F0F0F1F1F1F1F1F1F2F2F2F3F3F3F3F3F3F4F4F4F5F5F5 +F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F5F5F5F4F4F4F4F4F4 +F3F3F3F2F2F2F1F1F1F0F0F0EEEEEEEDEDEDEBEBEBEAEAEAE8E8E8E6E6E6E4E4E4E1E1E1DFDFDF +DCDCDCDADADAD7D7D7D5D5D5D3D3D3D1D1D1D0D0D0CECECECECECECDCDCDCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCFCFCFDBDBDBE7E7E7F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CDCDCDB5B5B59C9C9C9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABACACAC +ACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6 +B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6 +C7C7C7C7C7C7C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACACACA +CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACA +CACACACACACACACACACACACACACACACACACACACACACBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCDCDCD +CDCDCDCDCDCDCECECECECECECECECECECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D6D6D6 +D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDEDEDEE0E0E0E1E1E1E3E3E3E4E4E4E5E5E5E7E7E7E8E8E8 +E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F2F2F2F3F3F3F3F3F3 +F4F4F4F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F3F3F3F2F2F2F2F2F2 +F1F1F1F0F0F0EFEFEFEEEEEEECECECEBEBEBE9E9E9E8E8E8E6E6E6E4E4E4E2E2E2DFDFDFDDDDDD +DADADAD8D8D8D5D5D5D3D3D3D1D1D1D0D0D0CFCFCFCDCDCDCDCDCDCCCCCCCBCBCBCBCBCBCBCBCB +CCCCCCCCCCCCCECECEDADADAE6E6E6F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CDCDCDB5B5B59C9C9C9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABAB +ACACACACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5 +B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBF +BFBFBFC0C0C0C1C1C1C1C1C1C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5 +C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9 +C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9 +C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCC +CDCDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D5D5D5 +D7D7D7D8D8D8DADADADBDBDBDCDCDCDDDDDDDFDFDFE0E0E0E2E2E2E3E3E3E4E4E4E6E6E6E7E7E7 +E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F1F1F1F2F2F2F2F2F2 +F3F3F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F2F2F2F1F1F1F1F1F1 +F0F0F0EFEFEFEEEEEEEDEDEDEBEBEBEAEAEAE8E8E8E7E7E7E5E5E5E3E3E3E1E1E1DEDEDEDCDCDC +D9D9D9D7D7D7D4D4D4D2D2D2D0D0D0CFCFCFCECECECCCCCCCCCCCCCBCBCBCBCBCBCACACACACACA +CBCBCBCBCBCBCDCDCDD9D9D9E6E6E6F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CDCDCDB5B5B59C9C9C9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAA +ABABABABABABACACACADADADAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9BABABABBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBE +BEBEBEBFBFBFC0C0C0C0C0C0C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4 +C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8 +C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCB +CCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1D2D2D2D4D4D4 +D6D6D6D7D7D7D9D9D9DADADADBDBDBDCDCDCDEDEDEDFDFDFE1E1E1E2E2E2E3E3E3E5E5E5E6E6E6 +E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F0F0F0F1F1F1F1F1F1 +F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F0F0F0F0F0F0 +EEEEEEEDEDEDECECECEBEBEBE9E9E9E8E8E8E6E6E6E5E5E5E3E3E3E1E1E1DFDFDFDCDCDCDADADA +D7D7D7D5D5D5D2D2D2D0D0D0CFCFCFCECECECDCDCDCBCBCBCBCBCBCACACACACACAC9C9C9C9C9C9 +CACACACACACACCCCCCD8D8D8E5E5E5F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E6E6CECECEB6B6B69D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAA +ABABABABABABACACACACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B3B3B3B3B3B3B4B4B4 +B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBBBBBBBBBCBCBCBDBDBDBEBEBE +BEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4 +C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8 +C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCB +CCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3 +D5D5D5D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDFDFDFE0E0E0E1E1E1E2E2E2E4E4E4E5E5E5 +E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFEFEFEFF0F0F0F0F0F0 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEF +EDEDEDECECECEBEBEBEAEAEAE8E8E8E7E7E7E5E5E5E4E4E4E2E2E2E0E0E0DEDEDEDBDBDBD9D9D9 +D6D6D6D4D4D4D1D1D1CFCFCFCECECECDCDCDCCCCCCCBCBCBCBCBCBCACACACACACAC9C9C9C9C9C9 +C9C9C9C9C9C9CBCBCBD8D8D8E5E5E5F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBD8D8D8C7C7C7B3B3B3ABABAB +A6A6A6A1A1A19B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2 +A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAABABABABABABACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B2B2B2B2B2B2B3B3B3 +B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABABABABABBBBBBBCBCBCBDBDBD +BDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3 +C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7 +C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACA +CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2 +D4D4D4D5D5D5D7D7D7D8D8D8D9D9D9DADADADCDCDCDDDDDDDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3 +E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEDEDEDEEEEEEEEEEEE +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEDEDEDEDEDED +EBEBEBEAEAEAE9E9E9E8E8E8E6E6E6E5E5E5E3E3E3E2E2E2E0E0E0DEDEDEDCDCDCD9D9D9D7D7D7 +D4D4D4D2D2D2D0D0D0CECECECDCDCDCCCCCCCBCBCBCACACACACACAC9C9C9C9C9C9C9C9C9CCCCCC +D0D0D0D2D2D2D6D6D6E1E1E1EBEBEBF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2E4E4E4D7D7D7CBCBCBBFBFBF +B3B3B3A8A8A89D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2 +A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAABABABABABABACACACACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2 +B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9B9B9B9BABABABBBBBBBCBCBC +BCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2 +C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6C6 +C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACA +CACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1 +D3D3D3D4D4D4D6D6D6D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE0E0E0E1E1E1E2E2E2 +E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECECECECEDEDEDEDEDED +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDECECECEBEBEBEBEBEB +EAEAEAE9E9E9E8E8E8E7E7E7E5E5E5E3E3E3E2E2E2E0E0E0DEDEDEDCDCDCDADADAD8D8D8D6D6D6 +D3D3D3D1D1D1CFCFCFCDCDCDCCCCCCCBCBCBCACACAC9C9C9C9C9C9C8C8C8C8C8C8CACACACFCFCF +D6D6D6DDDDDDE3E3E3EAEAEAF1F1F1F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F0F0F0E9E9E9E2E2E2D3D3D3 +C0C0C0AFAFAF9D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1 +A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1 +B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8B8B8B8B9B9B9BABABABBBBBB +BBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1 +C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9 +C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0 +D2D2D2D3D3D3D5D5D5D6D6D6D7D7D7D8D8D8DADADADBDBDBDDDDDDDEDEDEDFDFDFE0E0E0E1E1E1 +E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E8E8E8E9E9E9EAEAEAEAEAEAEBEBEBEBEBEB +ECECECECECECECECECECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEAEAEAEAEAEA +E8E8E8E7E7E7E6E6E6E5E5E5E3E3E3E2E2E2E0E0E0DFDFDFDDDDDDDBDBDBD9D9D9D6D6D6D4D4D4 +D2D2D2D0D0D0CECECECCCCCCCBCBCBCACACAC9C9C9C8C8C8C8C8C8C7C7C7C7C7C7C9C9C9D3D3D3 +DDDDDDE7E7E7F0F0F0F3F3F3F7F7F7FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFBFBFBFAFAFAE5E5E5 +CDCDCDB7B7B79F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1 +A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADADAEAEAEAFAFAFB0B0B0B1B1B1 +B2B2B2B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7B7B7B7B8B8B8B9B9B9BABABA +BABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0 +C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4 +C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5 +C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9 +C9C9C9C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0 +D1D1D1D2D2D2D4D4D4D5D5D5D6D6D6D7D7D7D9D9D9DADADADCDCDCDDDDDDDEDEDEDFDFDFE0E0E0 +E1E1E1E2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E7E7E7E8E8E8E9E9E9E9E9E9EAEAEAEAEAEA +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAE9E9E9E8E8E8E8E8E8 +E7E7E7E6E6E6E5E5E5E4E4E4E2E2E2E0E0E0DFDFDFDDDDDDDBDBDBD9D9D9D7D7D7D5D5D5D3D3D3 +D1D1D1CFCFCFCDCDCDCBCBCBCACACACACACAC9C9C9C8C8C8C8C8C8C7C7C7C7C7C7CACACAD7D7D7 +E4E4E4F0F0F0FCFCFCFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADAEAEAEAFAFAFB0B0B0 +B1B1B1B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6B6B6B6B7B7B7B8B8B8B9B9B9 +B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBF +C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3 +C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4 +C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8 +C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACBCBCBCCCCCCCDCDCDCECECECFCFCF +D0D0D0D1D1D1D3D3D3D4D4D4D5D5D5D6D6D6D8D8D8D9D9D9DBDBDBDCDCDCDDDDDDDEDEDEDFDFDF +E0E0E0E1E1E1E2E2E2E2E2E2E3E3E3E4E4E4E5E5E5E5E5E5E6E6E6E7E7E7E7E7E7E8E8E8E8E8E8 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E7E7E7E6E6E6E6E6E6 +E5E5E5E4E4E4E3E3E3E2E2E2E0E0E0DEDEDEDDDDDDDBDBDBD9D9D9D7D7D7D5D5D5D3D3D3D1D1D1 +D0D0D0CECECECCCCCCCACACAC9C9C9C9C9C9C8C8C8C7C7C7C7C7C7C6C6C6C6C6C6C9C9C9D6D6D6 +E4E4E4F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADADAEAEAEAFAFAF +B0B0B0B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5B5B5B5B6B6B6B7B7B7B8B8B8 +B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBE +BFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 +C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4 +C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8 +C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACACACACBCBCBCCCCCCCDCDCDCECECE +CFCFCFD0D0D0D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D8D8D8D9D9D9DADADADBDBDBDCDCDCDDDDDD +DEDEDEDFDFDFE0E0E0E1E1E1E2E2E2E3E3E3E4E4E4E4E4E4E5E5E5E6E6E6E6E6E6E7E7E7E7E7E7 +E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E5E5E5E5E5E5 +E3E3E3E2E2E2E1E1E1E0E0E0DEDEDEDDDDDDDBDBDBDADADAD8D8D8D6D6D6D4D4D4D1D1D1D0D0D0 +CECECECCCCCCCBCBCBC9C9C9C8C8C8C8C8C8C7C7C7C6C6C6C6C6C6C5C5C5C5C5C5C8C8C8D6D6D6 +E4E4E4F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACADADADAEAEAE +AFAFAFB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4B4B4B4B5B5B5B6B6B6B7B7B7 +B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBD +BEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3 +C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7 +C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9CACACACBCBCBCCCCCCCDCDCD +CECECECFCFCFD1D1D1D2D2D2D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8D9D9D9DADADADBDBDBDCDCDC +DDDDDDDEDEDEDFDFDFDFDFDFE0E0E0E1E1E1E2E2E2E2E2E2E3E3E3E4E4E4E4E4E4E5E5E5E5E5E5 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E4E4E4E3E3E3E3E3E3 +E2E2E2E1E1E1E0E0E0DFDFDFDDDDDDDBDBDBDADADAD8D8D8D6D6D6D4D4D4D2D2D2D0D0D0CECECE +CDCDCDCBCBCBCACACAC8C8C8C7C7C7C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C4C4C4C7C7C7D5D5D5 +E4E4E4F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F +9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADAD +AEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B5B5B5B6B6B6 +B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBC +BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3 +C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7 +C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9CACACACBCBCBCCCCCC +CDCDCDCECECED0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D6D6D6D7D7D7D8D8D8D9D9D9DADADADBDBDB +DCDCDCDDDDDDDEDEDEDEDEDEDFDFDFE0E0E0E1E1E1E1E1E1E2E2E2E3E3E3E3E3E3E4E4E4E4E4E4 +E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E2E2E2E2E2E2 +E0E0E0DFDFDFDEDEDEDDDDDDDBDBDBDADADAD8D8D8D7D7D7D5D5D5D3D3D3D1D1D1CECECECDCDCD +CCCCCCCACACAC9C9C9C8C8C8C7C7C7C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C4C4C4C7C7C7D5D5D5 +E4E4E4F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5 +A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACAC +ADADADAEAEAEAEAEAEAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B4B4B4B5B5B5 +B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBB +BCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2 +C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6 +C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9CACACACBCBCB +CCCCCCCDCDCDCFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D5D5D5D6D6D6D7D7D7D8D8D8D9D9D9DADADA +DBDBDBDCDCDCDDDDDDDDDDDDDEDEDEDFDFDFE0E0E0E0E0E0E1E1E1E2E2E2E2E2E2E2E2E2E2E2E2 +E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E0E0E0E0E0E0 +DEDEDEDDDDDDDCDCDCDBDBDBD9D9D9D8D8D8D6D6D6D5D5D5D3D3D3D1D1D1CFCFCFCDCDCDCCCCCC +CBCBCBC9C9C9C8C8C8C7C7C7C6C6C6C6C6C6C5C5C5C4C4C4C4C4C4C3C3C3C3C3C3C6C6C6D4D4D4 +E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A5A5A5 +A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACAC +ACACACADADADADADADAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B3B3B3B4B4B4 +B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9 +BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD +BDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2 +C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5 +C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9CACACA +CBCBCBCBCBCBCDCDCDCECECECFCFCFD0D0D0D1D1D1D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7D8D8D8 +D9D9D9DADADADBDBDBDBDBDBDCDCDCDDDDDDDEDEDEDEDEDEDFDFDFE0E0E0E0E0E0E1E1E1E1E1E1 +E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E0E0E0DFDFDFDEDEDEDEDEDE +DDDDDDDCDCDCDBDBDBDADADAD8D8D8D6D6D6D5D5D5D3D3D3D1D1D1D0D0D0CECECECBCBCBCACACA +C9C9C9C8C8C8C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C3C3C3C3C3C3C2C2C2C2C2C2C5C5C5D4D4D4 +E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABAB +ACACACADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B2B2B2B3B3B3 +B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8 +B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBD +BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C1C1C1 +C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5 +C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9 +CACACACACACACCCCCCCDCDCDCECECECFCFCFD0D0D0D2D2D2D3D3D3D4D4D4D5D5D5D6D6D6D7D7D7 +D8D8D8D9D9D9DADADADADADADBDBDBDCDCDCDDDDDDDDDDDDDEDEDEDFDFDFDFDFDFDFDFDFDFDFDF +E0E0E0E0E0E0E0E0E0E0E0E0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDEDEDEDDDDDDDCDCDCDCDCDC +DBDBDBDADADAD9D9D9D8D8D8D6D6D6D4D4D4D3D3D3D1D1D1CFCFCFCECECECCCCCCCACACAC9C9C9 +C8C8C8C7C7C7C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C3C3C3C3C3C3C2C2C2C1C1C1C4C4C4D3D3D3 +E2E2E2F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABAB +ABABABACACACACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B1B1B1B2B2B2 +B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7 +B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBC +BCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1 +C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4 +C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8 +C9C9C9C9C9C9CBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4D5D5D5 +D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADBDBDBDBDBDBDCDCDCDDDDDDDDDDDDDDDDDDDDDDDD +DEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDBDBDBDADADADADADA +D9D9D9D8D8D8D7D7D7D6D6D6D4D4D4D2D2D2D1D1D1CFCFCFCDCDCDCCCCCCCACACAC8C8C8C7C7C7 +C7C7C7C6C6C6C6C6C6C5C5C5C4C4C4C4C4C4C3C3C3C2C2C2C2C2C2C1C1C1C0C0C0C3C3C3D3D3D3 +E2E2E2F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3 +A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFB0B0B0B1B1B1 +B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6 +B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABABABABABBBBBB +BBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0 +C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3 +C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7 +C8C8C8C8C8C8CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D3D3D3D4D4D4 +D5D5D5D6D6D6D7D7D7D7D7D7D8D8D8D9D9D9DADADADADADADBDBDBDCDCDCDCDCDCDCDCDCDCDCDC +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDADADAD9D9D9D9D9D9 +D7D7D7D6D6D6D5D5D5D4D4D4D2D2D2D1D1D1CFCFCFCECECECCCCCCCBCBCBC9C9C9C7C7C7C6C6C6 +C6C6C6C5C5C5C5C5C5C4C4C4C3C3C3C3C3C3C2C2C2C1C1C1C1C1C1C0C0C0BFBFBFC2C2C2D2D2D2 +E1E1E1F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2 +A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0 +B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5 +B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBB +BBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBF +BFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3 +C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6 +C7C7C7C7C7C7C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1D2D2D2D2D2D2 +D3D3D3D4D4D4D5D5D5D5D5D5D6D6D6D7D7D7D8D8D8D8D8D8D9D9D9DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADADADAD9D9D9D8D8D8D7D7D7D7D7D7 +D5D5D5D4D4D4D3D3D3D2D2D2D0D0D0CFCFCFCDCDCDCCCCCCCACACAC9C9C9C8C8C8C6C6C6C5C5C5 +C5C5C5C4C4C4C4C4C4C3C3C3C2C2C2C2C2C2C1C1C1C0C0C0C0C0C0BFBFBFBDBDBDC0C0C0D1D1D1 +E0E0E0F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B89F9F9F9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1A2A2A2A2A2A2 +A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAAAAAAAABABABABABABACACACACACACADADADADADADAEAEAEAFAFAFB0B0B0 +B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5 +B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABA +BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBF +BFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2 +C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6 +C6C6C6C6C6C6C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFD0D0D0D1D1D1 +D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D6D6D6D6D6D6D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D6D6D6D5D5D5D5D5D5 +D4D4D4D3D3D3D2D2D2D1D1D1CFCFCFCDCDCDCCCCCCCACACAC9C9C9C8C8C8C7C7C7C6C6C6C5C5C5 +C4C4C4C4C4C4C3C3C3C2C2C2C1C1C1C1C1C1C0C0C0BFBFBFBEBEBEBDBDBDBCBCBCBFBFBFCFCFCF +E0E0E0F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9E9E9 +D0D0D0B8B8B8A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1 +A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAAAAAAAABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAF +AFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4 +B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABA +BABABABABABABABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBE +BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2 +C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5 +C5C5C5C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECFCFCFCFCFCF +D0D0D0D1D1D1D2D2D2D2D2D2D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D6D6D6D6D6D6D6D6D6D6D6D6 +D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D4D4D4D3D3D3D3D3D3 +D2D2D2D1D1D1D0D0D0CFCFCFCDCDCDCBCBCBCACACAC8C8C8C7C7C7C6C6C6C6C6C6C5C5C5C4C4C4 +C3C3C3C3C3C3C2C2C2C1C1C1C0C0C0C0C0C0BFBFBFBEBEBEBDBDBDBCBCBCBABABABDBDBDCECECE +DFDFDFF0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEB +D6D6D6C1C1C1ABABABA3A3A3A0A0A09E9E9E9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8 +A8A8A8A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADADADADADAEAEAE +AEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3 +B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9 +B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBD +BDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1 +C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4 +C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9CACACACBCBCBCCCCCCCDCDCDCECECECECECE +CFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D3D3D3D3D3D3D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5 +D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D3D3D3D2D2D2D2D2D2 +D0D0D0CFCFCFCECECECDCDCDCBCBCBCACACAC8C8C8C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C3C3C3 +C2C2C2C2C2C2C1C1C1C0C0C0BFBFBFBFBFBFBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C5C5C5D3D3D3 +E3E3E3F1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1 +E1E1E1D2D2D2C2C2C2B7B7B7AEAEAEA5A5A59C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADAD +ADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3 +B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBDBDBD +BDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0 +C0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3 +C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9CACACACACACACBCBCBCCCCCCCCCCCC +CDCDCDCECECECFCFCFCFCFCFD0D0D0D1D1D1D1D1D1D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3 +D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D1D1D1D0D0D0D0D0D0 +CECECECDCDCDCCCCCCCBCBCBC9C9C9C8C8C8C6C6C6C6C6C6C5C5C5C4C4C4C4C4C4C3C3C3C2C2C2 +C1C1C1C1C1C1C0C0C0BFBFBFBEBEBEBEBEBEBDBDBDBEBEBEC4C4C4C9C9C9CECECED5D5D5DFDFDF +EAEAEAF5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7 +ECECECE3E3E3D9D9D9CBCBCBBDBDBDAEAEAE9E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F +A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADAD +ADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2 +B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBC +BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0 +C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3 +C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C8C8C8C9C9C9C9C9C9CACACACBCBCBCBCBCB +CCCCCCCDCDCDCECECECECECECFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1 +D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0CFCFCFCECECECECECE +CCCCCCCBCBCBCACACAC9C9C9C7C7C7C6C6C6C5C5C5C5C5C5C4C4C4C3C3C3C3C3C3C2C2C2C1C1C1 +C1C1C1C0C0C0C0C0C0BFBFBFBEBEBEBDBDBDBCBCBCBFBFBFC9C9C9D2D2D2DCDCDCE4E4E4ECECEC +F2F2F2F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +F7F7F7F3F3F3EFEFEFDEDEDECACACAB6B6B6A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F +A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACAC +ACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2 +B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBC +BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBF +BFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2 +C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C5C5C5C6C6C6C7C7C7C7C7C7C8C8C8C9C9C9C9C9C9 +CACACACBCBCBCCCCCCCCCCCCCDCDCDCECECECECECECFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECDCDCDCCCCCCCCCCCC +CACACAC9C9C9C8C8C8C7C7C7C6C6C6C5C5C5C3C3C3C3C3C3C2C2C2C2C2C2C1C1C1C1C1C1C0C0C0 +C0C0C0BFBFBFBFBFBFBEBEBEBDBDBDBCBCBCBABABAC0C0C0CECECEDBDBDBE9E9E9F4F4F4F7F7F7 +FAFAFAFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E +9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABAB +ABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1 +B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6 +B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBB +BBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 +C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C4C4C4C5C5C5C6C6C6C6C6C6C7C7C7C8C8C8C8C8C8 +C9C9C9CACACACBCBCBCBCBCBCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECE +CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECDCDCDCDCDCDCDCDCDCCCCCCCBCBCBCACACACACACA +C8C8C8C7C7C7C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C2C2C2C1C1C1C1C1C1C0C0C0C0C0C0BFBFBF +BFBFBFBEBEBEBEBEBEBDBDBDBCBCBCBBBBBBB9B9B9BFBFBFD0D0D0E0E0E0F1F1F1FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E +9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABAB +ABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1 +B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6 +B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBB +BBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1 +C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5C6C6C6C7C7C7C7C7C7 +C8C8C8C9C9C9C9C9C9CACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCACACAC9C9C9C8C8C8C8C8C8 +C6C6C6C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C0C0C0C0C0C0BFBFBF +BEBEBEBEBEBEBDBDBDBCBCBCBBBBBBBABABAB8B8B8BEBEBECFCFCFE0E0E0F1F1F1FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D +9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5 +B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABA +BABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBD +BDBDBDBDBDBDBEBEBEBEBEBEBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C4C4C4C5C5C5C5C5C5 +C6C6C6C7C7C7C8C8C8C8C8C8C9C9C9CACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCACACACACACAC9C9C9C9C9C9C9C9C9C8C8C8C7C7C7C6C6C6C6C6C6 +C5C5C5C4C4C4C3C3C3C3C3C3C2C2C2C1C1C1C1C1C1C1C1C1C0C0C0C0C0C0BFBFBFBFBFBFBEBEBE +BDBDBDBDBDBDBCBCBCBBBBBBBABABAB9B9B9B7B7B7BDBDBDCECECEDFDFDFF1F1F1FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEBEBEBD3D3D3BBBBBBA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9D9D9D9D9D9D +9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAA +AAAAAAABABABABABABACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9 +B9B9B9B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBD +BDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C3C3C3C4C4C4C4C4C4 +C5C5C5C6C6C6C6C6C6C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C9C9C9 +C9C9C9C9C9C9C9C9C9C9C9C9C8C8C8C8C8C8C7C7C7C7C7C7C7C7C7C6C6C6C5C5C5C4C4C4C4C4C4 +C3C3C3C3C3C3C2C2C2C1C1C1C0C0C0C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBEBEBEBEBEBEBDBDBD +BCBCBCBCBCBCBBBBBBBABABAB8B8B8B7B7B7B5B5B5BBBBBBCDCDCDDFDFDFF1F1F1FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFEDEDEDD7D7D7C1C1C1A8A8A89E9E9E9E9E9E9C9C9C9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C +9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACACACACACACACADADADADADADAEAEAEAEAEAE +AFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBC +BCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C2C2C2C2C2C2 +C3C3C3C4C4C4C4C4C4C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7C7C7C7 +C7C7C7C7C7C7C7C7C7C7C7C7C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C4C4C4C3C3C3C2C2C2C2C2C2 +C1C1C1C1C1C1C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBDBDBDBDBDBDBCBCBC +BBBBBBBBBBBBBABABABABABAB9B9B9BABABAB8B8B8BFBFBFD0D0D0E0E0E0F2F2F2FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF2F2F2E0E0E0D1D1D1BEBEBEB3B3B3ACACACA5A5A59E9E9E9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C +9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9 +A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACACACACACACACADADADADADADAEAEAEAEAEAE +AFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBC +BCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1 +C2C2C2C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C3C3C3C2C2C2C1C1C1C1C1C1 +C0C0C0C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBEBEBEBEBEBEBDBDBDBDBDBDBCBCBCBCBCBCBBBBBB +BABABABABABAB9B9B9BCBCBCBFBFBFC3C3C3C7C7C7CFCFCFDCDCDCE9E9E9F5F5F5FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF7F7F7EBEBEBE1E1E1D5D5D5C9C9C9BBBBBBADADADA0A0A09A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8 +A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABABACACACACACACADADADADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7 +B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBB +BBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0 +C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C4C4C4 +C4C4C4C4C4C4C4C4C4C4C4C4C3C3C3C3C3C3C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C0C0C0C0C0C0 +BFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBDBDBDBDBDBDBCBCBCBCBCBCBBBBBBBBBBBBBABABA +B9B9B9B9B9B9B8B8B8BCBCBCC5C5C5CECECED7D7D7DFDFDFE8E8E8F1F1F1F9F9F9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBF6F6F6F0F0F0EBEBEBDDDDDDCACACAB6B6B6A2A2A29A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADADADADAD +AEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7 +B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABA +BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBD +BDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C2C2C2C2C2C2C2C2C2C2C2C2 +C2C2C2C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C0C0C0C0C0C0BFBFBFBFBFBF +BEBEBEBEBEBEBEBEBEBEBEBEBDBDBDBDBDBDBCBCBCBCBCBCBBBBBBBBBBBBBABABABABABAB9B9B9 +B8B8B8B8B8B8B7B7B7BDBDBDCBCBCBD8D8D8E6E6E6F1F1F1F4F4F4F8F8F8FCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACAC +ADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6 +B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9 +B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBC +BCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBE +BDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBBBBBBBBBBBBBABABABABABAB9B9B9B9B9B9B8B8B8 +B7B7B7B6B6B6B5B5B5BDBDBDCFCFCFE0E0E0F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BDBDBDA5A5A59A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0A0A0A0A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACAC +ADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6 +B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9 +B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBC +BCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +BDBDBDBDBDBDBCBCBCBCBCBCBBBBBBBBBBBBBABABABABABAB9B9B9B9B9B9B8B8B8B8B8B8B7B7B7 +B6B6B6B5B5B5B4B4B4BCBCBCCECECEE0E0E0F2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BEBEBEA6A6A69B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABAB +ACACACACACACACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0 +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5 +B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8 +B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBB +BBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD +BDBDBDBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEBEBEBEBEBEBEBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD +BCBCBCBCBCBCBBBBBBBBBBBBBABABABABABAB9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6 +B5B5B5B4B4B4B3B3B3BBBBBBCDCDCDDFDFDFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD6D6D6BEBEBEA6A6A69B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABAB +ACACACACACACACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABA +BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC +BCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD +BDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC +BBBBBBBBBBBBBABABABABABAB9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6B5B5B5 +B4B4B4B3B3B3B2B2B2BABABACCCCCCDFDFDFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD7D7D7BFBFBFA7A7A79C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9FA0A0A0 +A0A0A0A1A1A1A1A1A1A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABABABABAB +ACACACACACACACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABA +BABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC +BCBCBCBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD +BDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC +BBBBBBBBBBBBBABABABABABAB9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6B5B5B5 +B4B4B4B2B2B2B1B1B1B9B9B9CCCCCCDFDFDFF2F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD7D7D7BFBFBFA7A7A79C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACADADADADADADAEAEAEAEAEAEAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6 +B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9 +B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +BBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC +BCBCBCBCBCBCBCBCBCBCBCBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +BABABABABABAB9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B5B5B5B5B5B5B4B4B4B3B3B3 +B2B2B2B0B0B0AFAFAFB7B7B7CACACADEDEDEF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD7D7D7C0C0C0A8A8A89D9D9D9C9C9C +9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACADADADADADADAEAEAEAEAEAEAEAEAE +AEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6 +B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABABABABABBBBBBBBBBBBBBBBBB +BBBBBBBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBBBBBBBBBBBBBBBBBBBBBBBB +BBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABABABABABABABABABABABABABABABABA +B9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6B5B5B5B4B4B4B4B4B4B3B3B3B2B2B2 +B0B0B0AEAEAEADADADB5B5B5C9C9C9DDDDDDF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD8D8D8C1C1C1A9A9A99E9E9E9D9D9D +9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADADADAD +ADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5 +B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABA +BABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9 +B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6B5B5B5B5B5B5B4B4B4B3B3B3B3B3B3B2B2B2B0B0B0 +AEAEAEACACACABABABB3B3B3C7C7C7DCDCDCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFD9D9D9C2C2C2ABABAB9F9F9F9E9E9E +9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F +A0A0A0A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6 +A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADADADAD +ADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1 +B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5 +B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABA +BABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8 +B7B7B7B7B7B7B7B7B7B7B7B7B6B6B6B5B5B5B4B4B4B4B4B4B3B3B3B2B2B2B2B2B2B1B1B1AFAFAF +ADADADABABABA9A9A9B1B1B1C6C6C6DCDCDCF1F1F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3E2E2E2D0D0D0BEBEBEB2B2B2ACACAC +A6A6A6A0A0A09C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9F9F9FA0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0 +B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4 +B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6 +B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9 +B9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7 +B6B6B6B6B6B6B5B5B5B5B5B5B4B4B4B4B4B4B3B3B3B3B3B3B2B2B2B0B0B0B0B0B0AFAFAFB0B0B0 +B3B3B3B7B7B7BABABAC2C2C2D2D2D2E4E4E4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7EBEBEBDEDEDED2D2D2C6C6C6BBBBBB +B0B0B0A4A4A49D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9F9F9FA0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAFAFAF +AFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3 +B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5 +B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9 +B9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6 +B5B5B5B5B5B5B4B4B4B4B4B4B3B3B3B3B3B3B2B2B2B2B2B2B1B1B1AFAFAFAFAFAFAEAEAEB3B3B3 +BBBBBBC3C3C3CCCCCCD5D5D5E0E0E0ECECECF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF3F3F3EDEDEDE6E6E6DADADAC9C9C9 +B8B8B8A7A7A79E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAEAEAE +AEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2 +B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4 +B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9 +B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B5B5B5 +B4B4B4B4B4B4B3B3B3B3B3B3B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0AEAEAEADADADACACACB4B4B4 +C2C2C2D0D0D0DEDEDEE8E8E8EEEEEEF4F4F4FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFCFCFCFBFBFBEEEEEED8D8D8 +C3C3C3ADADAD9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5 +A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABABABABACACACACACACACACACACACACACACACACACACACACACACACACADADAD +ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADAEAEAE +AEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2 +B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4 +B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9BABABABABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9 +B8B8B8B8B8B8B7B7B7B6B6B6B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4B4B4B4 +B3B3B3B3B3B3B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFADADADACACACABABABB7B7B7 +C9C9C9DCDCDCF0F0F0FBFBFBFCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5E2E2E2 +D0D0D0BDBDBDB0B0B0AAAAAAA4A4A4A0A0A09B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C +9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9 +AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACADADAD +ADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1 +B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9 +B9B9B9BABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8 +B7B7B7B7B7B7B6B6B6B5B5B5B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3 +B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAEAEAEB1B1B1B2B2B2B6B6B6B9B9B9C4C4C4 +D5D5D5E5E5E5F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8EAEAEA +DEDEDED1D1D1C5C5C5B9B9B9AFAFAFA5A5A59C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C +9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9 +AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACAC +ACACACADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0 +B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9 +B9B9B9BABABABABABABABABABABABAB9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B7B7B7B7B7B7 +B6B6B6B6B6B6B5B5B5B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B2B2B2B2B2B2B2B2B2B2B2B2 +B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAEAEAEADADADADADADB3B3B3BABABAC2C2C2CCCCCCD6D6D6 +E1E1E1EDEDEDF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF3F3F3 +ECECECE4E4E4DADADAC9C9C9B9B9B9A9A9A99D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACABABABABABABABABABABABABABABABABABABABABABABABABABABAB +ABABABACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAF +AFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3 +B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8 +B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6 +B5B5B5B5B5B5B4B4B4B3B3B3B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B1B1B1B1B1B1 +B0B0B0B0B0B0AFAFAFAFAFAFAEAEAEADADADACACACABABABB5B5B5C2C2C2D0D0D0DEDEDEE7E7E7 +EEEEEEF5F5F5FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFC +FAFAFAF9F9F9EFEFEFD8D8D8C2C2C2AEAEAE9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4 +A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9 +AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABABABABABABABABABABABABABACACAC +ACACACACACACACACACACACACABABABABABABABABABABABABABABABABABABABABABABABABABABAB +ABABABACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAF +AFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3 +B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8 +B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B6B6B6B6B6B6 +B5B5B5B5B5B5B4B4B4B3B3B3B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0 +AFAFAFAFAFAFAEAEAEAEAEAEADADADACACACABABABAAAAAAB7B7B7C9C9C9DDDDDDF1F1F1F9F9F9 +FBFBFBFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF5F5F5DDDDDDC6C6C6AFAFAF9E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAB +ABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADAEAEAEAEAEAE +AEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2 +B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7 +B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B5B5B5B5B5B5 +B4B4B4B4B4B4B3B3B3B2B2B2B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAFAFAF +AEAEAEAEAEAEADADADADADADACACACABABABAAAAAAA9A9A9B7B7B7CBCBCBE0E0E0F6F6F6FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF5F5F5DDDDDDC6C6C6B0B0B09F9F9F9E9E9E9D9D9D9C9C9C9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3 +A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8 +A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABABAB +ABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACACACACADADADADADAD +ADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2 +B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B4B4B4B4B4B4 +B3B3B3B3B3B3B2B2B2B1B1B1B0B0B0B0B0B0AFAFAFAFAFAFAFAFAFAEAEAEAEAEAEAEAEAEAEAEAE +ADADADACACACABABABABABABAAAAAAAAAAAAA9A9A9A8A8A8B6B6B6CBCBCBE0E0E0F6F6F6FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF5F5F5DEDEDEC7C7C7B0B0B0A0A0A09F9F9F9E9E9E9C9C9C9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9AAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACACACACADADADADADAD +ADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1 +B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6 +B6B6B6B7B7B7B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B4B4B4B3B3B3 +B2B2B2B2B2B2B1B1B1B0B0B0AFAFAFAFAFAFAEAEAEAEAEAEAEAEAEADADADADADADADADADADADAD +ACACACABABABAAAAAAAAAAAAA9A9A9A9A9A9A8A8A8A8A8A8B6B6B6CBCBCBE0E0E0F6F6F6FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF5F5F5DEDEDEC7C7C7B2B2B2A1A1A1A0A0A09F9F9F9D9D9D9C9C9C9C9C9C9B9B9B +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7 +A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACACACACAC +ACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1 +B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6 +B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B3B3B3B2B2B2 +B1B1B1B1B1B1B0B0B0AFAFAFAEAEAEAEAEAEADADADADADADADADADACACACACACACACACACACACAC +ABABABAAAAAAA9A9A9A9A9A9A8A8A8A8A8A8A7A7A7A7A7A7B5B5B5CBCBCBE0E0E0F6F6F6FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF6F6F6E4E4E4D1D1D1BEBEBEAEAEAEA9A9A9A6A6A6A1A1A19D9D9D9D9D9D9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABABABABAB +ABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0 +B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5 +B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4B4B4B4B3B3B3B3B3B3B2B2B2B1B1B1 +B0B0B0B0B0B0AFAFAFAEAEAEADADADADADADACACACACACACACACACABABABABABABABABABABABAB +AAAAAAA9A9A9A8A8A8A8A8A8AAAAAAADADADAFAFAFB3B3B3BFBFBFD2D2D2E5E5E5F7F7F7FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF8F8F8EBEBEBDDDDDDD0D0D0C3C3C3B9B9B9B0B0B0A6A6A69E9E9E9E9E9E9D9D9D +9C9C9C9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6 +A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAA +AAAAAAAAAAAAABABABABABABACACACADADADAEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0 +B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3B2B2B2B2B2B2B1B1B1B0B0B0 +AFAFAFAFAFAFAEAEAEADADADACACACACACACABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAA +A9A9A9A8A8A8A8A8A8A8A8A8AEAEAEB7B7B7BDBDBDC6C6C6D1D1D1DFDFDFECECECF9F9F9FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFCFCFCF3F3F3EAEAEAE1E1E1D7D7D7C9C9C9BABABAABABAB9F9F9F9E9E9E9D9D9D +9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5 +A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAA +AAAAAAAAAAAAABABABABABABACACACACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4 +B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAEAEAE +ADADADADADADACACACABABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A8A8A8A8A8A8 +A8A8A8A8A8A8A7A7A7A7A7A7B2B2B2BFBFBFCCCCCCDADADAE3E3E3EBEBEBF3F3F3FCFCFCFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F4F4F4ECECECD8D8D8C4C4C4B0B0B0A0A0A09F9F9F9E9E9E +9D9D9D9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5 +A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9 +A9A9A9A9A9A9AAAAAAAAAAAAABABABACACACADADADADADADAEAEAEAEAEAEAFAFAFAFAFAFAFAFAF +B0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +B3B3B3B2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAFAFAFAEAEAEADADAD +ACACACACACACABABABAAAAAAA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A8A8A8A8A8A8A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A7A7A7B6B6B6C9C9C9DADADAEEEEEEF5F5F5F9F9F9FBFBFBFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E4E4E4D0D0D0BDBDBDACACACA7A7A7A4A4A4 +A1A1A19D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4 +A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8 +A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAABABABACACACACACACADADADADADADAEAEAEAEAEAEAEAEAE +AFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 +B2B2B2B1B1B1B1B1B1B1B1B1B1B1B1B0B0B0B0B0B0AFAFAFAFAFAFAEAEAEAEAEAEADADADACACAC +ABABABABABABAAAAAAA9A9A9A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A6A6A6A6A6A6 +A9A9A9ABABABADADADB0B0B0C0C0C0D3D3D3E5E5E5F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAECECECDDDDDDCFCFCFC1C1C1B7B7B7AFAFAF +A6A6A69E9E9E9D9D9D9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A7A7A7A7A7A7 +A7A7A7A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACADADADADADADADADAD +AEAEAEAEAEAEAFAFAFAFAFAFB0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1 +B1B1B1B0B0B0B0B0B0B0B0B0B0B0B0AFAFAFAFAFAFAEAEAEAEAEAEADADADADADADACACACABABAB +AAAAAAAAAAAAA9A9A9A8A8A8A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6 +ADADADB5B5B5BDBDBDC4C4C4D1D1D1DFDFDFECECECFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF3F3F3EAEAEAE0E0E0D6D6D6C8C8C8BABABA +ACACAC9E9E9E9D9D9D9C9C9C9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9AAAAAAABABABABABABACACACACACACADADADADADADADADAD +AEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0 +B0B0B0AFAFAFAFAFAFAFAFAFAFAFAFAEAEAEAEAEAEADADADADADADACACACACACACABABABAAAAAA +A9A9A9A9A9A9A8A8A8A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6A6A6A6 +B2B2B2BFBFBFCCCCCCD9D9D9E2E2E2EBEBEBF3F3F3FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFAFAFAF7F7F7F3F3F3ECECECD8D8D8C5C5C5 +B1B1B19F9F9F9E9E9E9D9D9D9C9C9C9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A6A6A6A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABACACACACACACACACAC +ADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF +AFAFAFAEAEAEAEAEAEAEAEAEAEAEAEADADADACACACACACACABABABAAAAAAAAAAAAA9A9A9A8A8A8 +A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +B6B6B6C9C9C9DBDBDBEDEDEDF3F3F3F7F7F7FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE5E5E5D1D1D1 +BCBCBCA9A9A9A5A5A5A2A2A29F9F9F9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABAB +ACACACACACACADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE +AEAEAEADADADADADADADADADADADADACACACABABABABABABAAAAAAA9A9A9A9A9A9A8A8A8A7A7A7 +A6A6A6A6A6A6A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A8A8A8AAAAAAABABABADADAD +BFBFBFD3D3D3E8E8E8FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBECECECDDDDDD +CECECEBFBFBFB6B6B6AEAEAEA6A6A69E9E9E9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4 +A5A5A5A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAABABABABABABABABAB +ABABABABABABACACACACACACACACACACACACADADADADADADADADADADADADADADADADADADADADAD +ADADADACACACACACACACACACACACACABABABAAAAAAAAAAAAA9A9A9A8A8A8A8A8A8A7A7A7A6A6A6 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5ADADADB4B4B4BBBBBBC2C2C2 +D0D0D0DFDFDFEDEDEDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF2F2F2E9E9E9 +DFDFDFD5D5D5C8C8C8BABABAACACAC9F9F9F9D9D9D9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3 +A4A4A4A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9AAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACACACACACACACACACACACACAC +ACACACABABABABABABAAAAAAAAAAAAA9A9A9A8A8A8A8A8A8A7A7A7A6A6A6A6A6A6A5A5A5A5A5A5 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4B2B2B2BEBEBECBCBCBD7D7D7 +E1E1E1EAEAEAF4F4F4FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF9F9F9F6F6F6 +F1F1F1EBEBEBD9D9D9C6C6C6B3B3B3A0A0A09E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3 +A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9 +A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABABABABAAAAAAAAAAAAAAAAAA +AAAAAAA9A9A9A9A9A9A9A9A9A9A9A9A8A8A8A7A7A7A7A7A7A6A6A6A5A5A5A5A5A5A4A4A4A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4B7B7B7C9C9C9DADADAECECEC +F2F2F2F6F6F6FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDE7E7E7D2D2D2BDBDBDA7A7A7A3A3A3A1A1A19E9E9E9D9D9D9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2 +A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A9A9A9 +A9A9A9A8A8A8A8A8A8A7A7A7A7A7A7A6A6A6A5A5A5A5A5A5A4A4A4A3A3A3A3A3A3A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A4A4A4A5A5A5A7A7A7A9A9A9BFBFBFD4D4D4E7E7E7FDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDEEEEEEDDDDDDCECECEBEBEBEB4B4B4ADADADA6A6A69D9D9D9C9C9C9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1 +A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7 +A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A9A9A9A8A8A8A8A8A8A8A8A8 +A8A8A8A7A7A7A6A6A6A6A6A6A5A5A5A4A4A4A4A4A4A3A3A3A3A3A3A2A2A2A2A2A2A1A1A1A1A1A1 +A2A2A2A2A2A2A2A2A2A2A2A2A4A4A4AAAAAAB1B1B1B7B7B7BFBFBFCFCFCFDEDEDEEEEEEEFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEF4F4F4E9E9E9DFDFDFD5D5D5C6C6C6B9B9B9ADADAD9F9F9F9D9D9D9C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6 +A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6 +A6A6A6A5A5A5A5A5A5A4A4A4A4A4A4A3A3A3A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0 +A1A1A1A1A1A1A1A1A1A1A1A1A4A4A4B0B0B0BCBCBCC8C8C8D5D5D5E0E0E0EAEAEAF4F4F4FEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F5F5F5F0F0F0EBEBEBD9D9D9C6C6C6B4B4B4A1A1A19E9E9E9D9D9D9C9C9C +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +A0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A3A3A3A3A3A3A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A3A3A3A3A3A3A2A2A2A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F +A0A0A0A0A0A0A0A0A0A0A0A0A4A4A4B5B5B5C7C7C7DADADAEBEBEBF0F0F0F5F5F5F9F9F9FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E7E7D2D2D2BDBDBDA6A6A6A1A1A19F9F9F9E9E9E +9D9D9D9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3 +A3A3A3A2A2A2A1A1A1A1A1A1A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +A0A0A0A1A1A1A1A1A1A2A2A2A7A7A7BCBCBCD2D2D2E8E8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEEEEDCDCDCCDCDCDBCBCBCB4B4B4ACACACA5A5A5 +9E9E9E9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D +9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2 +A2A2A2A1A1A1A0A0A0A0A0A09F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F +A1A1A1A8A8A8AEAEAEB5B5B5BDBDBDCDCDCDDDDDDDEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3E8E8E8DEDEDED3D3D3C6C6C6B9B9B9ACACAC +A0A0A09C9C9C9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C +9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0 +A0A0A09F9F9F9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9F9F9F9F9F9F +A3A3A3AFAFAFBBBBBBC7C7C7D3D3D3DEDEDEE9E9E9F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F3F3F3EEEEEEE8E8E8D9D9D9C6C6C6B3B3B3 +A2A2A29D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B +9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9E9E9E +9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F9F9F9F +A5A5A5B6B6B6C8C8C8D9D9D9E9E9E9EEEEEEF4F4F4F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAEAEAD4D4D4BCBCBC +A5A5A59E9E9E9D9D9D9C9C9C9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0 +A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A09F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B +9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9D9D9D +9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0 +A6A6A6BDBDBDD4D4D4EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDEDEDECCCCCC +BBBBBBB1B1B1ABABABA5A5A59E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C +9C9C9C9B9B9B9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9CA0A0A0A7A7A7ACACACB3B3B3 +BCBCBCCDCDCDDFDFDFF0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5E9E9E9DCDCDC +D1D1D1C4C4C4B9B9B9ADADADA0A0A09B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B +9B9B9B9B9B9B9C9C9C9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9DA3A3A3AFAFAFBABABAC6C6C6 +D1D1D1DDDDDDE9E9E9F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F3F3F3EDEDED +E6E6E6D8D8D8C6C6C6B5B5B5A3A3A39C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9B9B9B9C9C9C9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9E9E9EA6A6A6B7B7B7C8C8C8D9D9D9 +E7E7E7EEEEEEF4F4F4F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFD +FCFCFCEAEAEAD5D5D5BEBEBEA6A6A69C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9FA0A0A0A0A0A0 +A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3 +A3A3A3A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5 +A5A5A5A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3 +A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9B9B9B9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA8A8A8BFBFBFD6D6D6ECECEC +FCFCFCFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF0F0F0DFDFDFCDCDCDBABABAAFAFAFA9A9A9A4A4A49E9E9E9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2 +A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9C9C9C9C9C9C9D9D9DA2A2A2A7A7A7ACACACB2B2B2BCBCBCCECECEDFDFDFF2F2F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF5F5F5E9E9E9DCDCDCCFCFCFC3C3C3B8B8B8ACACACA1A1A19B9B9B9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9F9F9F9F9F9F +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4 +A4A4A4A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2 +A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9C9C9C9D9D9D9D9D9D9E9E9EA5A5A5AFAFAFBABABAC5C5C5D1D1D1DDDDDDE9E9E9F6F6F6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F2F2F2EBEBEBE5E5E5D8D8D8C6C6C6B5B5B5A4A4A49C9C9C9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2 +A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9D9D9D9E9E9E9E9E9E9F9F9FA8A8A8B8B8B8C8C8C8D9D9D9E5E5E5ECECECF3F3F3FAFAFA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFCFCFCFCFCFCFAFAFAEBEBEBD5D5D5BFBFBFA9A9A99C9C9C9B9B9B9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E +9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A2A2A2 +A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9D9D9D9E9E9E9F9F9FA0A0A0ACACACC1C1C1D5D5D5ECECECFAFAFAFCFCFCFDFDFDFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2DFDFDFCDCDCDBABABAAEAEAEA8A8A8A3A3A39D9D9D +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D +9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C +9D9D9DA2A2A2A7A7A7ACACACB1B1B1BCBCBCCECECEE0E0E0F3F3F3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6E9E9E9DBDBDBCECECEC2C2C2B7B7B7ACACACA1A1A1 +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D +9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E +9F9F9FA6A6A6B0B0B0BABABAC5C5C5CFCFCFDDDDDDEAEAEAF6F6F6FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF2F2F2EBEBEBE3E3E3D7D7D7C5C5C5B5B5B5A5A5A5 +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C +9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9C9C9C9D9D9D9E9E9E9F9F9F +A0A0A0ABABABBABABAC9C9C9D9D9D9E4E4E4ECECECF3F3F3FAFAFAFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFCFCFCFAFAFAF9F9F9EBEBEBD5D5D5C0C0C0AAAAAA +9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C +9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9D9D9D9D9D9D9E9E9E9F9F9FA0A0A0 +A1A1A1AFAFAFC3C3C3D7D7D7EDEDEDF9F9F9FAFAFAFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3DFDFDFCDCDCDB9B9B9 +ADADADABABABABABABAAAAAAAAAAAAA6A6A6A2A2A29D9D9D9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9BA0A0A0A5A5A5A9A9A9ADADADAEAEAEAFAFAFB0B0B0 +B1B1B1BDBDBDCFCFCFE1E1E1F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6E8E8E8DBDBDBCDCDCD +C4C4C4C4C4C4C4C4C4C3C3C3C0C0C0B5B5B5ACACACA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9FA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9CA5A5A5AFAFAFB8B8B8C2C2C2C6C6C6C7C7C7C7C7C7 +C8C8C8D0D0D0DDDDDDEAEAEAF8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF2F2F2EAEAEAE1E1E1 +DCDCDCDCDCDCDCDCDCDCDCDCD6D6D6C6C6C6B6B6B6A6A6A69A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9B9B9B9C9C9C9D9D9D9D9D9DABABABBABABAC9C9C9D8D8D8DDDDDDDEDEDEDEDEDE +DEDEDEE3E3E3EBEBEBF3F3F3FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF8F8F8F6F6F6 +F4F4F4F4F4F4F4F4F4F4F4F4EDEDEDD7D7D7C2C2C2ACACAC9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9C9C9C9D9D9D9E9E9E9E9E9EB0B0B0C6C6C6D9D9D9EEEEEEF5F5F5F5F5F5F5F5F5 +F5F5F5F7F7F7F9F9F9FBFBFBFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8E2E2E2CECECEBABABAA8A8A8A4A4A4A1A1A19D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B +9C9C9C9C9C9CA0A0A0A5A5A5A8A8A8ABABABBCBCBCD1D1D1E4E4E4F9F9F9FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAEAEAEADBDBDBCDCDCDBFBFBFB4B4B4ACACACA2A2A29A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9C9C9C +9D9D9D9D9D9DA6A6A6B0B0B0B9B9B9C1C1C1CFCFCFDEDEDEECECECFBFBFBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCF3F3F3E9E9E9DFDFDFD6D6D6C7C7C7B7B7B7A8A8A89A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9C9C9C +9D9D9D9E9E9EACACACBABABAC9C9C9D8D8D8E2E2E2EBEBEBF3F3F3FCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBFBFBF7F7F7F4F4F4EDEDEDD8D8D8C3C3C3AEAEAE9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9C9C9C9C9C9C9D9D9D +9E9E9E9F9F9FB2B2B2C6C6C6DADADAEDEDEDF5F5F5F8F8F8FBFBFBFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE4E4E4D0D0D0B9B9B9A6A6A6 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A2A2A2A0A0A09E9E9E9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9E9E9EA0A0A0A2A2A2A5A5A5A5A5A5A6A6A6A6A6A6A7A7A7A7A7A7A8A8A8 +A9A9A9AAAAAABDBDBDD2D2D2E7E7E7FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCEBEBEBDCDCDCCCCCCCBEBEBE +BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB6B6B6ADADADA5A5A59C9C9C9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9C9C9CA5A5A5AEAEAEB6B6B6BDBDBDBDBDBDBEBEBEBFBFBFBFBFBFBFBFBFC0C0C0 +C1C1C1C1C1C1CFCFCFDEDEDEEDEDEDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF2F2F2E9E9E9E0E0E0D7D7D7 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6C9C9C9BBBBBBACACAC9D9D9D9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9E9E9EACACACBBBBBBC9C9C9D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8E2E2E2EAEAEAF4F4F4FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF7F7F7F3F3F3EFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDDDDDDC8C8C8B3B3B39E9E9E9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9F9F9FB3B3B3C8C8C8DCDCDCEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFF0F0F0F4F4F4F7F7F7FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEBEBD5D5D5BFBFBFA8A8A8A2A2A2 +A2A2A2A2A2A2A2A2A2A1A1A19F9F9F9D9D9D9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9D9D9D9F9F9FA1A1A1A2A2A2A2A2A2 +A2A2A2A2A2A2A7A7A7BEBEBED5D5D5EBEBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0DFDFDFD0D0D0BFBFBFBBBBBB +BBBBBBBBBBBBBBBBBBB5B5B5AEAEAEA6A6A69E9E9E9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9E9E9EA5A5A5ADADADB5B5B5BBBBBBBBBBBB +BBBBBBBBBBBBBEBEBECFCFCFE0E0E0F0F0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6EBEBEBE0E0E0D7D7D7D4D4D4 +D4D4D4D4D4D4D4D4D4CBCBCBBDBDBDAFAFAFA1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA0A0A0AEAEAEBCBCBCCBCBCBD4D4D4D4D4D4 +D4D4D4D4D4D4D6D6D6E0E0E0ECECECF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAF7F7F7F2F2F2EDEDEDECECEC +ECECECECECECECECECDFDFDFCCCCCCB8B8B8A5A5A59A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA3A3A3B6B6B6CBCBCBDFDFDFECECECECECEC +ECECECECECECEDEDEDF2F2F2F7F7F7FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF0F0F0DADADAC4C4C4ADADADA1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A09F9F9F9E9E9E9C9C9C9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9D9D9D9D9D9D9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAAAAAAC1C1C1D8D8D8F0F0F0FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF3F3F3E3E3E3D3D3D3C2C2C2B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B7B7B7B0B0B0A9A9A9A2A2A29B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9AA1A1A1A8A8A8AFAFAFB6B6B6B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8C0C0C0D1D1D1E3E3E3F3F3F3FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF7F7F7EDEDEDE2E2E2D7D7D7D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1CECECEC2C2C2B6B6B6A8A8A89C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9AA6A6A6B4B4B4C0C0C0CECECED0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D6D6D6E1E1E1ECECECF7F7F7FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBF7F7F7F1F1F1ECECECE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E6E6E6D3D3D3C1C1C1ADADAD9D9D9D9D9D9D9D9D9D +9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9AABABABBFBFBFD2D2D2E6E6E6E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EBEBEBF1F1F1F7F7F7FBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAE3E3E3CDCDCDB6B6B6A2A2A2A1A1A1A1A1A1 +A1A1A1A1A1A1A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A09F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9DB2B2B2CACACAE2E2E2FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBEAEAEAD9D9D9C9C9C9B9B9B9B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6 +B5B5B5B5B5B5B5B5B5B5B5B5C6C6C6D8D8D8EAEAEAFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDF1F1F1E6E6E6DBDBDBD1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CECECECECECECECECECECECED9D9D9E5E5E5F1F1F1FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF8F8F8F2F2F2EDEDEDE8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7ECECECF2F2F2F8F8F8FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/doc/img/swallow2final.png b/doc/img/swallow2final.png new file mode 100644 index 0000000000000000000000000000000000000000..d90df3e5bd179ebeac97688bf4c5dd8b597d0a35 GIT binary patch literal 16796 zcmb`vWl&sQ6D>Re26wmMGDz@X!GgO64ek=$J%hWuy9NmE4ue|=?he7-;hX3E>i)UE z@2;Y#nmTjNp1r$QcduUigexmbp&=6^0{{Rt8EJ7<0N?`?^iLcS2Kvc`Y3vW^KUil` znQw@Qh$~x4n*aa>Kt}xQH;=5-Y|m9wP3?nR=hWqmPxkbk#fdH%K{P?Mm~}`*lpg}9 zcn4I(m51Vc&0Io^gnsgla^wa24cr#S6a*Ad^;1#v<|QD}`~t(liRO(+x?3FkZ8Wdz zoV!h?3+FT|PI@=Dsk=5;-1{8i-dDBV=j`QdcuqPu$?0Fb9Efs&%u>wQClN74e>$TB zqSzsPWK#L@A1{;yvK{fsbuSq87AhMn@=3CsFFQrq7YJn(jiZ)gCP1*8#DEWzM3!*8 zKdWu{gTlUAs`3K>=)b9%&|LDVv=u#sDw5*#G*w1J0`u(%8?EQulSSD}qckZ@4ADZP zocp#02|l*`yI2NRR=vvI4z=|oG=BB2$ z#<}&?RbJPB`3PhlaqNnSn9+F(J6St|%6`ym_}xzW<{BG|H7Xa5ZSCF9+RxW<=oLMy zc`hsqmwx`07%o3xALXjAu(4Wqmuxv`sUEtuE-pyy$&DN(lc9@y&;Xf?6YFHv_gDQ} z$$cGgPOZ#RF^uArJBV&xb1tyyuXdw5$l}SEIL>`NxxM`?OH>@it~86P zx8S0;viigSscGe@Gp7WL%W=EHtJCeYap82sAN^p}eGUSFoHqM6EgTvQCMzYMP>xMHMJrCmt`OaYwnB|GQd-Hc5d@V}NT`LxP$=_J4X#cyzV zQtd1ofdfqEI-FRJPc@mTKw?5)MADy|=1; zw+)rGBWci)oAO?dZuA-?)~P=5sFq{66<8>&K5l9By6r0@$Pw@yZTh%%?udTt^$H=e z*VVCGPTBK9zZH0_@GA7{1xj^4ui?b(037 zAy0{$-{_#F+jgF~+iCDkbHgnF#v!JQw0l3p0%m%vXCJ%p3~$@B+DfCkb$?XJ?@D8m zuO|kr<0+%kB^wo?Uxgs{oNrS6*rx47W$J7>s!@Er)Rek!u{*k z)GH)as}Y+KV^ZsQku#>z`e|=Up!-V6fN0i=3we}?cqr#SQP^Q;HkM46V{IK$e(tlk zbN()Du)6E4{Ig^XG&nxMFzrY>`FQ`aBDWvm?2Zl~Fz>E}u{w758Sw-9#c8xrWdXT< zg>q$mck5kW|7~mzF%00~Wz`vD!Md^6Fw9nU#zYqCnOq9gK`qsqH9Y9K-VeLsi9rsN zTbsSGRp!oYgfKl-&3?<*0(?SQ*Ch5n)yHky6(fH}iSShGLRsiV0KBfu7Kh3ZPc{J7K?6&)a`uxla+_dC&l7I+N3mAnKsQWUt0Eri84!H8J6K~s(C^%^#tkVpbVhFWY!|%ce>MN{ zH^Mm1BLV84Q}&<;1i)PTl@ZjMBgcn1@k@i`^RL9R&kjEpR$6s=#&wGAB&~c`sne8D zAyiBrk_-ngOBR|(zb6C{0A%%#=j*q_Q^KCFSH8D9-|xk<>T~jX{(RD(G@qMJG2P8yynu$Cs}h~j zbzZ{r2Ei~eY_RtnJKpeLwbQ#_-grqb{if*u;@|aVPtH$_Z83THgjVCVho;2uWZ75( zZuH#Hw0rb<9=_LozPZ-ysKR-F3h(w@5EevKpKzPE_nBj|YdIMP&t*&^Sda<4E%`t6 zgq|;RF&d4KMtQ?shf5ZI08DO4qqVFZ+UD3l*~Rv&mKsY22oZUm;Tb!7#IYBQrDWwl69dvzq8 zx(3|>40%a)QfP%f09ai~OJ^({CQYb>1H$uV3#{6zO=4qIKD)?P`R!Q=Uq5MXI9!6^ z9YdZ*BRn$N;dz(hK6X61+WYM_5}a0|wl#Q8(z3oRExZnmRi>PJ78(jjE*g6G@bz5P zj^G`02Jg5{fz{;IY&i6xS=5D|~dc zdTV{m6wlv>B-XsG;3{kwNbDsG#{#8zxqLAx8JL&foAGw7yFyy%+GX&6oSQ-$j+ui~yop{}f4!{qKPqva z^6stlyDlLY_FO0xzT5KeIQ=>{ZFFtpE;K&*<$ijPfXnXOz%xe@kt^5Xk#FvwcvE zO-6H_b)djazVOqbZ`3!)K@Fnoo>0G$PUIA-EV#XexE(w@U%$+ z1y*qA$FR93J-1tfFnL|B-ydEx2a#+Js;wJ_$c5E8f7!oIth~>D)D(P&_+Mw)#FBX} zUmN%i-s|3$+CNvVOkK>nuQ@)^hGLL=6D>=l%646booBN;ww*B z={q#WpaCbw(#w-mYOd_V6ZZ@<|7 z*Gf=B;+{=P0^%gP)O6~Nf`N$4l0T*jd%Y)j-(D4t5evNBpFa)5R$B!ea19Nn$E^n% z_~YjIu%tytK)AbKv&n?*TWhMmU*~eN93;%_v6{Q z<1l&GYjb~aDB1#Ano+v%Z4WGRucO9n`sH%o$KCz5BZa+d9gjFD0mS9&E6zU;d%&1= zjdS|?c8-%=3M8oT%a$=j+&oK&q78P>GKm2_^V#n&!HIWe18%YIyj!|4 z9}qrz-TUqPlXt(Kziqz|yls>CZ8JiYk?*Pogn4kUjW zo{!Xbd#ulS&AR65>+(Go^z9>T-8HLu1j~`U{QczrJmvm9)Ziv@s$B$uJga_fKHWKB zFxE228Qxf016FjgMFh<0*nJpPLEJ;=QRKSY=L^V!)%J(N<8ojoSsXoG`1Nm-4{m)Q z9NKL@Fykmtn`){O9%L<(0TBA9eKTa=5cgx*cdUZqR(KZop22Da0OH%Z_nXzR+(W@# z!I$CSD&HE<_2lH)jStKF0Nt83FXGbJ4+k&f>9Z5&+3b>tvs@*|8NWni-El1mAttec zAqj~!f4KViRvm}3yB<7p#`reX6E%FloT1@!O$xy5*6x%(%n_ugc0O#7zU|X1TIn4A zCU8_D_YX4gMAeC&Xn)%xKR;Dv)11_HoNV}D8Yph`TE39IA^4V!Q`*k`(aw$ZCvjSI z1$@R?PTT8bbf%raGc<1%cmlKf?&Zt9ug$Wwzp299WH$SD4uKQ*`VlIEdcvoCc5!k& z2U>QIguQki(K-g#+*c=%*_0L{Cqc8fd?U+2~%_>bsd@!9R*qF&NfU`-OX!|4DIYy z3XJAH{VhFg3*j{XjS;}kO^E(k^eM16os%R{F)V(Kv(%^Wm0PBo@8S#5Q=RuI1TXg_^Q@jrtewYZ<0cvTdG{nwJ-U)E~;9y{Of zpEsU-pIQBvj^B69ewtr_yWcMsLh_E_gs;x+pRT?LVPPF0S?RsYb-OpB%`t9eWq0iry5EC)AZMm@9&pzq55z$>yUpa* zKfL%cMW0Kpp4+pQA7brt^E#z|#(k>jJg(iJY?#bOV%Y^hle>_HvhTO%)CWesAGDI~ ztTyS9&Qc%JVZ(@!`E0hw?65<;I_*klm)6f*__GyDSB_lT*2ql8U5{Sx1%Gqiav=qA zLL79mZfdNp^Q`VJ@86cczdv!_3pCgUTCvr1dtRNjlbvu-T(rcAkoz4AzVCeUcYR)? zZ(<%ry64B(ct%`X!%*Z}YkQwHc$pMi;Vw>6ZNEPB&3)V??|NkIHnS1=d3=-q-OhL5 z`fxtmfM25Vv|af5qwLXz&HKX~`pi#D;?DQLbB`(84WA!c+Fx9@fEG6Mcjew)Z)+cB z8>7F!Kdil9RiUjM=brJ3Ob+`yt#!V?cE8PcKfW}RA9?;g6>xb;aqoVuBKJjf`RNFz zn*eoQ7Lh+~F){jF6yN(k=#O>Y7eb9cXDp`U22Ycl>_OQw>%&hKh~z7@`iHm?cVw~4 zGOVp-oaHXM4KFVGW0hq;+gkik z)-67U^aeg3-}0}^izj1>G6;HJCE2bl?-YC__nykP%d?x8FRXwCu*J5zl=@(bhLs%k z+)@i)#29#w7@f}Czc%x{=FZB~XQ}RcQVU06_OCiB?EchE6idg>5)hLqCtoqB9H6ms~dPxb+W|lY0Eg^eF8_@#}fUr0wlru6c-v&Yh zrW*kzs$@D995o^<8t0+IPT%MRUtI7yuN0t$smv@E+e4Hw^(ojOi8cm*%+{#kgf zSr91v^SqmB@Lsx62SS*bW-9#53I5NFouv!rWP;*Yc>FAmvzVT5k4dsk%r zTQm1Zxl>xJ2{K}|ZpvjWJWKJNESpaKnuX&LZcKoKF|pynavAHlE^F`hSvz;Pm7eT( zuA_>-Mv})T#r(<^$L;QKuerVtLa~y@3?ymPvS3eY+(oGSWyi$faKCSV zknzh$M)e~q7Rep2n5!tUvOZXRQ9;hayE(j=y^k5#WCyT8Li+P}c#~8&s$T4EB5CzZ zBp8a5+Nzm;U1}w5q#?_K>-z|uNr&owZ8=CYpnaC5(59T^V~leqo4dLpYAcsvv1%B{ z#BB0m-iXEw@S_HR#`sX6UlL_#v?bZVIpIZ*V1$&z0#1NtQG+}jfgI=o0qMgYA$^2_ zD#ErMXam2w6mSqY;X8-^n-_%8t+HXocBLt?#aWc?Qd9ve_YpbgXO%M6<8z_J3~StZW`{^xr*!_jIB0)3{zNc*xxFc8S_v3ybrWNwq#DU1-_V{?9WndKh zEEf``Y>BuUXq`I^EGOvq?;;2l6@;+A>1T~AG9aU53$xppnK2Up z2nsxKw%T=mdVO=?ZLlQ?y)rEyxasQofs86>6rsc?(RFUN7eps;<9$Qui@zg$btcYm>pDj*qckAI;@uJV_x*TmLNu3`~WAQ zjJZmMVs-yCrkRX9)>hiNV_U5KAB-l}i&-|*$yVYKK(PqnQqPt{OXq*%Q$%A8cz_V+ zQ#DNmVg%!jX;>4OgPqJg34PEvz#Rgs4VH09+ilVnMVBz8VEnCGjw$M*r-{>hUj|bP z3LA+F>@{Q~G!)}%kf+WkmXiZ_Rr(~z3E6)kJV=xOsRexM%DQRl`hr3NvgrDq*qe5a zbyp4J$WaQl7Tf!0-?6&gw`2;HV4;U&arW@GDuHu83t)(s-K9+0p{C>ald9fJR2reY zVAEJe%u+QBcv#({P{AzYL9gG_QORb9sWi1{sMgH;N*hY~?tyR`gQY!&vnulO;kisW z$tpr0p5a1}gJuwg+{VQvT)|6)$h%o9O@f4|P0h{Ton$d$!<>2n;_2C&H8_LfVY1^` z$yEkrXyZEIZ7oatAJ_>m5zW{m1NaEsvPKwF7y1rB<0)Rh(G8OYls5lYKXT(|46#N6 z=2saSEazk;Lq3qQDV8{B8bKO9n&x-t*WojCts7Jc9Nf~7DW`W&(_Xw`!hZY`+m*%r z-k~E;C=`oruueS;U&YPQDuK`#r%NG(6zU|1g)B_DFgR|8beiZI@zuwpkrIZxs7fxC zttP#AVct|*+k#nbGLqT*E%MyF4$NfSL>9k%Xobigxg1;LG{DHXP@kkJY$|(D&Ednv z5x2bld}CV6ukx!JHNrtf+X1+}4UGcLjg7RD#254i_8vlTpZEKlZ4670lVr+78bXad z&lU&h1itcaiGrOL%3l8B#{$3Qfj}VPn|rU$bq8J=EDffIpT0nTqwrW^bnFH&?Ki^< zl3cVbtXvCe#NJCJy#)!D@CXVcr~NSCHwqSGk&T*-^TO^_yZrQk+HIK_W{HjL*@%i4 zdSr?+nGK6JFmhrfYzUj|{&u*-2fQ$pM`iE+EeBrGCof$eT1kN!!bA>NhFF#Osj~@V zSfgg6-0G-=-)>(mBXNcIie-+dPAJ{t65_=`q=OR1(C)o)Im?hWeuc=g%b*S_m`9d%_6I$ONEm z7)uxoLvdhl-pZ++t?kzOoX`d<>Fl~PHNE)8Gd zPvqX8tqO>CBw%QwZr9ADlfzEKuo|%&w}zMaYwBANPO+!iQ+XB8eHa!mKnx50s)7es`NCh~`^aTR` zrW9RpelRPctfXmX)l3k)0*rSx?aaDMdE7xv!jF=j-Ki`F%ub;jz?W>rnuU7X?@>}n z0T_$)6)(oWq%kg&_6WMa>SwDGvHK$rUhm zqyc>D_B4(1I zZ9(EZU!9{`j8UC{QU$)Pn}O&}(tAg|&i8o-V&I4QuBxg}y04qZ?>Fjxi8{g?>TH^y zEs-eyFs`RL2c(~Wks_N!b8~-Q1_s6P>2a&L0bu}kZcVkdj!!pMkFQ@MJVS#T-v?`Y zo0`w3^3Zm(ru0(fiSUN`-1Qc&1y*e^hh7K9Ug5f;a{fL^EcH)63`nJ&tapps(E&T# zcMU@PBx$=HcID%Q#R^Z=^vYoN#(cGLUv{%1Uzw#(R8Q(uRDs(mSG?NaThpVEZWa%p{TzK)hb!>3(iP#5_DY3j;ob*nKu zVui{ZlG}>N2Dn2zGcK!!Kha)YakM}rDgEO0_g?t3f=CcO_xu@cbA*XtC!w^J`~27|T}qTBi!Bpo&vT@Ana0BSCIu+!t-Cy>`NFUr*vWBKQ}oNuNE>QNQ9IiZI}N`j4)a;Tpm-O zO4<#3lwZpLAGmD;;m@9gwtVO3@w?Q_3Qpn2Mxwac{*j~$TEY(2*60Dir08AlU7;D%tWgn2gOXj`>0` zRaNusTmQMtWFqqQUG|NAkoS8*r7>Pb93`l7T>I0^UUS7fIY^t$m3f+J}aFPasxP+LB!d+z*)=7z8=|!WElMQ^rVq z3M!x+m4YS2S>v>ktu?SDib$2W^eOR^&i|9~4P2LholGfY?ekPow0ZD12+~Bujfpja zt4-4^(aI$syQH2&i#r%A8HC@$93ZV2m7hta>zMq5kzU>KqKOkbF=g{Lk%>(P)l7|# zn?r`8{aJHYc8Fe7NT)05d!#S(AQR?Y6j~5sI&i`L+4@HL8UNNI3QayO$S|l77x4pw zVyZ+vHPh(*vMpbebh*AnS~E;7V;@1GPD=1GAW?v?b^U5>+8tmer^9WmLVvM#og<#i z>`xwbs^u7x;QCcb4%~ZymkcSd?AYY1!^LuR_B0JhGDkC7hax57N>eSY9A0aAy(jOPG^iKI*4MfpG;#m;|<0p=Y^&&S`Bh!L_v_rbfAoF-u%KW*w zvY9KQ#;Fnb?J+WL9v)~WdM29N24f;kHJNp6_*LFs{OZfDJ#1lhHfTA&S>g5TgHFE6 zSCp@#%VS34Z1liw;xJB&$<5_%7Y22E-f%(^(lK$#Db4nSnjTzNjwXY@QdfCm*8>E) zhc1Xh8T^U;J-!V410WyV@1^1lY`G%7l>5`%m#z`;J8=vsl|4b}THkg!lR)pkMM%;Z z@+X$lrt3YldRfvpi<;!MwSbchNV#6n;G6=pBclgzf|q9XiRec3I*A+vOi5RLY>xBw zrYuyPq1bLx(c`GVBNnBMP9*f1;7({6qWvOHKJu6QH>&Mb8d>=RJAbac$_j*GZR zTi{^LZ9q7Y_?8h|Am&-|3)2B9L4134WagI<@6A%V5M(G&^P=Fo?|eiL{dYPWK_jmz z0kzy48ZcMy~Vd~gTl(NUOkArv-ge7dc4EzLI zx-(YT^$lp$IJKt5B7ZYI7!Lm4U%GD7)`DgJ$?@f=4JoKl_^iTRf`r+&a8jk{cHPZN zWB#G2kAJu#6uZ&@N%N1>X3YM!L`GfioEB<0*~Dtc3&~-KL2+p?N8%5q5f7&iM}vd% zD^#E8)MvzPCt+mNz=u~`OmP&a(Dgmrr_ay`wTGyu7p2HIGF;UAWz#< zSY~2&Puq(WQOK$hBw9tkL{?!XPY^300KC?C72qh}P__7p_CRefZYaX+x4a$RS3iGm zZ)ooQzq*cjEJGUnmHvwoLb*r)o`d9lEC$uT2AWhUB*TJzNYO~Fik?oufWGgLBO+y6 zb!G_?w7gDM0rSGQw6=Oe(~rMo=r$#UL84d^lC;rKQgSeS*|Z@zDsKCvs9fX+(@suD z%#OTE)s*M8FKbMq$4|_CxDa?;R2T-MD)wMoW+O&((|_{PX9%N$WfY&%hZfL~K2K&~ zha2CGYJza3J*B7vAQcYAt2Ee`5RN);n1jXLU14cntFZd4TrUwM-{mDFTczTFy8nnL zTzl9+GQ%XLv$+rT_PVI+59M>VR@k9Fj_}GQ{RtG8h_(t0fueNd19=dv3&@Z09Yy zQ|aF)bTe4IVmbsMzMK*Acme-NK#&@(*bso8qkE6C<;G6c-~JC3OS7GixiAVaf}U2Y z1*FYLQU>~%f0bEwiUw|M-B!Bn>q*e+)5Z&v>1){9?y0TcH?HFl`kwf=rPrD69~=rA z)u2>z$0Ry_`!w^FnK@fh+RlT^p0Y?_2?JS}x?$f>A9uuTj(;Q=sEkCV;i41=rG^?n z{+PfoSWpVguG!H-zmZNk9(F{|UlbS=bO2##QNOA@ohYMZ!t8xLwHt+lmAD@{AR zEwdL<&FUxGSDJ=SoS+6N#2KzCohocmbKQzBl`xL(PteiX5N8Oiy%+b`25 zMKqHxPO7y*`9z1$3|!&{hlx7%F3#VBat59z%6c{<%Lk=>FX)6whTZ!m4M|b^(;UmI zbx88HOhwiI;cymx<5V0nj*&EF2OYGJz{Daz5=R#|apBo4VRv?9j7eaG#2D?q$mKq| zFqgpKT`O8rI~SzT!$E%R?kEHCxBu=!nTn75V<;P?KFL%z1>@fHU_~j*h8@_ekD-ig z`G_(-Kb4ZK$;%noc-_+Ji%%0S1#=!IU#DjS=xMS{FujZt!pt(#omGkgvDgVM% zPAGjou|8%NXmJU%`Du|t=6Wx8K#4KKtbohLw<6nxvL8rINPD@eRwqDOg4vc}nH1)U zu>aZjcp_TXvJXQXVItlhf;l@f`NkMFto({4D)C&JG>L5DAof9TQmU zsU6oh8v161B(-~wi(}@o^|(`CaCyhwOqcw>`|X;-`Zl7UR7X(!3W$0V!rgzShjFSgBI|m%c*cAgm%DnOv%#;7GOkv zWWFX9Znmm4rvD~90`mk8D2T#98n2Z0b4rlAviS2b-hNJhvDCvH0QErVqqBY(`q<|i zM%eY&3Nz5r9wL+^cYaO8<{!p?!7CK|7uBF19 z2a{L{(mH{l4-CGvu@zau9#rFJ4#SsVZ^JMuOD^>UF*^jSI*k_hgu^9vOqXqcPAOw% zj3p-=#T6SkdIEv3tGTuKPbYUU(B>1p4O*W8;{~}R9o!vF#hE=odM-j0`IecpXnu`s{phQX7uI- zUK_(EHrV^RVW>8OarVV|QL1}9wmBXDAt}pbH9ROsRPiQ&*lf=2e!-Ob@#7$|B3x-0 zN+Lxvat-3|@zJiKLhs)jIE`5v^V4UA;Uq^X;;TYQ@tmM7EJ5Z&LM=cqi3)67M*VQ? zf;`TN2mOJwdnaV+D2)BdXsC!BW#bJEZK1dzoLqP9#ZW#~`wkfT2~usO{FU#?+Td*s zq0VA0QDkL`+}|}+TY~ib8Ut|>C6{cG1TUx|X~8g#)XH@1@f3rvV%@n(g4VEOVu#lx z?UsR36*o_LzzCXB0$c4(lr%9HR9L#sn@sMHb3yntAj{ z$h_|V77^qZs7*)H|6GcU+Uco-p~9fd&hvoWY0oZeIV<=L-21)QY`TO32vo#+{+mer zOD&O{$;kwnWS9`;te9yssT=8yxI$zGt>4`p0*ACtdGp4ZLTd)=PU*y%EXgpHx6mw7 zviO&};cp)ea#jWisQ8sF0kdS}2&4+`g~MI+ZD!+V;7n&^D|5SKAZZBVX3K}MVC7~2 zu{8weU9ivVif5B{1W9Gi@4gBK3$Pl1@#{x+cZ<~Vo{~5tKSZ@&pNv+$OL_ZKX#UD*~qQ zxXp+#ql73#rDlOCIimWw-gNjE@-L0bDvd~IJ3>ilD+#LD_1m}>kUffWXFI|HH>l<&{x#)TUql4cg6kVAcYcST*T&c-4~mP`=YwZh5_udW{5a~)iCPGi$r493wt~q9HIh0u~_bv7?ht*b^srmhDTqj-X*%U;gEbD=imDY`rc^H{Ab#M@-Q7~Hn zw5#vG!7)w<&5ef2P^*L_maG%d=}0}3?cZIXDL30Uu&9%Xpon8WsSL|!DYX&g&tz#Z zy8k93)44x(Fg};jq6wN?k{Czd6@37957?!pp{E_eY~wVEdggsXHbTw z%yp95eJ6Bkh7tXFf72}KsnN?6HZ^)Rc$Dmz~t~xx#Tyv?#`(&3OS1k zrGRB*dxp{6!VTzTB`>_6bBRp4f`elXJF9L*gx7)~a~wXp$C3Xvl5s#KRZ8OXqc}O% zh~YJd^@Sib=fGPP)6b5W!OXVxs~Cv3&;rtDBt?(RzwtL z8Ixr@_3gPc+p5)MiA_PSS$qgpB0J)aa_(od5hbE=pD|Q%R+d zT6f7n?WDm2jv8Nod^pRq%CO3~_3E6l{A=B)Q>9VW*57}+GfuNv!!e$81=m~-BWm(L(d^bY(r$Ulud!bNO%#luO=)8MQ! zI?w{kWTgl&h>`9S7;X4eDU+>qq+Sb1f_ry1X?qi|v9?H=eg_53FY&<I4riUX-Cg zS@s;#Vv&=Jft*2|s(I^12m3zlKX?)$$UnFm@tSFgP`#1}I zI;Llhe^5-GRV*Ag>Yxd$k-{d8$bxyf!@QSw6uY3+PG{n|0Eb49RbxToVo=r)EIn2D zHD5MbkQJUZRF%LOEotKENi+ng{lu>avooR$ZmAU_TWNw;los-VtjF}WsRYKU=BQje zL`l(U>%YQr30|oxiEWJIjb)?H6;bAE-FIRU*$BCzYqmHX&7+=9`G54qb1QmVy6R`|In2~ErqgYEynyCV4Eb@>! zEY;!Lzjd(& z(u+5WI%1KW6>bV3DyfNjgtmr4Q=- zODe6HM1F{)`a=8lG~D%PTQyInf-XYZnOmO8h_^V|+Unk(nJAREgoeKVbv`|EN@ewt z(qHpUzww1+)NLYN((kM{L0x;sl8YGa=GCcs0!7)dQ=i~@#l&ofcd{r^bhQ6(6U!TE zjz@iZ8rkHoY4$0n&KnK9tt!xIvew?%^S?nXFK23dAhzi5OEf^vLHNC)e4DaPmywSHj)Xmx8m6$jzzEDN z!!KRQq>dx@Ml|RtD1c=~$#I)iMzSnz^X_nxvALUNsoKccK#uVri}(m4qLpVDBV=3) zDB5IWGA@gPw7{a?Uxgjw=dTo1sOrlSu+e+q{TWR!HL({Q@qv?M{og>rXh|d+*DJL3 zJxR0hlhr*ONwrjX(vn|P8+AUBVi!S$2_$W$hc4;K@tPkyPEUl4u5u}M3e-ZJj;JMo z1v{Z%WOv2@k-pu^@yG)?Wg3-(d^`%!116}U{k?`iuO;HKQ$hsC#HXm%%!0~6n6Zv2 zbskICfByV;`-_j>5{#G!kxr9n{XMCE*rK`%jkeyDoxL6FSALRC%HEex4HehfiJmTF$orC$``_Rg4S2_L zXpHqXJ2H|`0tt#gVlK!>D@QWv*F(aw* zxF-tt?joZOa!vdT+uPgIs8l~0_Qo~)Mo~>R&}7-DbL!Tft%$I|uFx3-b64Tddkzh^ z9$f}vSX~B{bA1Y`6?4`|VKT2e}C zV2QN+yG0pV5|%g9*0e#DM!$@Ojg1ZM(H&}W6!HyJ(v|uDX9>NA6#Q0qlR=GH>67YE zs_!Ai;TtBEaMNPd-cM7|&4LDeyJzjbl+tlh&@`7q*1%68NrIpT0zq0%QZa*iV zICaS$5wXn8D-^g;6FR^MVXr4V9{yqj`z@Nm8Df1yM?#bh1pkvE%o!55WeI6N4hcR;)LW z1fuxVqj1SAWmK!tnBxr>IbSA_hORS?o(z;4M=-LkH$+$lxh)#Tq9{K9S~xy@o=9Cw zOg8~;Z(^8?b4@_I%jfsrojJ#C6%snw*h0ZH0jZ@#TVwtXs~Ey0(IKjaA2thEYY(zY zta1*vY|<{^iu(o9`I`%IL9sk=cr6_r9ZgM59UW1=`DWjpld?Rcc>sA+YnEKR2O&nA z0Z%YIovH(zJGi8jqL+Pzx3{-*bL#9Lxh7inhe??*ig37FwiqOmO_676Z$K#RH|Nd}?5gmDeIy%6WoBHzBR!1-g> zn^%VfhspDd$ruS~SU_4y`1h|I5XNNWVqDFerzRb>@sDLxA4;t@xMxP1_OAv>6E+|$6S2u_&|4J4@t9@1>d???HGjIJF`dc!Ih8*iE*EkzV zWah8r6+BPKPBbX)s;hqe+WbYZdg;aPBb+WFhY|II0-b2i`ZFZ$xD9&mLl1`S3)db* zlCa2Eohp2O;>fM%5h(L=sbb^|J$1X4;@V_e$R4EPd+wRzAtA5xm0+mKt9f%uzr<0)V=p-w0o6(%tjxmc!!tJ?AY3iZ&}$kgaXL zxGbKk^n(#BB+#{QbP1glP?JJPPj}|Ht@>fzG0Ux80kL-vR~zo*YBr_om&5|J@#xJT zN?AtTb^i@2`y;Cix~>ap28WohBw_7UBi@x;cPqS!UuF?OB!m$Hn=#L1zpATqeD9X7 z;Bl4_i+lJ&qV%!e>?cx$W54Jv^a9 zmD2)W7pyYOiuzfhe&hUm%4b4UCqhp7+Et~B9+>!cej~0#GJ~BisO>g1e5;%r?WlKk zJJI{kD0Jt))hs~UqARCO2cGGZ#wcDPd}>L=zA|({VYKK>OiX5eRkG;+U2FaMN91x- zbftG_zY+RZCK74M=e(M#s;ZhA69bg4vzkLo{2ns(yc2Q_Mm!h9%e`9_348;}2>S#X zCSuM}6UgTpA|t|()j%o?0YqR#=U!?`3jU9rgQ62?;~-3sUT}(2fwSTv!u_cL{W{7> z=0ppdjdP~AKW1XHh!fDGX${5JPOE#qBhEcF#$o;qU5j2|M{j8Q2)02txK1D)6d;!c^o{KhF;W!hV6? zi7^cgjl0todM{m(Wj*6sdgqe=#EicUp&qeuA7a!}ZKJKxy>TzV8qPG#N3d?f9iL5j za}1y`T0rb#!ZFZksH;nGJi#X_?$PeuBYCz2VB|o9a?QJ;;Hz zr}ki{pv$YX%Y&qOH)^y?JKlgI(bNi9>|$aP=qyBvUP`DlKCHM6g6Rro4cG3Mm~ws{ zg*No+>@^(xtfqydVBAX_p_#f$mJ7bC&cTDCSht<4tLsLWuQdgwQWDHH)D@opdFE6f zGjtJ~6*&8pZe{jZH)dqerEvbIlr>k}{?WpW%R5-*P%GMJM<@{i0`8+Ni?I7U{TZvj zhMlQV<7Tr!G?6!J`%gnWlK=l)F8qH>kO`yM8wFFK4|^vMpl#5>YRLQmecb{;MnX}% JTGTM${{tM9u5thX literal 0 HcmV?d00001 diff --git a/edje.pc.in b/edje.pc.in new file mode 100644 index 0000000..88110e9 --- /dev/null +++ b/edje.pc.in @@ -0,0 +1,17 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +modules=@libdir@/@PACKAGE@/modules +includedir=@includedir@ +datarootdir=@datarootdir@ +datadir=@datadir@/edje +vmaj=@VMAJ@ +multisense=@want_multisense@ + +Name: edje +Description: Enlightened graphical design and layout engine. +@pkgconfig_requires_private@: @requirement_edje@ +Version: @VERSION@ +Libs: -L${libdir} -ledje +Libs.private: @lua_libs@ +Cflags: -I${includedir}/edje-@VMAJ@ diff --git a/edje.spec.in b/edje.spec.in new file mode 100644 index 0000000..bf67585 --- /dev/null +++ b/edje.spec.in @@ -0,0 +1,105 @@ +%define _missing_doc_files_terminate_build 0 + +%{!?_rel:%{expand:%%global _rel 0.enl%{?dist}}} + +Summary: Complex Graphical Design/Layout Engine +Name: @PACKAGE@ +Version: @VERSION@ +Release: %{_rel} +License: BSD +Group: System Environment/Libraries +URL: http://www.enlightenment.org/ +Source: ftp://ftp.enlightenment.org/pub/evoak/%{name}-%{version}.tar.gz +Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings } +Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)} +Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}} +#BuildSuggests: xorg-x11-devel, vim-enhanced +BuildRequires: eet-devel, embryo-devel, evas-devel, ecore-devel, lua-devel +Requires: evas-module_loader_eet +BuildRoot: %{_tmppath}/%{name}-%{version}-root + +%description +Edje is a complex graphical design and layout engine. It provides a +mechanism for allowing configuration data to define visual elements in +terms of layout, behavior, and appearance. Edje allows for multiple +collections of layouts in one file, allowing a complete set of images, +animations, and controls to exist as a unified whole. + +Edje separates the arrangement, appearance, and behavior logic into +distinct independent entities. This allows visual objects to share +image data and configuration information without requiring them to do +so. This separation and simplistic event driven style of programming +can produce almost any look and feel one could want for basic visual +elements. Anything more complex is likely the domain of an application +or widget set that may use Edje as a conveneient way of being able to +configure parts of the display. + +%package devel +Summary: Edje headers, static libraries, documentation and test programs +Group: System Environment/Libraries +Requires: %{name} = %{version}, %{name}-bin = %{version} +Requires: eet-devel embryo-devel evas-devel ecore-devel lua-devel + +%description devel +Headers, static libraries, test programs and documentation for Edje + +%package bin +Summary: Edje file compiler/decompiler suite +Group: System Environment/Libraries +Requires: %{name} = %{version} +Requires: embryo-bin +Requires: evas-module_saver_eet, evas-module_loader_png, evas-module_saver_png +Requires: evas-module_loader_jpeg, evas-module_saver_jpeg, evas-module_engine_buffer + +%description bin +Edje file compiler/decompiler suite + +%prep +%setup -q + +%build +%{configure} --prefix=%{_prefix} +%{__make} %{?_smp_mflags} %{?mflags} + +%install +%{__make} %{?mflags_install} DESTDIR=$RPM_BUILD_ROOT install +test -x `which doxygen` && sh gendoc || : + +%post +/sbin/ldconfig || : + +%postun +/sbin/ldconfig || : + +%clean +test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-, root, root) +%doc AUTHORS COPYING README +%{_libdir}/libedje*.so.* + +%files devel +%defattr(-, root, root) +%{_libdir}/*.so +%{_libdir}/*.la +%{_libdir}/*.a +%{_libdir}/pkgconfig/* +%{_includedir}/edje-1/*.h +%{_libdir}/edje/utils/epp +%{_datadir}/edje/examples + +%files bin +%defattr(-, root, root) +%{_bindir}/edje_cc +%{_bindir}/edje_decc +%{_bindir}/edje_recc +%{_bindir}/edje_player +%{_bindir}/edje_external_inspector +%{_bindir}/edje_inspector +%{_bindir}/edje_watch +%{_bindir}/inkscape2edc +%{_datadir}/edje/include/edje.inc +%{_datadir}/mime/packages/edje.xml + +%changelog diff --git a/edje.supp b/edje.supp new file mode 100644 index 0000000..cbe3c3e --- /dev/null +++ b/edje.supp @@ -0,0 +1,8 @@ +# $Id$ +# valgrind suppression file for Edje. +# +{ + BogusWarning + Memcheck:Cond + fun:_edje_part_recalc +} diff --git a/m4/ac_attribute.m4 b/m4/ac_attribute.m4 new file mode 100644 index 0000000..23479a9 --- /dev/null +++ b/m4/ac_attribute.m4 @@ -0,0 +1,47 @@ +dnl Copyright (C) 2004-2008 Kim Woelders +dnl Copyright (C) 2008 Vincent Torri +dnl That code is public domain and can be freely used or copied. +dnl Originally snatched from somewhere... + +dnl Macro for checking if the compiler supports __attribute__ + +dnl Usage: AC_C___ATTRIBUTE__ +dnl call AC_DEFINE for HAVE___ATTRIBUTE__ and __UNUSED__ +dnl if the compiler supports __attribute__, HAVE___ATTRIBUTE__ is +dnl defined to 1 and __UNUSED__ is defined to __attribute__((unused)) +dnl otherwise, HAVE___ATTRIBUTE__ is not defined and __UNUSED__ is +dnl defined to nothing. + +AC_DEFUN([AC_C___ATTRIBUTE__], +[ + +AC_MSG_CHECKING([for __attribute__]) + +AC_CACHE_VAL([ac_cv___attribute__], + [AC_TRY_COMPILE( + [ +#include + +int func(int x); +int foo(int x __attribute__ ((unused))) +{ + exit(1); +} + ], + [], + [ac_cv___attribute__="yes"], + [ac_cv___attribute__="no"] + )]) + +AC_MSG_RESULT($ac_cv___attribute__) + +if test "x${ac_cv___attribute__}" = "xyes" ; then + AC_DEFINE([HAVE___ATTRIBUTE__], [1], [Define to 1 if your compiler has __attribute__]) + AC_DEFINE([__UNUSED__], [__attribute__((unused))], [Macro declaring a function argument to be unused]) + else + AC_DEFINE([__UNUSED__], [], [Macro declaring a function argument to be unused]) +fi + +]) + +dnl End of ac_attribute.m4 diff --git a/m4/efl_binary.m4 b/m4/efl_binary.m4 new file mode 100644 index 0000000..c774688 --- /dev/null +++ b/m4/efl_binary.m4 @@ -0,0 +1,71 @@ +dnl Copyright (C) 2010 Vincent Torri +dnl That code is public domain and can be freely used or copied. + +dnl Macro that check if a binary is built or not + +dnl Usage: EFL_ENABLE_BIN(binary) +dnl Call AC_SUBST(BINARY_PRG) (BINARY is the uppercase of binary, - being transformed into _) +dnl Define have_binary (- is transformed into _) +dnl Define conditional BUILD_BINARY (BINARY is the uppercase of binary, - being transformed into _) + +AC_DEFUN([EFL_ENABLE_BIN], +[ + +m4_pushdef([UP], m4_translit([[$1]], [-a-z], [_A-Z]))dnl +m4_pushdef([DOWN], m4_translit([[$1]], [-A-Z], [_a-z]))dnl + +have_[]m4_defn([DOWN])="yes" + +dnl configure option + +AC_ARG_ENABLE([$1], + [AC_HELP_STRING([--disable-$1], [disable building of ]DOWN)], + [ + if test "x${enableval}" = "xyes" ; then + have_[]m4_defn([DOWN])="yes" + else + have_[]m4_defn([DOWN])="no" + fi + ]) + +AC_MSG_CHECKING([whether to build ]DOWN[ binary]) +AC_MSG_RESULT([$have_[]m4_defn([DOWN])]) + +if test "x$have_[]m4_defn([DOWN])" = "xyes"; then + UP[]_PRG=DOWN[${EXEEXT}] +fi + +AC_SUBST(UP[]_PRG) + +AM_CONDITIONAL(BUILD_[]UP, test "x$have_[]m4_defn([DOWN])" = "xyes") + +AS_IF([test "x$have_[]m4_defn([DOWN])" = "xyes"], [$2], [$3]) + +]) + + +dnl Macro that check if a binary is built or not + +dnl Usage: EFL_WITH_BIN(package, binary, default_value) +dnl Call AC_SUBST(_binary) (_binary is the lowercase of binary, - being transformed into _ by default, or the value set by the user) + +AC_DEFUN([EFL_WITH_BIN], +[ + +m4_pushdef([DOWN], m4_translit([[$2]], [-A-Z], [_a-z]))dnl + +dnl configure option + +AC_ARG_WITH([$2], + [AC_HELP_STRING([--with-$2=PATH], [specify a specific path to ]DOWN[ @<:@default=$3@:>@])], + [_efl_with_binary=${withval}], + [_efl_with_binary=$(pkg-config --variable=prefix $1)/bin/$3]) + +DOWN=${_efl_with_binary} +AC_MSG_NOTICE(DOWN[ set to ${_efl_with_binary}]) + +with_binary_[]m4_defn([DOWN])=${_efl_with_binary} + +AC_SUBST(DOWN) + +]) diff --git a/m4/efl_coverage.m4 b/m4/efl_coverage.m4 new file mode 100644 index 0000000..85d0321 --- /dev/null +++ b/m4/efl_coverage.m4 @@ -0,0 +1,62 @@ +dnl Copyright (C) 2008 Vincent Torri +dnl That code is public domain and can be freely used or copied. + +dnl Macro that check if coverage support is wanted and, if yes, if +dnl lcov is available. + +dnl Usage: EFL_CHECK_COVERAGE(tests [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl The parameter 'tests' is used if a dependency is needed. If set to "yes", +dnl the dependency is available. +dnl Defines EFL_COVERAGE_CFLAGS and EFL_COVERAGE_LIBS variables +dnl Defines the automake conditionnal EFL_ENABLE_COVERAGE + +AC_DEFUN([EFL_CHECK_COVERAGE], +[ + +dnl configure option + +AC_ARG_ENABLE([coverage], + [AC_HELP_STRING([--enable-coverage], [enable coverage profiling instrumentation @<:@default=disabled@:>@])], + [ + if test "x${enableval}" = "xyes" ; then + _efl_enable_coverage="yes" + else + _efl_enable_coverage="no" + fi + ], + [_efl_enable_coverage="no"]) + +AC_MSG_CHECKING([whether to use profiling instrumentation]) +AC_MSG_RESULT([$_efl_enable_coverage]) + +dnl lcov check + +if test "x$_efl_enable_coverage" = "xyes" && test ! "x$1" = "xyes" ; then + AC_MSG_WARN([Coverage report requested but tests not being built, disable profiling instrumentation.]) + AC_MSG_WARN([Run configure with --enable-tests]) + _efl_enable_coverage="no" +fi + +if test "x$_efl_enable_coverage" = "xyes" ; then + AC_CHECK_PROG(have_lcov, [lcov], [yes], [no]) + if test "x$have_lcov" = "xyes" ; then + EFL_COVERAGE_CFLAGS="-fprofile-arcs -ftest-coverage" + EFL_COVERAGE_LIBS="-lgcov" +# remove any optimisation flag and force debug symbols + EFL_DEBUG_CFLAGS="-g -O0 -DDEBUG" + else + AC_MSG_WARN([lcov is not found, disable profiling instrumentation]) + _efl_enable_coverage="no" + fi +fi + +dnl Substitution +AC_SUBST(EFL_COVERAGE_CFLAGS) +AC_SUBST(EFL_COVERAGE_LIBS) + +AM_CONDITIONAL(EFL_ENABLE_COVERAGE, test "x${_efl_enable_coverage}" = "xyes") + +AS_IF([test "x$_efl_enable_coverage" = "xyes"], [$2], [$3]) +]) + +dnl End of efl_coverage.m4 diff --git a/m4/efl_doxygen.m4 b/m4/efl_doxygen.m4 new file mode 100644 index 0000000..d83ed68 --- /dev/null +++ b/m4/efl_doxygen.m4 @@ -0,0 +1,97 @@ +dnl Copyright (C) 2008 Vincent Torri +dnl That code is public domain and can be freely used or copied. + +dnl Macro that check if doxygen is available or not. + +dnl EFL_CHECK_DOXYGEN([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Test for the doxygen program +dnl Defines efl_doxygen +dnl Defines the automake conditionnal EFL_BUILD_DOC +dnl +AC_DEFUN([EFL_CHECK_DOXYGEN], +[ + +dnl +dnl Disable the build of the documentation +dnl +AC_ARG_ENABLE([doc], + [AC_HELP_STRING( + [--disable-doc], + [Disable documentation build @<:@default=enabled@:>@])], + [ + if test "x${enableval}" = "xyes" ; then + efl_enable_doc="yes" + else + efl_enable_doc="no" + fi + ], + [efl_enable_doc="yes"]) + +AC_MSG_CHECKING([whether to build documentation]) +AC_MSG_RESULT([${efl_enable_doc}]) + +if test "x${efl_enable_doc}" = "xyes" ; then + +dnl Specify the file name, without path + + efl_doxygen="doxygen" + + AC_ARG_WITH([doxygen], + [AC_HELP_STRING( + [--with-doxygen=FILE], + [doxygen program to use @<:@default=doxygen@:>@])], + +dnl Check the given doxygen program. + + [efl_doxygen=${withval} + AC_CHECK_PROG([efl_have_doxygen], + [${efl_doxygen}], + [yes], + [no]) + if test "x${efl_have_doxygen}" = "xno" ; then + echo "WARNING:" + echo "The doxygen program you specified:" + echo "${efl_doxygen}" + echo "was not found. Please check the path and make sure " + echo "the program exists and is executable." + AC_MSG_WARN([no doxygen detected. Documentation will not be built]) + fi + ], + [AC_CHECK_PROG([efl_have_doxygen], + [${efl_doxygen}], + [yes], + [no]) + if test "x${efl_have_doxygen}" = "xno" ; then + echo "WARNING:" + echo "The doxygen program was not found in your execute path." + echo "You may have doxygen installed somewhere not covered by your path." + echo "" + echo "If this is the case make sure you have the packages installed, AND" + echo "that the doxygen program is in your execute path (see your" + echo "shell manual page on setting the \$PATH environment variable), OR" + echo "alternatively, specify the program to use with --with-doxygen." + AC_MSG_WARN([no doxygen detected. Documentation will not be built]) + fi + ]) +fi + +dnl +dnl Substitution +dnl +AC_SUBST([efl_doxygen]) + +if ! test "x${efl_have_doxygen}" = "xyes" ; then + efl_enable_doc="no" +fi + +AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_enable_doc}" = "xyes") + +if test "x${efl_enable_doc}" = "xyes" ; then + m4_default([$1], [:]) +else + m4_default([$2], [:]) +fi + +]) + +dnl End of efl_doxygen.m4 diff --git a/m4/efl_path_max.m4 b/m4/efl_path_max.m4 new file mode 100644 index 0000000..f57bfd2 --- /dev/null +++ b/m4/efl_path_max.m4 @@ -0,0 +1,36 @@ +dnl Check for PATH_MAX in limits.h, and define a default value if not found +dnl This is a workaround for systems not providing PATH_MAX, like GNU/Hurd + +dnl EFL_CHECK_PATH_MAX([DEFAULT_VALUE_IF_NOT_FOUND]) +dnl +dnl If PATH_MAX is not defined in , defines it +dnl to DEFAULT_VALUE_IF_NOT_FOUND if it exists, or fallback +dnl to using 4096 + +AC_DEFUN([EFL_CHECK_PATH_MAX], +[ + +default_max=m4_default([$1], "4096") +AC_LANG_PUSH([C]) + +AC_MSG_CHECKING([for PATH_MAX in limits.h]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ +#include + ]], + [[ +int i = PATH_MAX; + ]])], + [AC_MSG_RESULT([yes])], + [ + AC_DEFINE_UNQUOTED([PATH_MAX], + [${default_max}], + [default value since PATH_MAX is not defined]) + AC_MSG_RESULT([no: using ${default_max}]) + ]) + +AC_LANG_POP([C]) + +]) +dnl end of efl_path_max.m4 diff --git a/m4/efl_tests.m4 b/m4/efl_tests.m4 new file mode 100644 index 0000000..3a4dfe2 --- /dev/null +++ b/m4/efl_tests.m4 @@ -0,0 +1,43 @@ +dnl Copyright (C) 2008 Vincent Torri +dnl That code is public domain and can be freely used or copied. + +dnl Macro that check if tests programs are wanted and if yes, if +dnl the Check library is available. + +dnl Usage: EFL_CHECK_TESTS([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) +dnl Define the automake conditionnal EFL_ENABLE_TESTS + +AC_DEFUN([EFL_CHECK_TESTS], +[ + +dnl configure option + +AC_ARG_ENABLE([tests], + [AC_HELP_STRING([--enable-tests], [enable tests @<:@default=disabled@:>@])], + [ + if test "x${enableval}" = "xyes" ; then + _efl_enable_tests="yes" + else + _efl_enable_tests="no" + fi + ], + [_efl_enable_tests="no"]) + +AC_MSG_CHECKING([whether tests are built]) +AC_MSG_RESULT([${_efl_enable_tests}]) + +AC_REQUIRE([PKG_PROG_PKG_CONFIG]) + +if test "x${_efl_enable_tests}" = "xyes" ; then + PKG_CHECK_MODULES([CHECK], + [check >= 0.9.5], + [dummy="yes"], + [_efl_enable_tests="no"]) +fi + +AM_CONDITIONAL(EFL_ENABLE_TESTS, test "x${_efl_enable_tests}" = "xyes") + +AS_IF([test "x$_efl_enable_tests" = "xyes"], [$1], [$2]) +]) + +dnl End of efl_tests.m4 diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..d97f1db --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,4 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = lib bin modules tests examples +MAINTAINERCLEANFILES = Makefile.in diff --git a/src/bin/Makefile.am b/src/bin/Makefile.am new file mode 100644 index 0000000..ccb6580 --- /dev/null +++ b/src/bin/Makefile.am @@ -0,0 +1,90 @@ +MAINTAINERCLEANFILES = Makefile.in + +if BUILD_EPP + SUBDIRS = epp +endif + +bin_SCRIPTS = @EDJE_RECC_PRG@ + +bin_PROGRAMS = @EDJE_CC_PRG@ @EDJE_DECC_PRG@ @EDJE_PLAYER_PRG@ @EDJE_INSPECTOR_PRG@ @EDJE_EXTERNAL_INSPECTOR_PRG@ + +if BUILD_EDJE_WATCH +bin_PROGRAMS += @EDJE_WATCH_PRG@ +endif + +EXTRA_PROGRAMS = edje_cc edje_decc edje_player edje_inspector edje_external_inspector + +if BUILD_EDJE_WATCH +EXTRA_PROGRAMS += edje_watch +endif + +edje_cc_SOURCES = \ +edje_cc.c \ +edje_cc_out.c \ +edje_cc_parse.c \ +edje_cc_mem.c \ +edje_cc_handlers.c \ +edje_cc_sources.c \ +edje_multisense_convert.c + +edje_cc_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +-DEPP_DIR=\"$(libdir)/$(PACKAGE)/utils\" \ +@EDJE_CFLAGS@ @EDJE_CC_CFLAGS@ @EIO_CFLAGS@ @EVIL_CFLAGS@ @SNDFILE_CFLAGS@ +edje_cc_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_CC_LIBS@ @EDJE_LIBS@ @EVIL_LIBS@ @VORBISENC_LIBS@ @FLAC_LIBS@ @SNDFILE_LIBS@ -lm +edje_cc_LDFLAGS = @lt_enable_auto_import@ + +edje_watch_SOURCES = \ +edje_watch.c + +edje_watch_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +@EDJE_CFLAGS@ @EDJE_CC_CFLAGS@ @EIO_CFLAGS@ @EVIL_CFLAGS@ @EDJE_WATCH_CFLAGS@ +edje_watch_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_WATCH_LIBS@ @EDJE_LIBS@ +edje_watch_LDFLAGS = @lt_enable_auto_import@ + +edje_decc_SOURCES = \ +edje_decc.c \ +edje_decc.h \ +edje_cc_mem.c \ +edje_cc_sources.c + +edje_decc_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +@EDJE_CFLAGS@ @EDJE_DECC_CFLAGS@ @EIO_CFLAGS@ @EVIL_CFLAGS@ +edje_decc_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_DECC_LIBS@ @EDJE_LIBS@ @VORBISENC_LIBS@ @FLAC_LIBS@ @SNDFILE_LIBS@ +edje_decc_LDFLAGS = @lt_enable_auto_import@ + +edje_player_SOURCES = edje_player.c +edje_player_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +@EDJE_PLAYER_CFLAGS@ @EVIL_CFLAGS@ @EIO_CFLAGS@ +edje_player_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_PLAYER_LIBS@ @EDJE_LIBS@ @EVIL_LIBS@ @VORBISENC_LIBS@ @FLAC_LIBS@ @SNDFILE_LIBS@ +edje_player_LDFLAGS = @lt_enable_auto_import@ + +edje_inspector_SOURCES = edje_inspector.c +edje_inspector_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +@EDJE_INSPECTOR_CFLAGS@ @EIO_CFLAGS@ +edje_inspector_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_INSPECTOR_LIBS@ @EDJE_LIBS@ @VORBISENC_LIBS@ @FLAC_LIBS@ +edje_inspector_LDFLAGS = @lt_enable_auto_import@ + +edje_external_inspector_SOURCES = edje_external_inspector.c +edje_external_inspector_CPPFLAGS = \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +@EDJE_EXTERNAL_INSPECTOR_CFLAGS@ @EIO_CFLAGS@ +edje_external_inspector_LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_EXTERNAL_INSPECTOR_LIBS@ @EDJE_LIBS@ @VORBISENC_LIBS@ @FLAC_LIBS@ @SNDFILE_LIBS@ +edje_external_inspector_LDFLAGS = @lt_enable_auto_import@ + +EXTRA_DIST = @EDJE_RECC_PRG@ edje_cc.h edje_convert.h edje_convert.c edje_multisense_convert.h edje_data_convert.c +EXTRA_SCRIPTS = edje_recc diff --git a/src/bin/edje_cc.c b/src/bin/edje_cc.c new file mode 100644 index 0000000..960d831 --- /dev/null +++ b/src/bin/edje_cc.c @@ -0,0 +1,333 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include + +#include "edje_cc.h" +int _edje_cc_log_dom = -1; +static void main_help(void); + +Eina_Prefix *pfx = NULL; +Eina_List *snd_dirs = NULL; +Eina_List *img_dirs = NULL; +Eina_List *fnt_dirs = NULL; +Eina_List *defines = NULL; +char *file_in = NULL; +char *tmp_dir = NULL; +char *file_out = NULL; +char *watchfile = NULL; + +static const char *progname = NULL; + +int no_lossy = 0; +int no_comp = 0; +int no_raw = 0; +int no_save = 0; +int min_quality = 0; +int max_quality = 100; +int compress_mode = EET_COMPRESSION_DEFAULT; +int threads = 0; + +static void +_edje_cc_log_cb(const Eina_Log_Domain *d, + Eina_Log_Level level, + const char *file, + const char *fnc, + int line, + const char *fmt, + __UNUSED__ void *data, + va_list args) +{ + if ((d->name) && (d->namelen == sizeof("edje_cc") - 1) && + (memcmp(d->name, "edje_cc", sizeof("edje_cc") - 1) == 0)) + { + const char *prefix; + + eina_log_console_color_set(stderr, eina_log_level_color_get(level)); + switch (level) + { + case EINA_LOG_LEVEL_CRITICAL: + prefix = "Critical. "; + break; + case EINA_LOG_LEVEL_ERR: + prefix = "Error. "; + break; + case EINA_LOG_LEVEL_WARN: + prefix = "Warning. "; + break; + default: + prefix = ""; + } + fprintf(stderr, "%s: %s", progname, prefix); + eina_log_console_color_set(stderr, EINA_COLOR_RESET); + + vfprintf(stderr, fmt, args); + putc('\n', stderr); + } + else + eina_log_print_cb_stderr(d, level, file, fnc, line, fmt, NULL, args); +} + +static void +main_help(void) +{ + printf + ("Usage:\n" + "\t%s [OPTIONS] input_file.edc [output_file.edj]\n" + "\n" + "Where OPTIONS is one or more of:\n" + "\n" + "-w files.txt Dump all sources files path into files.txt\n" + "-id image/directory Add a directory to look in for relative path images\n" + "-fd font/directory Add a directory to look in for relative path fonts\n" + "-sd sound/directory Add a directory to look in for relative path sounds samples\n" + "-td temp/directory Directory to store temporary files\n" + "-v Verbose output\n" + "-no-lossy Do NOT allow images to be lossy\n" + "-no-comp Do NOT allow images to be stored with lossless compression\n" + "-no-raw Do NOT allow images to be stored with zero compression (raw)\n" + "-no-save Do NOT store the input EDC file in the EDJ file\n" + "-min-quality VAL Do NOT allow lossy images with quality < VAL (0-100)\n" + "-max-quality VAL Do NOT allow lossy images with quality > VAL (0-100)\n" + "-Ddefine_val=to CPP style define to define input macro definitions to the .edc source\n" + "-fastcomp Use a faster compression algorithm (LZ4) (mutually exclusive with -fastdecomp)\n" + "-fastdecomp Use a faster decompression algorithm (LZ4HC) (mutually exclusive with -fastcomp)\n" + "-threads Compile the edje file using multiple parallel threads (by default)\n" + "-nothreads Compile the edje file using only the main loop\n" + ,progname); +} + +int +main(int argc, char **argv) +{ + int i; + struct stat st; + char rpath[PATH_MAX], rpath2[PATH_MAX]; + + setlocale(LC_NUMERIC, "C"); + + if (!eina_init()) + return -1; + + _edje_cc_log_dom = eina_log_domain_register + ("edje_cc", EDJE_CC_DEFAULT_LOG_COLOR); + if (_edje_cc_log_dom < 0) + { + EINA_LOG_ERR("Enable to create a log domain."); + exit(-1); + } + if (!eina_log_domain_level_check(_edje_cc_log_dom, EINA_LOG_LEVEL_WARN)) + eina_log_domain_level_set("edje_cc", EINA_LOG_LEVEL_WARN); + + progname = ecore_file_file_get(argv[0]); + eina_log_print_cb_set(_edje_cc_log_cb, NULL); + + tmp_dir = getenv("TMPDIR"); + + img_dirs = eina_list_append(img_dirs, "."); + + /* add defines to epp so edc files can detect edje_cc version */ + defines = eina_list_append(defines, mem_strdup("-DEDJE_VERSION_12=12")); + + for (i = 1; i < argc; i++) + { + if (!strcmp(argv[i], "-h")) + { + main_help(); + exit(0); + } + else if (!strcmp(argv[i], "-v")) + { + eina_log_domain_level_set("edje_cc", EINA_LOG_LEVEL_INFO); + } + else if (!strcmp(argv[i], "-no-lossy")) + { + no_lossy = 1; + } + else if (!strcmp(argv[i], "-no-comp")) + { + no_comp = 1; + } + else if (!strcmp(argv[i], "-no-raw")) + { + no_raw = 1; + } + else if (!strcmp(argv[i], "-no-save")) + { + no_save = 1; + } + else if ((!strcmp(argv[i], "-id") || !strcmp(argv[i], "--image_dir")) && (i < (argc - 1))) + { + i++; + img_dirs = eina_list_append(img_dirs, argv[i]); + } + else if ((!strcmp(argv[i], "-fd") || !strcmp(argv[i], "--font_dir")) && (i < (argc - 1))) + { + i++; + fnt_dirs = eina_list_append(fnt_dirs, argv[i]); + } + else if ((!strcmp(argv[i], "-sd") || !strcmp(argv[i], "--sound_dir")) && (i < (argc - 1))) + { + i++; + snd_dirs = eina_list_append(snd_dirs, argv[i]); + } + else if ((!strcmp(argv[i], "-td") || !strcmp(argv[i], "--tmp_dir")) && (i < (argc - 1))) + { + i++; + if (!tmp_dir) + tmp_dir = argv[i]; + } + else if ((!strcmp(argv[i], "-min-quality")) && (i < (argc - 1))) + { + i++; + min_quality = atoi(argv[i]); + if (min_quality < 0) min_quality = 0; + if (min_quality > 100) min_quality = 100; + } + else if ((!strcmp(argv[i], "-max-quality")) && (i < (argc - 1))) + { + i++; + max_quality = atoi(argv[i]); + if (max_quality < 0) max_quality = 0; + if (max_quality > 100) max_quality = 100; + } + else if (!strcmp(argv[i], "-fastcomp")) + { + compress_mode = EET_COMPRESSION_SUPERFAST; + } + else if (!strcmp(argv[i], "-fastdecomp")) + { + compress_mode = EET_COMPRESSION_VERYFAST; + } + else if (!strcmp(argv[i], "-threads")) + { + threads = 1; + } + else if (!strcmp(argv[i], "-nothreads")) + { + threads = 0; + } + else if (!strncmp(argv[i], "-D", 2)) + { + defines = eina_list_append(defines, mem_strdup(argv[i])); + } + else if ((!strcmp(argv[i], "-o")) && (i < (argc - 1))) + { + i++; + file_out = argv[i]; + } + else if ((!strcmp(argv[i], "-w")) && (i < (argc - 1))) + { + i++; + watchfile = argv[i]; + unlink(watchfile); + } + else if (!file_in) + file_in = argv[i]; + else if (!file_out) + file_out = argv[i]; + } + + if (!file_in) + { + ERR("no input file specified."); + main_help(); + exit(-1); + } + + + + pfx = eina_prefix_new(argv[0], /* argv[0] value (optional) */ + main, /* an optional symbol to check path of */ + "EDJE", /* env var prefix to use (XXX_PREFIX, XXX_BIN_DIR etc. */ + "edje", /* dir to add after "share" (PREFIX/share/DIRNAME) */ + "include/edje.inc", /* a magic file to check for in PREFIX/share/DIRNAME for success */ + PACKAGE_BIN_DIR, /* package bin dir @ compile time */ + PACKAGE_LIB_DIR, /* package lib dir @ compile time */ + PACKAGE_DATA_DIR, /* package data dir @ compile time */ + PACKAGE_DATA_DIR /* if locale needed use LOCALE_DIR */ + ); + + /* check whether file_in exists */ +#ifdef HAVE_REALPATH + if (!realpath(file_in, rpath) || stat(rpath, &st) || !S_ISREG(st.st_mode)) +#else + if (stat(file_in, &st) || !S_ISREG(st.st_mode)) +#endif + { + ERR("file not found: %s.", file_in); + main_help(); + exit(-1); + } + + if (!file_out) + { + char *suffix; + + if ((suffix = strstr(file_in,".edc")) && (suffix[4] == 0)) + { + file_out = strdup(file_in); + if (file_out) + { + suffix = strstr(file_out,".edc"); + strcpy(suffix,".edj"); + } + } + } + if (!file_out) + { + ERR("no output file specified."); + main_help(); + exit(-1); + } + +#ifdef HAVE_REALPATH + if (realpath(file_out, rpath2) && !strcmp (rpath, rpath2)) +#else + if (!strcmp (file_in, file_out)) +#endif + { + ERR("input file equals output file."); + main_help(); + exit(-1); + } + + using_file(file_in); + + if (!edje_init()) + exit(-1); + + edje_file = mem_alloc(SZ(Edje_File)); + edje_file->compiler = strdup("edje_cc"); + edje_file->version = EDJE_FILE_VERSION; + edje_file->minor = EDJE_FILE_MINOR; + edje_file->feature_ver = 1; /* increment this every time we add a field + * or feature to the edje file format that + * does not load nicely as a NULL or 0 value + * and needs a special fallback initialization + */ + + source_edd(); + source_fetch(); + + data_setup(); + compile(); + reorder_parts(); + data_process_scripts(); + data_process_lookups(); + data_process_script_lookups(); + data_write(); + + eina_prefix_free(pfx); + pfx = NULL; + + edje_shutdown(); + eina_log_domain_unregister(_edje_cc_log_dom); + eina_shutdown(); + + return 0; +} diff --git a/src/bin/edje_cc.h b/src/bin/edje_cc.h new file mode 100644 index 0000000..d9468b6 --- /dev/null +++ b/src/bin/edje_cc.h @@ -0,0 +1,239 @@ +#ifndef EDJE_CC_H +#define EDJE_CC_H + +#include + +extern Eina_Prefix *pfx; + +/* + * On Windows, if the file is not opened in binary mode, + * read does not return the correct size, because of + * CR / LF translation. + */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + +/* logging variables */ +extern int _edje_cc_log_dom ; +#define EDJE_CC_DEFAULT_LOG_COLOR EINA_COLOR_CYAN + +#ifdef ERR +# undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_edje_cc_log_dom, __VA_ARGS__) +#ifdef INF +# undef INF +#endif +#define INF(...) EINA_LOG_DOM_INFO(_edje_cc_log_dom, __VA_ARGS__) +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_edje_cc_log_dom, __VA_ARGS__) +#ifdef CRIT +# undef CRIT +#endif +#define CRIT(...) EINA_LOG_DOM_CRIT(_edje_cc_log_dom, __VA_ARGS__) +#ifdef DBG +# undef DBG +#endif +#define DBG(...) EINA_LOG_DOM_DBG(_edje_cc_log_dom, __VA_ARGS__) + +/* types */ +typedef struct _New_Object_Handler New_Object_Handler; +typedef struct _New_Statement_Handler New_Statement_Handler; +typedef struct _External_List External_List; +typedef struct _External External; +typedef struct _Font_List Font_List; +typedef struct _Font Font; +typedef struct _Code Code; +typedef struct _Code_Program Code_Program; +typedef struct _SrcFile SrcFile; +typedef struct _SrcFile_List SrcFile_List; + +typedef struct _Edje_Program_Parser Edje_Program_Parser; +typedef struct _Edje_Pack_Element_Parser Edje_Pack_Element_Parser; +typedef struct _Edje_Part_Parser Edje_Part_Parser; + +struct _New_Object_Handler +{ + const char *type; + void (*func)(void); +}; + +struct _New_Statement_Handler +{ + const char *type; + void (*func)(void); +}; + +struct _External_List +{ + Eina_List *list; +}; + +struct _External +{ + char *name; +}; + +struct _Font_List +{ + Eina_List *list; +}; + +struct _Font +{ + char *name; + char *file; +}; + +struct _Code +{ + int l1, l2; + char *shared; + char *original; + Eina_List *programs; + int is_lua; +}; + +struct _Code_Program +{ + int l1, l2; + int id; + char *script; + char *original; +}; + +struct _SrcFile +{ + char *name; + char *file; +}; + +struct _SrcFile_List +{ + Eina_List *list; +}; + +struct _Edje_Program_Parser +{ + Edje_Program common; + Eina_Bool can_override; +}; + +struct _Edje_Pack_Element_Parser +{ + Edje_Pack_Element common; + Eina_Bool can_override; +}; + +struct _Edje_Part_Parser +{ + Edje_Part common; + struct { + Eina_Bool done; + const char *insert_before; /* the part name for insertion in front of */ + const char *insert_after; /* the part name for insertion behind of */ + Edje_Part_Parser *before; + Edje_Part_Parser *after; + int linked_prev; /* the number linked previous part for reorder */ + int linked_next; /* the number linked next part for reorder */ + } reorder; + Eina_Bool can_override; +}; + +/* global fn calls */ +void data_setup(void); +void data_write(void); +void data_queue_group_lookup(const char *name, Edje_Part *part); +void data_queue_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest); +void data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest); +void data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest); +void data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest); +void data_queue_anonymous_lookup(Edje_Part_Collection *pc, Edje_Program *ep, int *dest); +void data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest); +void data_queue_image_lookup(char *name, int *dest, Eina_Bool *set); +void data_queue_copied_image_lookup(int *src, int *dest, Eina_Bool *set); +void data_queue_image_remove(int *dest, Eina_Bool *set); +void data_queue_part_slave_lookup(int *master, int *slave); +void data_queue_image_slave_lookup(int *master, int *slave); +void data_queue_spectrum_lookup(char *name, int *dest); +void data_queue_spectrum_slave_lookup(int *master, int *slave); +void data_process_lookups(void); +void data_process_scripts(void); +void data_process_script_lookups(void); + +void part_description_image_cleanup(Edje_Part *ep); + +int is_verbatim(void); +void track_verbatim(int on); +void set_verbatim(char *s, int l1, int l2); +char *get_verbatim(void); +int get_verbatim_line1(void); +int get_verbatim_line2(void); +void compile(void); +int is_param(int n); +int is_num(int n); +char *parse_str(int n); +int parse_enum(int n, ...); +int parse_flags(int n, ...); +int parse_int(int n); +int parse_int_range(int n, int f, int t); +int parse_bool(int n); +double parse_float(int n); +double parse_float_range(int n, double f, double t); +int get_arg_count(void); +void check_arg_count(int n); +void check_min_arg_count(int n); + +int object_handler_num(void); +int statement_handler_num(void); + +void reorder_parts(void); +void source_edd(void); +void source_fetch(void); +int source_append(Eet_File *ef); +SrcFile_List *source_load(Eet_File *ef); +int source_fontmap_save(Eet_File *ef, Eina_List *fonts); +Font_List *source_fontmap_load(Eet_File *ef); + +void *mem_alloc(size_t size); +char *mem_strdup(const char *s); +#define SZ sizeof + +void using_file(const char *filename); + +void error_and_abort(Eet_File *ef, const char *fmt, ...); + +/* global vars */ +extern Eina_List *ext_dirs; +extern Eina_List *img_dirs; +extern Eina_List *fnt_dirs; +extern Eina_List *snd_dirs; +extern char *file_in; +extern char *tmp_dir; +extern char *file_out; +extern char *watchfile; +extern int no_lossy; +extern int no_comp; +extern int no_raw; +extern int no_save; +extern int min_quality; +extern int max_quality; +extern int line; +extern Eina_List *stack; +extern Eina_List *params; +extern Edje_File *edje_file; +extern Eina_List *edje_collections; +extern Eina_List *externals; +extern Eina_List *fonts; +extern Eina_List *codes; +extern Eina_List *defines; +extern Eina_List *aliases; +extern New_Object_Handler object_handlers[]; +extern New_Statement_Handler statement_handlers[]; +extern int compress_mode; +extern int threads; + +#endif diff --git a/src/bin/edje_cc_handlers.c b/src/bin/edje_cc_handlers.c new file mode 100644 index 0000000..a057416 --- /dev/null +++ b/src/bin/edje_cc_handlers.c @@ -0,0 +1,8051 @@ +/* + Concerning the EDC reference: + + The formatting for blocks and properties has been implemented as a table + which is filled using ALIASES. + For maximum flexibility I implemented them in the \@code/\@encode style, + this means that missing one or changing the order most certainly cause + formatting errors. + + \@block + block name + \@context + code sample of the block + \@description + the block's description + \@endblock + + \@property + property name + \@parameters + property's parameter list + \@effect + the property description (lol) + \@endproperty +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include +#include +#include + +#include "edje_cc.h" + +/** + * @page edcref Edje Data Collection reference + * An Edje Data Collection, it's a plain text file (normally identified with the + * .edc extension), consisting of instructions for the Edje Compiler. + * + * The syntax for the edje data collection files follows a simple structure of + * "blocks { .. }" that can contain "properties: ..", more blocks, or both. + * + * @anchor sec_quickaccess Quick access to block descriptions: + *
    + *
  • @ref sec_toplevel "Top-Level"
  • + *
  • @ref sec_group "Group"
  • + *
  • @ref sec_description "State description"
  • + *
      + *
    • @ref sec_description_image "Image"
    • + *
    • @ref sec_description_text "Text"
    • + *
    • @ref sec_description_box "Box"
    • + *
    • @ref sec_description_table "Table"
    • + *
    • @ref sec_description_map "Map (3d/transformations)"
    • + *
    + *
  • @ref sec_program "Program block"
  • + *
+ * + * @author Andres Blanc (dresb) andresblanc@gmail.com + * + * + */ + +static Edje_Part_Collection_Directory_Entry *current_de = NULL; +static Edje_Part *current_part = NULL; +static Edje_Pack_Element *current_item = NULL; +static Edje_Part_Description_Common *current_desc = NULL; +static Edje_Part_Description_Common *parent_desc = NULL; +static Edje_Program *current_program = NULL; + +static void st_externals_external(void); + +static void st_images_image(void); +static void ob_images_set(void); +static void st_images_set_name(void); +static void ob_images_set_image(void); +static void st_images_set_image_image(void); +static void st_images_set_image_size(void); + +static void st_fonts_font(void); + +static void st_data_item(void); +static void st_data_file(void); + +static void ob_styles_style(void); +static void st_styles_style_name(void); +static void st_styles_style_base(void); +static void st_styles_style_tag(void); + +static void ob_color_class(void); +static void st_color_class_name(void); +static void st_color_class_color(void); +static void st_color_class_color2(void); +static void st_color_class_color3(void); + +static void ob_collections(void); + +static void ob_collections_group(void); +static void st_collections_group_name(void); +static void st_collections_group_inherit(void); +static void st_collections_group_script_only(void); +static void st_collections_group_alias(void); +static void st_collections_group_min(void); +static void st_collections_group_max(void); +static void st_collections_group_broadcast_signal(void); +static void st_collections_group_data_item(void); +static void st_collections_group_orientation(void); + +static void st_collections_group_limits_vertical(void); +static void st_collections_group_limits_horizontal(void); + +static void ob_collections_group_script(void); +static void ob_collections_group_lua_script(void); + +static void st_collections_group_parts_alias(void); + +static void ob_collections_group_parts_part(void); +static void st_collections_group_parts_part_name(void); +static void st_collections_group_parts_part_type(void); +static void st_collections_group_parts_part_insert_before(void); +static void st_collections_group_parts_part_insert_after(void); +static void st_collections_group_parts_part_effect(void); +static void st_collections_group_parts_part_mouse_events(void); +static void st_collections_group_parts_part_repeat_events(void); +static void st_collections_group_parts_part_ignore_flags(void); +static void st_collections_group_parts_part_scale(void); +static void st_collections_group_parts_part_pointer_mode(void); +static void st_collections_group_parts_part_precise_is_inside(void); +static void st_collections_group_parts_part_use_alternate_font_metrics(void); +static void st_collections_group_parts_part_clip_to_id(void); +static void st_collections_group_parts_part_source(void); +static void st_collections_group_parts_part_source2(void); +static void st_collections_group_parts_part_source3(void); +static void st_collections_group_parts_part_source4(void); +static void st_collections_group_parts_part_source5(void); +static void st_collections_group_parts_part_source6(void); +static void st_collections_group_parts_part_entry_mode(void); +static void st_collections_group_parts_part_select_mode(void); +static void st_collections_group_parts_part_cursor_mode(void); +static void st_collections_group_parts_part_multiline(void); +static void st_collections_group_parts_part_access(void); +static void st_collections_group_parts_part_dragable_x(void); +static void st_collections_group_parts_part_dragable_y(void); +static void st_collections_group_parts_part_dragable_confine(void); +static void st_collections_group_parts_part_dragable_events(void); + +/* box and table items share these */ +static void ob_collections_group_parts_part_box_items_item(void); +static void st_collections_group_parts_part_box_items_item_type(void); +static void st_collections_group_parts_part_box_items_item_name(void); +static void st_collections_group_parts_part_box_items_item_source(void); +static void st_collections_group_parts_part_box_items_item_min(void); +static void st_collections_group_parts_part_box_items_item_prefer(void); +static void st_collections_group_parts_part_box_items_item_max(void); +static void st_collections_group_parts_part_box_items_item_padding(void); +static void st_collections_group_parts_part_box_items_item_align(void); +static void st_collections_group_parts_part_box_items_item_weight(void); +static void st_collections_group_parts_part_box_items_item_aspect(void); +static void st_collections_group_parts_part_box_items_item_aspect_mode(void); +static void st_collections_group_parts_part_box_items_item_options(void); +/* but these are only for table */ +static void st_collections_group_parts_part_table_items_item_position(void); +static void st_collections_group_parts_part_table_items_item_span(void); + +static void ob_collections_group_parts_part_description(void); +static void st_collections_group_parts_part_description_inherit(void); +static void st_collections_group_parts_part_description_source(void); +static void st_collections_group_parts_part_description_state(void); +static void st_collections_group_parts_part_description_visible(void); +static void st_collections_group_parts_part_description_limit(void); +static void st_collections_group_parts_part_description_align(void); +static void st_collections_group_parts_part_description_fixed(void); +static void st_collections_group_parts_part_description_min(void); +static void st_collections_group_parts_part_description_minmul(void); +static void st_collections_group_parts_part_description_max(void); +static void st_collections_group_parts_part_description_step(void); +static void st_collections_group_parts_part_description_aspect(void); +static void st_collections_group_parts_part_description_aspect_preference(void); +static void st_collections_group_parts_part_description_rel1_relative(void); +static void st_collections_group_parts_part_description_rel1_offset(void); +static void st_collections_group_parts_part_description_rel1_to(void); +static void st_collections_group_parts_part_description_rel1_to_x(void); +static void st_collections_group_parts_part_description_rel1_to_y(void); +static void st_collections_group_parts_part_description_rel2_relative(void); +static void st_collections_group_parts_part_description_rel2_offset(void); +static void st_collections_group_parts_part_description_rel2_to(void); +static void st_collections_group_parts_part_description_rel2_to_x(void); +static void st_collections_group_parts_part_description_rel2_to_y(void); +static void st_collections_group_parts_part_description_image_normal(void); +static void st_collections_group_parts_part_description_image_tween(void); +static void st_collections_group_parts_part_description_image_border(void); +static void st_collections_group_parts_part_description_image_middle(void); +static void st_collections_group_parts_part_description_image_border_scale(void); +static void st_collections_group_parts_part_description_image_border_scale_by(void); +static void st_collections_group_parts_part_description_image_scale_hint(void); +static void st_collections_group_parts_part_description_fill_smooth(void); +static void st_collections_group_parts_part_description_fill_origin_relative(void); +static void st_collections_group_parts_part_description_fill_origin_offset(void); +static void st_collections_group_parts_part_description_fill_size_relative(void); +static void st_collections_group_parts_part_description_fill_size_offset(void); +static void st_collections_group_parts_part_description_fill_spread(void); +static void st_collections_group_parts_part_description_fill_type(void); +static void st_collections_group_parts_part_description_color_class(void); +static void st_collections_group_parts_part_description_color(void); +static void st_collections_group_parts_part_description_color2(void); +static void st_collections_group_parts_part_description_color3(void); +static void st_collections_group_parts_part_description_text_text(void); +static void st_collections_group_parts_part_description_text_text_class(void); +static void st_collections_group_parts_part_description_text_font(void); +static void st_collections_group_parts_part_description_text_style(void); +static void st_collections_group_parts_part_description_text_repch(void); +static void st_collections_group_parts_part_description_text_size(void); +static void st_collections_group_parts_part_description_text_size_range(void); +static void st_collections_group_parts_part_description_text_fit(void); +static void st_collections_group_parts_part_description_text_min(void); +static void st_collections_group_parts_part_description_text_max(void); +static void st_collections_group_parts_part_description_text_align(void); +static void st_collections_group_parts_part_description_text_source(void); +static void st_collections_group_parts_part_description_text_text_source(void); +static void st_collections_group_parts_part_description_text_elipsis(void); +static void st_collections_group_parts_part_description_box_layout(void); +static void st_collections_group_parts_part_description_box_align(void); +static void st_collections_group_parts_part_description_box_padding(void); +static void st_collections_group_parts_part_description_box_min(void); +static void st_collections_group_parts_part_description_table_homogeneous(void); +static void st_collections_group_parts_part_description_table_align(void); +static void st_collections_group_parts_part_description_table_padding(void); +static void st_collections_group_parts_part_description_table_min(void); +static void st_collections_group_parts_part_description_map_perspective(void); +static void st_collections_group_parts_part_description_map_light(void); +static void st_collections_group_parts_part_description_map_rotation_center(void); +static void st_collections_group_parts_part_description_map_rotation_x(void); +static void st_collections_group_parts_part_description_map_rotation_y(void); +static void st_collections_group_parts_part_description_map_rotation_z(void); +static void st_collections_group_parts_part_description_map_on(void); +static void st_collections_group_parts_part_description_map_smooth(void); +static void st_collections_group_parts_part_description_map_alpha(void); +static void st_collections_group_parts_part_description_map_backface_cull(void); +static void st_collections_group_parts_part_description_map_perspective_on(void); +static void st_collections_group_parts_part_description_perspective_zplane(void); +static void st_collections_group_parts_part_description_perspective_focal(void); +static void st_collections_group_parts_part_api(void); + +/* external part parameters */ +static void st_collections_group_parts_part_description_params_int(void); +static void ob_collections_group_programs_program(void); +static void st_collections_group_parts_part_description_params_double(void); + +static void st_collections_group_programs_program_name(void); +static void st_collections_group_parts_part_description_params_string(void); +static void st_collections_group_parts_part_description_params_bool(void); +static void st_collections_group_parts_part_description_params_choice(void); +static void st_collections_group_programs_program_signal(void); +static void st_collections_group_programs_program_source(void); +static void st_collections_group_programs_program_filter(void); +static void st_collections_group_programs_program_in(void); +static void st_collections_group_programs_program_action(void); +static void st_collections_group_programs_program_transition(void); +static void st_collections_group_programs_program_target(void); +static void st_collections_group_programs_program_after(void); +static void st_collections_group_programs_program_api(void); + +static void ob_collections_group_programs_program_script(void); +static void st_collections_group_sound_sample_name(void); +static void st_collections_group_sound_sample_source(void); +static void st_collections_group_sound_tone(void); + +/*****/ + +New_Statement_Handler statement_handlers[] = +{ + {"externals.external", st_externals_external}, + {"images.image", st_images_image}, + {"images.set.name", st_images_set_name}, + {"images.set.image.image", st_images_set_image_image}, + {"images.set.image.size", st_images_set_image_size}, + {"fonts.font", st_fonts_font}, + {"data.item", st_data_item}, + {"data.file", st_data_file}, + {"styles.style.name", st_styles_style_name}, + {"styles.style.base", st_styles_style_base}, + {"styles.style.tag", st_styles_style_tag}, + {"color_classes.color_class.name", st_color_class_name}, + {"color_classes.color_class.color", st_color_class_color}, + {"color_classes.color_class.color2", st_color_class_color2}, + {"color_classes.color_class.color3", st_color_class_color3}, + {"collections.externals.external", st_externals_external}, /* dup */ + {"collections.image", st_images_image}, /* dup */ + {"collections.set.name", st_images_set_name}, /* dup */ + {"collections.set.image.image", st_images_set_image_image}, /* dup */ + {"collections.set.image.size", st_images_set_image_size}, /* dup */ + {"collections.images.image", st_images_image}, /* dup */ + {"collections.images.set.name", st_images_set_name}, /* dup */ + {"collections.images.set.image.image", st_images_set_image_image}, /* dup */ + {"collections.images.set.image.size", st_images_set_image_size}, /* dup */ + {"collections.font", st_fonts_font}, /* dup */ + {"collections.fonts.font", st_fonts_font}, /* dup */ + {"collections.styles.style.name", st_styles_style_name}, /* dup */ + {"collections.styles.style.base", st_styles_style_base}, /* dup */ + {"collections.styles.style.tag", st_styles_style_tag}, /* dup */ + {"collections.color_classes.color_class.name", st_color_class_name}, /* dup */ + {"collections.color_classes.color_class.color", st_color_class_color}, /* dup */ + {"collections.color_classes.color_class.color2", st_color_class_color2}, /* dup */ + {"collections.color_classes.color_class.color3", st_color_class_color3}, /* dup */ + + {"collections.sounds.sample.name", st_collections_group_sound_sample_name}, + {"collections.sounds.sample.source", st_collections_group_sound_sample_source}, + {"collections.group.sounds.sample.name", st_collections_group_sound_sample_name}, /* dup */ + {"collections.group.sounds.sample.source", st_collections_group_sound_sample_source}, /* dup */ + {"collections.sounds.tone", st_collections_group_sound_tone}, + {"collections.group.sounds.tone", st_collections_group_sound_tone}, /* dup */ + {"collections.group.name", st_collections_group_name}, + {"collections.group.inherit", st_collections_group_inherit}, + {"collections.group.script_only", st_collections_group_script_only}, + {"collections.group.lua_script_only", st_collections_group_script_only}, + {"collections.group.alias", st_collections_group_alias}, + {"collections.group.min", st_collections_group_min}, + {"collections.group.max", st_collections_group_max}, + {"collections.group.broadcast_signal", st_collections_group_broadcast_signal}, + {"collections.group.orientation", st_collections_group_orientation}, + {"collections.group.data.item", st_collections_group_data_item}, + {"collections.group.limits.horizontal", st_collections_group_limits_horizontal}, + {"collections.group.limits.vertical", st_collections_group_limits_vertical}, + {"collections.group.externals.external", st_externals_external}, /* dup */ + {"collections.group.image", st_images_image}, /* dup */ + {"collections.group.set.name", st_images_set_name}, + {"collections.group.set.image.image", st_images_set_image_image}, + {"collections.group.set.image.size", st_images_set_image_size}, + {"collections.group.images.image", st_images_image}, /* dup */ + {"collections.group.images.set.name", st_images_set_name}, + {"collections.group.images.set.image.image", st_images_set_image_image}, + {"collections.group.images.set.image.size", st_images_set_image_size}, + {"collections.group.font", st_fonts_font}, /* dup */ + {"collections.group.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.styles.style.name", st_styles_style_name}, /* dup */ + {"collections.group.styles.style.base", st_styles_style_base}, /* dup */ + {"collections.group.styles.style.tag", st_styles_style_tag}, /* dup */ + {"collections.group.color_classes.color_class.name", st_color_class_name}, /* dup */ + {"collections.group.color_classes.color_class.color", st_color_class_color}, /* dup */ + {"collections.group.color_classes.color_class.color2", st_color_class_color2}, /* dup */ + {"collections.group.color_classes.color_class.color3", st_color_class_color3}, /* dup */ + {"collections.group.parts.alias", st_collections_group_parts_alias }, + {"collections.group.parts.image", st_images_image}, /* dup */ + {"collections.group.parts.set.name", st_images_set_name}, + {"collections.group.parts.set.image.image", st_images_set_image_image}, + {"collections.group.parts.set.image.size", st_images_set_image_size}, + {"collections.group.parts.images.image", st_images_image}, /* dup */ + {"collections.group.parts.images.set.name", st_images_set_name}, + {"collections.group.parts.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.styles.style.name", st_styles_style_name}, /* dup */ + {"collections.group.parts.styles.style.base", st_styles_style_base}, /* dup */ + {"collections.group.parts.styles.style.tag", st_styles_style_tag}, /* dup */ + {"collections.group.parts.color_classes.color_class.name", st_color_class_name}, /* dup */ + {"collections.group.parts.color_classes.color_class.color", st_color_class_color}, /* dup */ + {"collections.group.parts.color_classes.color_class.color2", st_color_class_color2}, /* dup */ + {"collections.group.parts.color_classes.color_class.color3", st_color_class_color3}, /* dup */ + {"collections.group.parts.part.name", st_collections_group_parts_part_name}, + {"collections.group.parts.part.api", st_collections_group_parts_part_api}, + {"collections.group.parts.part.type", st_collections_group_parts_part_type}, + {"collections.group.parts.part.insert_before", st_collections_group_parts_part_insert_before}, + {"collections.group.parts.part.insert_after", st_collections_group_parts_part_insert_after}, + {"collections.group.parts.part.effect", st_collections_group_parts_part_effect}, + {"collections.group.parts.part.mouse_events", st_collections_group_parts_part_mouse_events}, + {"collections.group.parts.part.repeat_events", st_collections_group_parts_part_repeat_events}, + {"collections.group.parts.part.ignore_flags", st_collections_group_parts_part_ignore_flags}, + {"collections.group.parts.part.scale", st_collections_group_parts_part_scale}, + {"collections.group.parts.part.pointer_mode", st_collections_group_parts_part_pointer_mode}, + {"collections.group.parts.part.precise_is_inside", st_collections_group_parts_part_precise_is_inside}, + {"collections.group.parts.part.use_alternate_font_metrics", st_collections_group_parts_part_use_alternate_font_metrics}, + {"collections.group.parts.part.clip_to", st_collections_group_parts_part_clip_to_id}, + {"collections.group.parts.part.source", st_collections_group_parts_part_source}, + {"collections.group.parts.part.source2", st_collections_group_parts_part_source2}, + {"collections.group.parts.part.source3", st_collections_group_parts_part_source3}, + {"collections.group.parts.part.source4", st_collections_group_parts_part_source4}, + {"collections.group.parts.part.source5", st_collections_group_parts_part_source5}, + {"collections.group.parts.part.source6", st_collections_group_parts_part_source6}, + {"collections.group.parts.part.dragable.x", st_collections_group_parts_part_dragable_x}, + {"collections.group.parts.part.dragable.y", st_collections_group_parts_part_dragable_y}, + {"collections.group.parts.part.dragable.confine", st_collections_group_parts_part_dragable_confine}, + {"collections.group.parts.part.dragable.events", st_collections_group_parts_part_dragable_events}, + {"collections.group.parts.part.entry_mode", st_collections_group_parts_part_entry_mode}, + {"collections.group.parts.part.select_mode", st_collections_group_parts_part_select_mode}, + {"collections.group.parts.part.cursor_mode", st_collections_group_parts_part_cursor_mode}, + {"collections.group.parts.part.multiline", st_collections_group_parts_part_multiline}, + {"collections.group.parts.part.access", st_collections_group_parts_part_access}, + {"collections.group.parts.part.image", st_images_image}, /* dup */ + {"collections.group.parts.part.set.name", st_images_set_name}, + {"collections.group.parts.part.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.images.image", st_images_image}, /* dup */ + {"collections.group.parts.part.images.set.name", st_images_set_name}, + {"collections.group.parts.part.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.styles.style.name", st_styles_style_name}, /* dup */ + {"collections.group.parts.part.styles.style.base", st_styles_style_base}, /* dup */ + {"collections.group.parts.part.styles.style.tag", st_styles_style_tag}, /* dup */ + {"collections.group.parts.part.color_classes.color_class.name", st_color_class_name}, /* dup */ + {"collections.group.parts.part.color_classes.color_class.color", st_color_class_color}, /* dup */ + {"collections.group.parts.part.color_classes.color_class.color2", st_color_class_color2}, /* dup */ + {"collections.group.parts.part.color_classes.color_class.color3", st_color_class_color3}, /* dup */ + {"collections.group.parts.part.box.items.item.type", st_collections_group_parts_part_box_items_item_type}, + {"collections.group.parts.part.box.items.item.name", st_collections_group_parts_part_box_items_item_name}, + {"collections.group.parts.part.box.items.item.source", st_collections_group_parts_part_box_items_item_source}, + {"collections.group.parts.part.box.items.item.min", st_collections_group_parts_part_box_items_item_min}, + {"collections.group.parts.part.box.items.item.prefer", st_collections_group_parts_part_box_items_item_prefer}, + {"collections.group.parts.part.box.items.item.max", st_collections_group_parts_part_box_items_item_max}, + {"collections.group.parts.part.box.items.item.padding", st_collections_group_parts_part_box_items_item_padding}, + {"collections.group.parts.part.box.items.item.align", st_collections_group_parts_part_box_items_item_align}, + {"collections.group.parts.part.box.items.item.weight", st_collections_group_parts_part_box_items_item_weight}, + {"collections.group.parts.part.box.items.item.aspect", st_collections_group_parts_part_box_items_item_aspect}, + {"collections.group.parts.part.box.items.item.aspect_mode", st_collections_group_parts_part_box_items_item_aspect_mode}, + {"collections.group.parts.part.box.items.item.options", st_collections_group_parts_part_box_items_item_options}, + {"collections.group.parts.part.table.items.item.type", st_collections_group_parts_part_box_items_item_type}, /* dup */ + {"collections.group.parts.part.table.items.item.name", st_collections_group_parts_part_box_items_item_name}, /* dup */ + {"collections.group.parts.part.table.items.item.source", st_collections_group_parts_part_box_items_item_source}, /* dup */ + {"collections.group.parts.part.table.items.item.min", st_collections_group_parts_part_box_items_item_min}, /* dup */ + {"collections.group.parts.part.table.items.item.prefer", st_collections_group_parts_part_box_items_item_prefer}, /* dup */ + {"collections.group.parts.part.table.items.item.max", st_collections_group_parts_part_box_items_item_max}, /* dup */ + {"collections.group.parts.part.table.items.item.padding", st_collections_group_parts_part_box_items_item_padding}, /* dup */ + {"collections.group.parts.part.table.items.item.align", st_collections_group_parts_part_box_items_item_align}, /* dup */ + {"collections.group.parts.part.table.items.item.weight", st_collections_group_parts_part_box_items_item_weight}, /* dup */ + {"collections.group.parts.part.table.items.item.aspect", st_collections_group_parts_part_box_items_item_aspect}, /* dup */ + {"collections.group.parts.part.table.items.item.aspect_mode", st_collections_group_parts_part_box_items_item_aspect_mode}, /* dup */ + {"collections.group.parts.part.table.items.item.options", st_collections_group_parts_part_box_items_item_options}, /* dup */ + {"collections.group.parts.part.table.items.item.position", st_collections_group_parts_part_table_items_item_position}, + {"collections.group.parts.part.table.items.item.span", st_collections_group_parts_part_table_items_item_span}, + {"collections.group.parts.part.description.inherit", st_collections_group_parts_part_description_inherit}, + {"collections.group.parts.part.description.source", st_collections_group_parts_part_description_source}, + {"collections.group.parts.part.description.state", st_collections_group_parts_part_description_state}, + {"collections.group.parts.part.description.visible", st_collections_group_parts_part_description_visible}, + {"collections.group.parts.part.description.limit", st_collections_group_parts_part_description_limit}, + {"collections.group.parts.part.description.align", st_collections_group_parts_part_description_align}, + {"collections.group.parts.part.description.fixed", st_collections_group_parts_part_description_fixed}, + {"collections.group.parts.part.description.min", st_collections_group_parts_part_description_min}, + {"collections.group.parts.part.description.minmul", st_collections_group_parts_part_description_minmul}, + {"collections.group.parts.part.description.max", st_collections_group_parts_part_description_max}, + {"collections.group.parts.part.description.step", st_collections_group_parts_part_description_step}, + {"collections.group.parts.part.description.aspect", st_collections_group_parts_part_description_aspect}, + {"collections.group.parts.part.description.aspect_preference", st_collections_group_parts_part_description_aspect_preference}, + {"collections.group.parts.part.description.rel1.relative", st_collections_group_parts_part_description_rel1_relative}, + {"collections.group.parts.part.description.rel1.offset", st_collections_group_parts_part_description_rel1_offset}, + {"collections.group.parts.part.description.rel1.to", st_collections_group_parts_part_description_rel1_to}, + {"collections.group.parts.part.description.rel1.to_x", st_collections_group_parts_part_description_rel1_to_x}, + {"collections.group.parts.part.description.rel1.to_y", st_collections_group_parts_part_description_rel1_to_y}, + {"collections.group.parts.part.description.rel2.relative", st_collections_group_parts_part_description_rel2_relative}, + {"collections.group.parts.part.description.rel2.offset", st_collections_group_parts_part_description_rel2_offset}, + {"collections.group.parts.part.description.rel2.to", st_collections_group_parts_part_description_rel2_to}, + {"collections.group.parts.part.description.rel2.to_x", st_collections_group_parts_part_description_rel2_to_x}, + {"collections.group.parts.part.description.rel2.to_y", st_collections_group_parts_part_description_rel2_to_y}, + {"collections.group.parts.part.description.image.normal", st_collections_group_parts_part_description_image_normal}, + {"collections.group.parts.part.description.image.tween", st_collections_group_parts_part_description_image_tween}, + {"collections.group.parts.part.description.image.image", st_images_image}, /* dup */ + {"collections.group.parts.part.description.image.set.name", st_images_set_name}, + {"collections.group.parts.part.description.image.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.description.image.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.description.image.images.image", st_images_image}, /* dup */ + {"collections.group.parts.part.description.image.images.set.name", st_images_set_name}, + {"collections.group.parts.part.description.image.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.description.image.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.description.image.border", st_collections_group_parts_part_description_image_border}, + {"collections.group.parts.part.description.image.middle", st_collections_group_parts_part_description_image_middle}, + {"collections.group.parts.part.description.image.border_scale", st_collections_group_parts_part_description_image_border_scale}, + {"collections.group.parts.part.description.image.border_scale_by", st_collections_group_parts_part_description_image_border_scale_by}, + {"collections.group.parts.part.description.image.scale_hint", st_collections_group_parts_part_description_image_scale_hint}, + {"collections.group.parts.part.description.fill.smooth", st_collections_group_parts_part_description_fill_smooth}, + {"collections.group.parts.part.description.fill.origin.relative", st_collections_group_parts_part_description_fill_origin_relative}, + {"collections.group.parts.part.description.fill.origin.offset", st_collections_group_parts_part_description_fill_origin_offset}, + {"collections.group.parts.part.description.fill.size.relative", st_collections_group_parts_part_description_fill_size_relative}, + {"collections.group.parts.part.description.fill.size.offset", st_collections_group_parts_part_description_fill_size_offset}, + {"collections.group.parts.part.description.fill.spread", st_collections_group_parts_part_description_fill_spread}, + {"collections.group.parts.part.description.fill.type", st_collections_group_parts_part_description_fill_type}, + {"collections.group.parts.part.description.color_class", st_collections_group_parts_part_description_color_class}, + {"collections.group.parts.part.description.color", st_collections_group_parts_part_description_color}, + {"collections.group.parts.part.description.color2", st_collections_group_parts_part_description_color2}, + {"collections.group.parts.part.description.color3", st_collections_group_parts_part_description_color3}, + {"collections.group.parts.part.description.text.text", st_collections_group_parts_part_description_text_text}, + {"collections.group.parts.part.description.text.text_class", st_collections_group_parts_part_description_text_text_class}, + {"collections.group.parts.part.description.text.font", st_collections_group_parts_part_description_text_font}, + {"collections.group.parts.part.description.text.style", st_collections_group_parts_part_description_text_style}, + {"collections.group.parts.part.description.text.repch", st_collections_group_parts_part_description_text_repch}, + {"collections.group.parts.part.description.text.size", st_collections_group_parts_part_description_text_size}, + {"collections.group.parts.part.description.text.size_range", st_collections_group_parts_part_description_text_size_range}, + {"collections.group.parts.part.description.text.fit", st_collections_group_parts_part_description_text_fit}, + {"collections.group.parts.part.description.text.min", st_collections_group_parts_part_description_text_min}, + {"collections.group.parts.part.description.text.max", st_collections_group_parts_part_description_text_max}, + {"collections.group.parts.part.description.text.align", st_collections_group_parts_part_description_text_align}, + {"collections.group.parts.part.description.text.source", st_collections_group_parts_part_description_text_source}, + {"collections.group.parts.part.description.text.text_source", st_collections_group_parts_part_description_text_text_source}, + {"collections.group.parts.part.description.text.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.text.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.text.elipsis", st_collections_group_parts_part_description_text_elipsis}, + {"collections.group.parts.part.description.text.ellipsis", st_collections_group_parts_part_description_text_elipsis}, + {"collections.group.parts.part.description.box.layout", st_collections_group_parts_part_description_box_layout}, + {"collections.group.parts.part.description.box.align", st_collections_group_parts_part_description_box_align}, + {"collections.group.parts.part.description.box.padding", st_collections_group_parts_part_description_box_padding}, + {"collections.group.parts.part.description.box.min", st_collections_group_parts_part_description_box_min}, + {"collections.group.parts.part.description.table.homogeneous", st_collections_group_parts_part_description_table_homogeneous}, + {"collections.group.parts.part.description.table.align", st_collections_group_parts_part_description_table_align}, + {"collections.group.parts.part.description.table.padding", st_collections_group_parts_part_description_table_padding}, + {"collections.group.parts.part.description.table.min", st_collections_group_parts_part_description_table_min}, + {"collections.group.parts.part.description.map.perspective", st_collections_group_parts_part_description_map_perspective}, + {"collections.group.parts.part.description.map.light", st_collections_group_parts_part_description_map_light}, + {"collections.group.parts.part.description.map.rotation.center", st_collections_group_parts_part_description_map_rotation_center}, + {"collections.group.parts.part.description.map.rotation.x", st_collections_group_parts_part_description_map_rotation_x}, + {"collections.group.parts.part.description.map.rotation.y", st_collections_group_parts_part_description_map_rotation_y}, + {"collections.group.parts.part.description.map.rotation.z", st_collections_group_parts_part_description_map_rotation_z}, + {"collections.group.parts.part.description.map.on", st_collections_group_parts_part_description_map_on}, + {"collections.group.parts.part.description.map.smooth", st_collections_group_parts_part_description_map_smooth}, + {"collections.group.parts.part.description.map.alpha", st_collections_group_parts_part_description_map_alpha}, + {"collections.group.parts.part.description.map.backface_cull", st_collections_group_parts_part_description_map_backface_cull}, + {"collections.group.parts.part.description.map.perspective_on", st_collections_group_parts_part_description_map_perspective_on}, + {"collections.group.parts.part.description.perspective.zplane", st_collections_group_parts_part_description_perspective_zplane}, + {"collections.group.parts.part.description.perspective.focal", st_collections_group_parts_part_description_perspective_focal}, + {"collections.group.parts.part.description.params.int", st_collections_group_parts_part_description_params_int}, + {"collections.group.parts.part.description.params.double", st_collections_group_parts_part_description_params_double}, + {"collections.group.parts.part.description.params.string", st_collections_group_parts_part_description_params_string}, + {"collections.group.parts.part.description.params.bool", st_collections_group_parts_part_description_params_bool}, + {"collections.group.parts.part.description.params.choice", st_collections_group_parts_part_description_params_choice}, + {"collections.group.parts.part.description.images.image", st_images_image}, /* dup */ + {"collections.group.parts.part.description.images.set.name", st_images_set_name}, + {"collections.group.parts.part.description.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.description.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.description.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.styles.style.name", st_styles_style_name}, /* dup */ + {"collections.group.parts.part.description.styles.style.base", st_styles_style_base}, /* dup */ + {"collections.group.parts.part.description.styles.style.tag", st_styles_style_tag}, /* dup */ + {"collections.group.parts.part.description.color_classes.color_class.name", st_color_class_name}, /* dup */ + {"collections.group.parts.part.description.color_classes.color_class.color", st_color_class_color}, /* dup */ + {"collections.group.parts.part.description.color_classes.color_class.color2", st_color_class_color2}, /* dup */ + {"collections.group.parts.part.description.color_classes.color_class.color3", st_color_class_color3}, /* dup */ + {"collections.group.parts.part.description.programs.image", st_images_image}, /* dup */ + {"collections.group.parts.part.description.programs.set.name", st_images_set_name}, + {"collections.group.parts.part.description.programs.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.description.programs.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.description.programs.images.image", st_images_image}, /* dup */ + {"collections.group.parts.part.description.programs.images.set.name", st_images_set_name}, + {"collections.group.parts.part.description.programs.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.description.programs.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.description.programs.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.programs.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.description.programs.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.part.description.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.part.description.programs.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.part.description.programs.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.part.description.programs.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.part.description.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.part.description.programs.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.part.description.programs.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.parts.part.description.programs.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.parts.part.description.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.part.description.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.part.description.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.part.description.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.part.description.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.part.description.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.part.description.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.part.description.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.parts.part.description.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.parts.part.programs.image", st_images_image}, /* dup */ + {"collections.group.parts.part.programs.set.name", st_images_set_name}, + {"collections.group.parts.part.programs.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.programs.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.programs.images.image", st_images_image}, /* dup */ + {"collections.group.parts.part.programs.images.set.name", st_images_set_name}, + {"collections.group.parts.part.programs.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.part.programs.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.part.programs.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.programs.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.part.programs.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.part.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.part.programs.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.part.programs.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.part.programs.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.part.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.part.programs.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.part.programs.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.parts.part.programs.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.parts.part.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.part.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.part.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.part.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.part.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.part.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.part.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.part.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.parts.part.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.parts.programs.image", st_images_image}, /* dup */ + {"collections.group.parts.programs.set.name", st_images_set_name}, + {"collections.group.parts.programs.set.image.image", st_images_set_image_image}, + {"collections.group.parts.programs.set.image.size", st_images_set_image_size}, + {"collections.group.parts.programs.images.image", st_images_image}, /* dup */ + {"collections.group.parts.programs.images.set.name", st_images_set_name}, + {"collections.group.parts.programs.images.set.image.image", st_images_set_image_image}, + {"collections.group.parts.programs.images.set.image.size", st_images_set_image_size}, + {"collections.group.parts.programs.font", st_fonts_font}, /* dup */ + {"collections.group.parts.programs.fonts.font", st_fonts_font}, /* dup */ + {"collections.group.parts.programs.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.programs.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.programs.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.programs.program.filter", st_collections_group_programs_program_filter}, /* dup */ + {"collections.group.parts.programs.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.programs.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.programs.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.programs.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.programs.program.after", st_collections_group_programs_program_after}, + {"collections.group.parts.programs.program.api", st_collections_group_programs_program_api}, + {"collections.group.parts.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.parts.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.parts.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.parts.program.filter", st_collections_group_programs_program_filter}, /* dup */ + {"collections.group.parts.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.parts.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.parts.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.parts.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.parts.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.parts.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.program.name", st_collections_group_programs_program_name}, /* dup */ + {"collections.group.program.signal", st_collections_group_programs_program_signal}, /* dup */ + {"collections.group.program.source", st_collections_group_programs_program_source}, /* dup */ + {"collections.group.program.filter", st_collections_group_programs_program_filter}, /* dup */ + {"collections.group.program.in", st_collections_group_programs_program_in}, /* dup */ + {"collections.group.program.action", st_collections_group_programs_program_action}, /* dup */ + {"collections.group.program.transition", st_collections_group_programs_program_transition}, /* dup */ + {"collections.group.program.target", st_collections_group_programs_program_target}, /* dup */ + {"collections.group.program.after", st_collections_group_programs_program_after}, /* dup */ + {"collections.group.program.api", st_collections_group_programs_program_api}, /* dup */ + {"collections.group.programs.program.name", st_collections_group_programs_program_name}, + {"collections.group.programs.program.signal", st_collections_group_programs_program_signal}, + {"collections.group.programs.program.source", st_collections_group_programs_program_source}, + {"collections.group.programs.program.filter", st_collections_group_programs_program_filter}, /* dup */ + {"collections.group.programs.program.in", st_collections_group_programs_program_in}, + {"collections.group.programs.program.action", st_collections_group_programs_program_action}, + {"collections.group.programs.program.transition", st_collections_group_programs_program_transition}, + {"collections.group.programs.program.target", st_collections_group_programs_program_target}, + {"collections.group.programs.program.after", st_collections_group_programs_program_after}, + {"collections.group.programs.program.api", st_collections_group_programs_program_api}, + {"collections.group.programs.image", st_images_image}, /* dup */ + {"collections.group.programs.set.name", st_images_set_name}, + {"collections.group.programs.set.image.image", st_images_set_image_image}, + {"collections.group.programs.set.image.size", st_images_set_image_size}, + {"collections.group.programs.images.image", st_images_image}, /* dup */ + {"collections.group.programs.images.set.name", st_images_set_name}, + {"collections.group.programs.images.set.image.image", st_images_set_image_image}, + {"collections.group.programs.images.set.image.size", st_images_set_image_size}, + {"collections.group.programs.font", st_fonts_font}, /* dup */ + {"collections.group.programs.fonts.font", st_fonts_font} /* dup */ +}; + +New_Object_Handler object_handlers[] = +{ + {"externals", NULL}, + {"images", NULL}, + {"images.set", ob_images_set}, + {"images.set.image", ob_images_set_image}, + {"fonts", NULL}, + {"data", NULL}, + {"styles", NULL}, + {"styles.style", ob_styles_style}, + {"color_classes", NULL}, + {"color_classes.color_class", ob_color_class}, + {"spectra", NULL}, + {"collections", ob_collections}, + {"collections.externals", NULL}, /* dup */ + {"collections.set", ob_images_set}, /* dup */ + {"collections.set.image", ob_images_set_image}, /* dup */ + {"collections.images", NULL}, /* dup */ + {"collections.images.set", ob_images_set}, /* dup */ + {"collections.images.set.image", ob_images_set_image}, /* dup */ + {"collections.fonts", NULL}, /* dup */ + {"collections.styles", NULL}, /* dup */ + {"collections.styles.style", ob_styles_style}, /* dup */ + {"collections.color_classes", NULL}, /* dup */ + {"collections.color_classes.color_class", ob_color_class}, /* dup */ + {"collections.sounds", NULL}, + {"collections.group.sounds", NULL}, /* dup */ + {"collections.sounds.sample", NULL}, + {"collections.group.sounds.sample", NULL}, /* dup */ + {"collections.group", ob_collections_group}, + {"collections.group.data", NULL}, + {"collections.group.limits", NULL}, + {"collections.group.script", ob_collections_group_script}, + {"collections.group.lua_script", ob_collections_group_lua_script}, + {"collections.group.externals", NULL}, /* dup */ + {"collections.group.set", ob_images_set}, /* dup */ + {"collections.group.set.image", ob_images_set_image}, /* dup */ + {"collections.group.images", NULL}, /* dup */ + {"collections.group.images.set", ob_images_set}, /* dup */ + {"collections.group.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.fonts", NULL}, /* dup */ + {"collections.group.styles", NULL}, /* dup */ + {"collections.group.styles.style", ob_styles_style}, /* dup */ + {"collections.group.color_classes", NULL}, /* dup */ + {"collections.group.color_classes.color_class", ob_color_class}, /* dup */ + {"collections.group.parts", NULL}, + {"collections.group.parts.set", ob_images_set}, /* dup */ + {"collections.group.parts.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.images", NULL}, /* dup */ + {"collections.group.parts.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.fonts", NULL}, /* dup */ + {"collections.group.parts.styles", NULL}, /* dup */ + {"collections.group.parts.styles.style", ob_styles_style}, /* dup */ + {"collections.group.parts.color_classes", NULL}, /* dup */ + {"collections.group.parts.color_classes.color_class", ob_color_class}, /* dup */ + {"collections.group.parts.part", ob_collections_group_parts_part}, + {"collections.group.parts.part.dragable", NULL}, + {"collections.group.parts.part.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.images", NULL}, /* dup */ + {"collections.group.parts.part.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.fonts", NULL}, /* dup */ + {"collections.group.parts.part.styles", NULL}, /* dup */ + {"collections.group.parts.part.styles.style", ob_styles_style}, /* dup */ + {"collections.group.parts.part.color_classes", NULL}, /* dup */ + {"collections.group.parts.part.color_classes.color_class", ob_color_class}, /* dup */ + {"collections.group.parts.part.box", NULL}, + {"collections.group.parts.part.box.items", NULL}, + {"collections.group.parts.part.box.items.item", ob_collections_group_parts_part_box_items_item}, + {"collections.group.parts.part.table", NULL}, + {"collections.group.parts.part.table.items", NULL}, + {"collections.group.parts.part.table.items.item", ob_collections_group_parts_part_box_items_item}, /* dup */ + {"collections.group.parts.part.description", ob_collections_group_parts_part_description}, + {"collections.group.parts.part.description.rel1", NULL}, + {"collections.group.parts.part.description.rel2", NULL}, + {"collections.group.parts.part.description.image", NULL}, /* dup */ + {"collections.group.parts.part.description.image.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.description.image.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.description.image.images", NULL}, /* dup */ + {"collections.group.parts.part.description.image.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.description.image.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.description.fill", NULL}, + {"collections.group.parts.part.description.fill.origin", NULL}, + {"collections.group.parts.part.description.fill.size", NULL}, + {"collections.group.parts.part.description.text", NULL}, + {"collections.group.parts.part.description.text.fonts", NULL}, /* dup */ + {"collections.group.parts.part.description.images", NULL}, /* dup */ + {"collections.group.parts.part.description.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.description.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.description.fonts", NULL}, /* dup */ + {"collections.group.parts.part.description.styles", NULL}, /* dup */ + {"collections.group.parts.part.description.styles.style", ob_styles_style}, /* dup */ + {"collections.group.parts.part.description.box", NULL}, + {"collections.group.parts.part.description.table", NULL}, + {"collections.group.parts.part.description.map", NULL}, + {"collections.group.parts.part.description.map.rotation", NULL}, + {"collections.group.parts.part.description.perspective", NULL}, + {"collections.group.parts.part.description.params", NULL}, + {"collections.group.parts.part.description.color_classes", NULL}, /* dup */ + {"collections.group.parts.part.description.color_classes.color_class", ob_color_class}, /* dup */ + {"collections.group.parts.part.description.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.part.description.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.part.description.programs", NULL}, /* dup */ + {"collections.group.parts.part.description.programs.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.description.programs.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.description.programs.images", NULL}, /* dup */ + {"collections.group.parts.part.description.programs.images.set", ob_images_set}, + {"collections.group.parts.part.description.programs.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.description.programs.fonts", NULL}, /* dup */ + {"collections.group.parts.part.description.programs.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.part.description.programs.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.part.description.script", ob_collections_group_script}, /* dup */ + {"collections.group.parts.part.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.part.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.part.programs", NULL}, /* dup */ + {"collections.group.parts.part.programs.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.programs.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.programs.images", NULL}, /* dup */ + {"collections.group.parts.part.programs.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.part.programs.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.part.programs.fonts", NULL}, /* dup */ + {"collections.group.parts.part.programs.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.part.programs.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.part.script", ob_collections_group_script}, /* dup */ + {"collections.group.parts.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.programs", NULL}, /* dup */ + {"collections.group.parts.programs.set", ob_images_set}, /* dup */ + {"collections.group.parts.programs.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.programs.images", NULL}, /* dup */ + {"collections.group.parts.programs.images.set", ob_images_set}, /* dup */ + {"collections.group.parts.programs.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.parts.programs.fonts", NULL}, /* dup */ + {"collections.group.parts.programs.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.parts.programs.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.parts.script", ob_collections_group_script}, /* dup */ + {"collections.group.program", ob_collections_group_programs_program}, /* dup */ + {"collections.group.program.script", ob_collections_group_programs_program_script}, /* dup */ + {"collections.group.programs", NULL}, + {"collections.group.programs.set", ob_images_set}, /* dup */ + {"collections.group.programs.set.image", ob_images_set_image}, /* dup */ + {"collections.group.programs.images", NULL}, /* dup */ + {"collections.group.programs.images.set", ob_images_set}, /* dup */ + {"collections.group.programs.images.set.image", ob_images_set_image}, /* dup */ + {"collections.group.programs.fonts", NULL}, /* dup */ + {"collections.group.programs.program", ob_collections_group_programs_program}, + {"collections.group.programs.program.script", ob_collections_group_programs_program_script}, + {"collections.group.programs.script", ob_collections_group_script} /* dup */ +}; + +/*****/ + +int +object_handler_num(void) +{ + return sizeof(object_handlers) / sizeof (New_Object_Handler); +} + +int +statement_handler_num(void) +{ + return sizeof(statement_handlers) / sizeof (New_Object_Handler); +} + +static void +_edje_part_description_fill(Edje_Part_Description_Spec_Fill *fill) +{ + fill->smooth = 1; + fill->pos_rel_x = FROM_DOUBLE(0.0); + fill->pos_abs_x = 0; + fill->rel_x = FROM_DOUBLE(1.0); + fill->abs_x = 0; + fill->pos_rel_y = FROM_DOUBLE(0.0); + fill->pos_abs_y = 0; + fill->rel_y = FROM_DOUBLE(1.0); + fill->abs_y = 0; + fill->angle = 0; + fill->spread = 0; + fill->type = EDJE_FILL_TYPE_SCALE; +} + +static void +_edje_part_description_image_remove(Edje_Part_Description_Image *ed) +{ + unsigned int j; + + if (!ed) return; + + data_queue_image_remove(&(ed->image.id), &(ed->image.set)); + + for (j = 0; j < ed->image.tweens_count; ++j) + data_queue_image_remove(&(ed->image.tweens[j]->id), + &(ed->image.tweens[j]->set)); +} + +void +part_description_image_cleanup(Edje_Part *ep) +{ + Edje_Part_Description_Image *ed; + unsigned int j; + + if (ep->type != EDJE_PART_TYPE_IMAGE) + return ; + + ed = (Edje_Part_Description_Image*) ep->default_desc; + _edje_part_description_image_remove(ed); + + for (j = 0; j < ep->other.desc_count; j++) + { + ed = (Edje_Part_Description_Image*) ep->other.desc[j]; + _edje_part_description_image_remove(ed); + } +} + +static Edje_Part_Description_Common * +_edje_part_description_alloc(unsigned char type, const char *collection, const char *part) +{ + Edje_Part_Description_Common *result = NULL; + + switch (type) + { + case EDJE_PART_TYPE_SPACER: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + result = mem_alloc(SZ(Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Text)); + + ed->text.color3.r = 0; + ed->text.color3.g = 0; + ed->text.color3.b = 0; + ed->text.color3.a = 128; + ed->text.align.x = FROM_DOUBLE(0.5); + ed->text.align.y = FROM_DOUBLE(0.5); + ed->text.id_source = -1; + ed->text.id_text_source = -1; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Image)); + + ed->image.id = -1; + + _edje_part_description_fill(&ed->image.fill); + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Proxy)); + + ed->proxy.id = -1; + + _edje_part_description_fill(&ed->proxy.fill); + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Box)); + + ed->box.layout = NULL; + ed->box.alt_layout = NULL; + ed->box.align.x = FROM_DOUBLE(0.5); + ed->box.align.y = FROM_DOUBLE(0.5); + ed->box.padding.x = 0; + ed->box.padding.y = 0; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_Table)); + + ed->table.homogeneous = EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE; + ed->table.align.x = FROM_DOUBLE(0.5); + ed->table.align.y = FROM_DOUBLE(0.5); + ed->table.padding.x = 0; + ed->table.padding.y = 0; + + result = &ed->common; + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *ed; + + ed = mem_alloc(SZ(Edje_Part_Description_External)); + + ed->external_params = NULL; + + result = &ed->common; + break; + } + } + + if (!result) + { + ERR("Unknown type %i of part %s in collection %s.", + type, part, collection); + exit(-1); + } + + return result; +} + +static void +_edje_program_check(const char *name, Edje_Program *me, Edje_Program **pgrms, unsigned int count) +{ + Edje_Part_Collection *pc; + unsigned int i; + Edje_Program_Parser *epp; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + for (i = 0; i < count; ++i) + if (pgrms[i]->name) + if (pgrms[i] != me && (!strcmp(name, pgrms[i]->name))) + { + epp = (Edje_Program_Parser *)pgrms[i]; + if (!epp->can_override) + { + ERR("parse error %s:%i. There is already a program of the name %s", + file_in, line - 1, name); + exit(-1); + } + else + { + _edje_program_remove(pc, me); + current_program = pgrms[i]; + epp->can_override = EINA_FALSE; + return; + } + } +} + +static void +_edje_program_copy(Edje_Program *ep, Edje_Program *ep2) +{ + Edje_Part_Collection *pc; + Edje_Program_Target *et, *et2; + Edje_Program_After *pa, *pa2; + Edje_Program_Parser *epp; + Eina_List *l; + char *name; + char *copy; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + #define STRDUP(x) x ? strdup(x) : NULL + ep->name = STRDUP(ep2->name); + + _edje_program_remove(pc, current_program); + ep->signal = STRDUP(ep2->signal); + ep->source = STRDUP(ep2->source); + _edje_program_insert(pc, current_program); + + ep->filter.part = STRDUP(ep2->filter.part); + ep->filter.state = STRDUP(ep2->filter.state); + ep->in.from = ep2->in.from; + ep->in.range = ep2->in.range; + ep->action = ep2->action; + ep->state = STRDUP(ep2->state); + ep->state2 = STRDUP(ep2->state2); + ep->value = ep2->value; + ep->value2 = ep2->value2; + ep->tween.mode = ep2->tween.mode; + ep->tween.time = ep2->tween.time; + ep->tween.v1 = ep2->tween.v1; + ep->tween.v2 = ep2->tween.v2; + ep->sample_name = STRDUP(ep2->sample_name); + ep->tone_name = STRDUP(ep2->tone_name); + ep->duration = ep2->duration; + ep->speed = ep2->speed; + + EINA_LIST_FOREACH(ep2->targets, l, et2) + { + name = (char*) (et2 + 1); + et = mem_alloc(SZ(Edje_Program_Target) + strlen(name) + 1); + ep->targets = eina_list_append(ep->targets, et); + copy = (char*) (et + 1); + + memcpy(copy, name, strlen(name) + 1); + + if (ep2->action == EDJE_ACTION_TYPE_STATE_SET) + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_ACTION_STOP) + data_queue_copied_program_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_SET) + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP) + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_DRAG_VAL_PAGE) + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_FOCUS_SET) + + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else if (ep2->action == EDJE_ACTION_TYPE_FOCUS_OBJECT) + data_queue_copied_part_lookup(pc, &(et2->id), &(et->id)); + else + { + ERR("parse error %s:%i. target may only be used after action", + file_in, line - 1); + exit(-1); + } + } + + EINA_LIST_FOREACH(ep2->after, l, pa2) + { + pa = mem_alloc(SZ(Edje_Program_After)); + ep->after = eina_list_append(ep->after, pa); + + data_queue_copied_program_lookup(pc, &(pa2->id), &(pa->id)); + } + + ep->api.name = STRDUP(ep2->api.name); + ep->api.description = STRDUP(ep2->api.description); + data_queue_copied_part_lookup(pc, &(ep2->param.src), &(ep->param.src)); + data_queue_copied_part_lookup(pc, &(ep2->param.dst), &(ep->param.dst)); + + epp = (Edje_Program_Parser *)ep; + epp->can_override = EINA_TRUE; + + #undef STRDUP +} + +/*****/ + +/** + @edcsection{toplevel,Top-Level blocks} + */ + +/** + @page edcref + + @block + externals + @context + externals { + external: "name"; + } + @description + The "externals" block is used to list each external module file that will be used in others + programs. + @endblock + + @property + external + @parameters + [external filename] + @effect + Used to add a file to the externals list. + @endproperty + */ +static void +st_externals_external(void) +{ + External *ex; + + check_arg_count(1); + + if (!edje_file->external_dir) + edje_file->external_dir = mem_alloc(SZ(Edje_External_Directory)); + + ex = mem_alloc(SZ(External)); + ex->name = parse_str(0); + { + Eina_List *l; + External *lex; + + EINA_LIST_FOREACH(externals, l, lex) + { + if (!strcmp(lex->name, ex->name)) + { + free(ex->name); + free(ex); + return; + } + } + } + externals = eina_list_append(externals, ex); + + if (edje_file->external_dir) + { + edje_file->external_dir->entries_count++; + edje_file->external_dir->entries = realloc(edje_file->external_dir->entries, + sizeof (Edje_External_Directory) * edje_file->external_dir->entries_count); + memset(edje_file->external_dir->entries + edje_file->external_dir->entries_count - 1, + 0, sizeof (Edje_External_Directory)); + if (!edje_file->external_dir->entries) + { + ERR("not enough memory"); + exit(-1); + } + + edje_file->external_dir->entries[edje_file->external_dir->entries_count - 1].entry = mem_strdup(ex->name); + } +} + +/** + @page edcref + + @block + images + @context + images { + image: "filename1.ext" COMP; + image: "filename2.ext" LOSSY 99; + set { + name: "image_name_used"; + image { + image: "filename3.ext" LOSSY 90; + size: 201 201 500 500; + } + image { + image: "filename4.ext" COMP; + size: 51 51 200 200; + } + image { + image: "filename5.ext" COMP; + size: 11 11 50 50; + } + image { + image: "filename6.ext" RAW; + size: 0 0 10 10; + } + } + .. + } + @description + The "images" block is used to list each image file that will be used in + the theme along with its compression method (if any). + Besides the document's root, additional "images" blocks can be + included inside other blocks, normally "collections", "group" and + "part", easing maintenance of the file list when the theme is split + among multiple files. + @endblock + + @property + image + @parameters + [image file] [compression method] (compression level) + @effect + Used to include each image file. The full path to the directory holding + the images can be defined later with edje_cc's "-id" option. + Compression methods: + @li RAW: Uncompressed. + @li COMP: Lossless compression. + @li LOSSY [0-100]: Lossy compression with quality from 0 to 100. + @li USER: Do not embed the file, refer to the external file instead. + @endproperty + */ +static void +st_images_image(void) +{ + Edje_Image_Directory_Entry *img; + const char *tmp; + unsigned int i; + int v; + + if (!edje_file->image_dir) + edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory)); + + tmp = parse_str(0); + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + if (!strcmp(edje_file->image_dir->entries[i].entry, tmp)) + { + free((char*) tmp); + return; + } + + edje_file->image_dir->entries_count++; + edje_file->image_dir->entries = realloc(edje_file->image_dir->entries, + sizeof (Edje_Image_Directory_Entry) * edje_file->image_dir->entries_count); + memset(edje_file->image_dir->entries + edje_file->image_dir->entries_count - 1, + 0, sizeof (Edje_Image_Directory_Entry)); + if (!edje_file->image_dir->entries) + { + ERR("No enough memory."); + exit(-1); + } + + img = edje_file->image_dir->entries + edje_file->image_dir->entries_count - 1; + + img->entry = tmp; + img->id = edje_file->image_dir->entries_count - 1; + v = parse_enum(1, + "RAW", 0, + "COMP", 1, + "LOSSY", 2, + "USER", 3, + NULL); + if (v == 0) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 0; + } + else if (v == 1) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT; + img->source_param = 1; + } + else if (v == 2) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY; + img->source_param = 0; + } + else if (v == 3) + { + img->source_type = EDJE_IMAGE_SOURCE_TYPE_EXTERNAL; + img->source_param = 0; + } + if (img->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) + check_arg_count(2); + else + { + img->source_param = parse_int_range(2, 0, 100); + check_arg_count(3); + } +} + +/** + @page edcref + + @block + set + @context + set { + name: "image_name_used"; + image { + image: "filename3.ext" LOSSY 90; + size: 201 201 500 500; + } + image { + image: "filename4.ext" COMP; + size: 51 51 200 200; + } + image { + image: "filename5.ext" COMP; + size: 11 11 50 50; + } + image { + image: "filename6.ext" RAW; + size: 0 0 10 10; + } + } + @description + The "set" block is used to define an image with different content depending on their size. + Besides the document's root, additional "set" blocks can be + included inside other blocks, normally "collections", "group" and + "part", easing maintenance of the file list when the theme is split + among multiple files. + @endblock + */ +static void +ob_images_set(void) +{ + if (!edje_file->image_dir) + edje_file->image_dir = mem_alloc(SZ(Edje_Image_Directory)); + + edje_file->image_dir->sets_count++; + edje_file->image_dir->sets = realloc(edje_file->image_dir->sets, + sizeof (Edje_Image_Directory_Set) * edje_file->image_dir->sets_count); + memset(edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1, + 0, sizeof (Edje_Image_Directory_Set)); + if (!edje_file->image_dir->sets) + { + ERR("Not enough memory."); + exit(-1); + } + edje_file->image_dir->sets[edje_file->image_dir->sets_count - 1].id = edje_file->image_dir->sets_count - 1; +} + +/** + @page edcref + + @property + name + @parameters + [image name] + @effect + Define the name that refer to this image description. + @endproperty +*/ +static void +st_images_set_name(void) +{ + check_arg_count(1); + + edje_file->image_dir->sets[edje_file->image_dir->sets_count - 1].name = parse_str(0); +} + +/** + @page edcref + + @block + image + @description + The "image" block inside a "set" block define the characteristic of an image. + Every block will describe one image and the size rule to use it. + @endblock +**/ +static void +ob_images_set_image(void) +{ + Edje_Image_Directory_Set_Entry *entry; + Edje_Image_Directory_Set *set; + + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; + + entry = mem_alloc(SZ(Edje_Image_Directory_Set_Entry)); + + set->entries = eina_list_append(set->entries, entry); +} + +/** + @page edcref + + @property + image + @parameters + [image file] [compression method] (compression level) + @effect + Used to include each image file. The full path to the directory holding + the images can be defined later with edje_cc's "-id" option. + Compression methods: + @li RAW: Uncompressed. + @li COMP: Lossless compression. + @li LOSSY [0-100]: Lossy compression with quality from 0 to 100. + @li USER: Do not embed the file, refer to the external file instead. + @endproperty +**/ +static void +st_images_set_image_image(void) +{ + Edje_Image_Directory_Set_Entry *entry; + Edje_Image_Directory_Set *set; + unsigned int i; + + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; + entry = eina_list_data_get(eina_list_last(set->entries)); + + /* Add the image to the global pool with the same syntax. */ + st_images_image(); + + entry->name = parse_str(0); + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + if (!strcmp(edje_file->image_dir->entries[i].entry, entry->name)) + { + entry->id = i; + return; + } +} + +/** + @page edcref + + @property + size + @parameters + [minw minh maxw mawh] + @effect + Define the minimal and maximal size that will select the specified image. + @endproperty +*/ +static void +st_images_set_image_size(void) +{ + Edje_Image_Directory_Set_Entry *entry; + Edje_Image_Directory_Set *set; + + set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; + entry = eina_list_data_get(eina_list_last(set->entries)); + + entry->size.min.w = parse_int(0); + entry->size.min.h = parse_int(1); + entry->size.max.w = parse_int(2); + entry->size.max.h = parse_int(3); + + if (entry->size.min.w > entry->size.max.w + || entry->size.min.h > entry->size.max.h) + { + ERR("parse error %s:%i. Image min and max size are not in the right order ([%i, %i] < [%i, %i])", + file_in, line - 1, + entry->size.min.w, entry->size.min.h, + entry->size.max.w, entry->size.max.h); + exit(-1); + } +} + +/** + @page edcref + + @block + fonts + @context + fonts { + font: "filename1.ext" "fontname"; + font: "filename2.ext" "otherfontname"; + .. + } + @description + The "fonts" block is used to list each font file with an alias used later + in the theme. As with the "images" block, additional "fonts" blocks can + be included inside other blocks. + @endblock + + @property + font + @parameters + [font filename] [font alias] + @effect + Defines each font "file" and "alias", the full path to the directory + holding the font files can be defined with edje_cc's "-fd" option. + @endproperty + */ +static void +st_fonts_font(void) +{ + Font *fn; + + check_arg_count(2); + + if (!edje_file->fonts) + edje_file->fonts = eina_hash_string_small_new(free); + + fn = mem_alloc(SZ(Font)); + fn->file = parse_str(0); + fn->name = parse_str(1); + + if (eina_hash_find(edje_file->fonts, fn->name)) + { + free(fn->file); + free(fn->name); + free(fn); + return; + } + + eina_hash_direct_add(edje_file->fonts, fn->name, fn); +} + +/** + @page edcref + @block + data + @context + data { + item: "key" "value"; + file: "otherkey" "filename.ext"; + .. + } + @description + The "data" block is used to pass arbitrary parameters from the theme to + the application. Unlike the "images" and "fonts" blocks, additional + "data" blocks can only be included inside the "group" block. + @endblock + + @property + item + @parameters + [parameter name] [parameter value] + @effect + Defines a new parameter, the value will be the string specified next to + it. + @endproperty + */ +static void +st_data_item(void) +{ + Edje_String *es; + char *key; + + check_arg_count(2); + + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); + es->str = parse_str(1); + + if (!edje_file->data) + edje_file->data = eina_hash_string_small_new(free); + + /* FIXME: check if data already exist */ + eina_hash_direct_add(edje_file->data, key, es); +} + +/** + @page edcref + @property + file + @parameters + [parameter name] [parameter filename] + @effect + Defines a new parameter, the value will be the contents of the + specified file formated as a single string of text. This property only + works with plain text files. + @endproperty + */ +static void +st_data_file(void) +{ + const char *data; + const char *over; + Edje_String *es; + char *filename; + char *value; + char *key; + int fd; + int i; + struct stat buf; + + check_arg_count(2); + + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); + filename = parse_str(1); + + fd = open(filename, O_RDONLY | O_BINARY, S_IRUSR | S_IWUSR); + if (fd < 0) + { + ERR("%s:%i when opening file \"%s\": \"%s\"", + file_in, line, filename, strerror(errno)); + exit(-1); + } + + if (fstat(fd, &buf)) + { + ERR("%s:%i when stating file \"%s\": \"%s\"", + file_in, line, filename, strerror(errno)); + exit(-1); + } + + data = mmap(NULL, buf.st_size, PROT_READ, MAP_SHARED, fd, 0); + if (data == MAP_FAILED) + { + ERR("%s:%i when mapping file \"%s\": \"%s\"", + file_in, line, filename, strerror(errno)); + exit(-1); + } + + over = data; + for (i = 0; i < buf.st_size; ++i, ++over) + if (*over == '\0') + { + ERR("%s:%i file \"%s\" is a binary file.", file_in, line, filename); + exit(-1); + } + + value = malloc(sizeof (char) * buf.st_size + 1); + snprintf(value, buf.st_size + 1, "%s", data); + + munmap((void*)data, buf.st_size); + close(fd); + + es->str = value; + + eina_hash_direct_add(edje_file->data, key, es); + + free(filename); +} + +/** + @page edcref + @block + color_classes + @context + color_classes { + color_class { + name: "colorclassname"; + color: [0-255] [0-255] [0-255] [0-255]; + color2: [0-255] [0-255] [0-255] [0-255]; + color3: [0-255] [0-255] [0-255] [0-255] + } + .. + } + @description + The "color_classes" block contains a list of one or more "color_class" + blocks. Each "color_class" allows the designer to name an arbitrary + group of colors to be used in the theme, the application can use that + name to alter the color values at runtime. + @endblock +*/ +static void +ob_color_class(void) +{ + Edje_Color_Class *cc; + + cc = mem_alloc(SZ(Edje_Color_Class)); + edje_file->color_classes = eina_list_append(edje_file->color_classes, cc); + + cc->r = 0; + cc->g = 0; + cc->b = 0; + cc->a = 0; + cc->r2 = 0; + cc->g2 = 0; + cc->b2 = 0; + cc->a2 = 0; + cc->r3 = 0; + cc->g3 = 0; + cc->b3 = 0; + cc->a3 = 0; +} + +/** + @page edcref + + @property + name + @parameters + [color class name] + @effect + Sets the name for the color class, used as reference by both the theme + and the application. + @endproperty +*/ +static void +st_color_class_name(void) +{ + Edje_Color_Class *cc, *tcc; + Eina_List *l; + + cc = eina_list_data_get(eina_list_last(edje_file->color_classes)); + cc->name = parse_str(0); + EINA_LIST_FOREACH(edje_file->color_classes, l, tcc) + { + if ((cc != tcc) && (!strcmp(cc->name, tcc->name))) + { + ERR("parse error %s:%i. There is already a color class named \"%s\"", + file_in, line - 1, cc->name); + exit(-1); + } + } +} + +/** + @page edcref + @property + color + @parameters + [red] [green] [blue] [alpha] + @effect + The main color. + @endproperty +*/ +static void +st_color_class_color(void) +{ + Edje_Color_Class *cc; + + check_arg_count(4); + + cc = eina_list_data_get(eina_list_last(edje_file->color_classes)); + cc->r = parse_int_range(0, 0, 255); + cc->g = parse_int_range(1, 0, 255); + cc->b = parse_int_range(2, 0, 255); + cc->a = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @property + color2 + @parameters + [red] [green] [blue] [alpha] + @effect + Used as shadow in text and textblock parts. + @endproperty +*/ +static void +st_color_class_color2(void) +{ + Edje_Color_Class *cc; + + check_arg_count(4); + + cc = eina_list_data_get(eina_list_last(edje_file->color_classes)); + cc->r2 = parse_int_range(0, 0, 255); + cc->g2 = parse_int_range(1, 0, 255); + cc->b2 = parse_int_range(2, 0, 255); + cc->a2 = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @property + color3 + @parameters + [red] [green] [blue] [alpha] + @effect + Used as outline in text and textblock parts. + @endproperty +*/ +static void +st_color_class_color3(void) +{ + Edje_Color_Class *cc; + + check_arg_count(4); + + cc = eina_list_data_get(eina_list_last(edje_file->color_classes)); + cc->r3 = parse_int_range(0, 0, 255); + cc->g3 = parse_int_range(1, 0, 255); + cc->b3 = parse_int_range(2, 0, 255); + cc->a3 = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @block + styles + @context + styles { + style { + name: "stylename"; + base: "..default style properties.."; + + tag: "tagname" "..style properties.."; + .. + } + .. + } + @description + The "styles" block contains a list of one or more "style" blocks. A + "style" block is used to create style \ for advanced TEXTBLOCK + formatting. + @endblock +*/ +static void +ob_styles_style(void) +{ + Edje_Style *stl; + + stl = mem_alloc(SZ(Edje_Style)); + edje_file->styles = eina_list_append(edje_file->styles, stl); +} + +/** + @page edcref + @property + name + @parameters + [style name] + @effect + The name of the style to be used as reference later in the theme. + @endproperty +*/ +static void +st_styles_style_name(void) +{ + Edje_Style *stl, *tstl; + Eina_List *l; + + stl = eina_list_data_get(eina_list_last(edje_file->styles)); + stl->name = parse_str(0); + EINA_LIST_FOREACH(edje_file->styles, l, tstl) + { + if (stl->name && tstl->name && (stl != tstl) && (!strcmp(stl->name, tstl->name))) + { + ERR("parse error %s:%i. There is already a style named \"%s\"", + file_in, line - 1, stl->name); + exit(-1); + } + } +} + +/** + @page edcref + @property + base + @parameters + [style properties string] + @effect + The default style properties that will be applied to the complete + text. + @endproperty +*/ +static void +st_styles_style_base(void) +{ + Edje_Style *stl; + Edje_Style_Tag *tag; + + stl = eina_list_data_get(eina_list_last(edje_file->styles)); + if (stl->tags) + { + ERR("parse error %s:%i. There is already a basic format for the style", + file_in, line - 1); + exit(-1); + } + tag = mem_alloc(SZ(Edje_Style_Tag)); + tag->key = mem_strdup("DEFAULT"); + tag->value = parse_str(0); + stl->tags = eina_list_append(stl->tags, tag); +} + +/** + @page edcref + @property + tag + @parameters + [tag name] [style properties string] + @effect + Style to be applied only to text between style \..\. + When creating "paired" tags, like \\, A '+' should be added at the start of the style properties of the first part (\). + If the second part (\) is also defined, a '-' should be prepended to it's style properties. + This only applies to paired tags; Single tags, like \, must not include a starting '+'. + @endproperty +*/ +static void +st_styles_style_tag(void) +{ + Edje_Style *stl; + Edje_Style_Tag *tag; + + stl = eina_list_data_get(eina_list_last(edje_file->styles)); + tag = mem_alloc(SZ(Edje_Style_Tag)); + tag->key = parse_str(0); + tag->value = parse_str(1); + stl->tags = eina_list_append(stl->tags, tag); +} + +/** + @page edcref + @block + collections + @context + collections { + .. + group { } + group { } + sounds { } + .. + } + @description + The "collections" block is used to list the groups that compose the + theme. Additional "collections" blocks do not prevent overriding group + names. The "sounds" block comprises of all sound definitions. + @endblock +*/ +static void +ob_collections(void) +{ + if (!edje_file->collection) + edje_file->collection = eina_hash_string_small_new(NULL); +} + +/** + @page edcref + @block + sounds + @context + sounds { + sample { + name: "sound_file1" COMP; + source: "sound_file1.wav"; + } + sample { + name: "sound_file2" LOSSY 0.4; + source: "sound_file2.wav"; + } + tone: "tone-1" 2300; + } + + @description + The "sounds" block contains a list of one or more sound sample and tones items. + @endblock + @block + sample + @context + sample { + name: "sound_file1" RAW; + source: "sound_file1.wav"; + } + sample { + name: "sound_file2" LOSSY 0.5; + source: "sound_file2.wav"; + } + sample { + name: "sound_file3" COMP; + source: "sound_file3.wav"; + } + sample { + name: "sound_file4" AS_IS; + source: "sound_file1.wav"; + } + @description + The sample block defines the sound sample. + @endblock + @property + name + @parameters + [sample name] [compression type] [if lossy, then quality] + @effect + Used to include each sound file. The full path to the directory holding + the sounds can be defined later with edje_cc's "-sd" option. + @li RAW: Uncompressed. + @li COMP: Lossless compression. + @li LOSSY [-0.1 - 1.0]: Lossy compression with quality from 0 to 1.0. + @li AS_IS: Check for re-encoding, no compression/encoding, just write the file information as it is. + @endproperty + @since 1.1.0 + */ +static void +st_collections_group_sound_sample_name(void) +{ + Edje_Sound_Sample *sample; + const char *tmp; + unsigned int i; + + if (!edje_file->sound_dir) + edje_file->sound_dir = mem_alloc(SZ(Edje_Sound_Directory)); + + tmp = parse_str(0); + + for (i = 0; i < edje_file->sound_dir->samples_count; i++) + { + if (!strcmp(edje_file->sound_dir->samples[i].name, tmp)) + { + free((char *)tmp); + return; + } + } + + edje_file->sound_dir->samples_count++; + edje_file->sound_dir->samples = + realloc(edje_file->sound_dir->samples, + sizeof(Edje_Sound_Sample) * + edje_file->sound_dir->samples_count); + + if (!edje_file->sound_dir->samples) + { + ERR("No enough memory."); + exit(-1); + } + + sample = + edje_file->sound_dir->samples + + edje_file->sound_dir->samples_count - 1; + memset(sample, 0, sizeof (Edje_Sound_Sample)); + + sample->name = tmp; + sample->id = edje_file->sound_dir->samples_count - 1; + sample->compression = parse_enum(1, + "RAW", EDJE_SOUND_SOURCE_TYPE_INLINE_RAW, + "COMP", EDJE_SOUND_SOURCE_TYPE_INLINE_COMP, + "LOSSY", EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY, + "AS_IS", EDJE_SOUND_SOURCE_TYPE_INLINE_AS_IS, + NULL); + + if (sample->compression == EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY) + { + sample->quality = parse_float_range(2, 45.0, 1000.0); + check_arg_count(3); + } + else + check_arg_count(2); + +} + +/** + @page edcref + @property + source + @parameters + [sound file name] + @effect + The Sound source file name (Source can be mono/stereo WAV file. + Only files with 44.1 KHz sample rate supported now) + @endproperty + @since 1.1.0 + */ +static void +st_collections_group_sound_sample_source(void) +{ + Edje_Sound_Sample *sample; + + if (!edje_file->sound_dir->samples) + { + ERR("Invalid sound sample source definition."); + exit(-1); + } + + sample = + edje_file->sound_dir->samples + + edje_file->sound_dir->samples_count - 1; + + if (!sample) + { + ERR("Invalid sound sample source definition."); + exit(-1); + } + sample->snd_src = parse_str(0); + check_arg_count(1); +} + +/** + @page edcref + @property + tone + @parameters + [tone name] [frequency] + @effect + sound of specific frequency + @endproperty + @since 1.1.0 + */ +static void +st_collections_group_sound_tone(void) +{ + Edje_Sound_Tone *tone; + const char *tmp; + unsigned int i; + int value; + + check_arg_count(2); + + if (!edje_file->sound_dir) + edje_file->sound_dir = mem_alloc(SZ(Edje_Sound_Directory)); + + tmp = parse_str(0); + /* Audible range 20 to 20KHz */ + value = parse_int_range(1, 20, 20000); + + /* Check for Tone duplication */ + for (i = 0; i < edje_file->sound_dir->tones_count; i++) + { + if (!strcmp(edje_file->sound_dir->tones[i].name, tmp)) + { + ERR("Tone name: %s already exist.", tmp); + free((char *)tmp); + exit(-1); + } + if (edje_file->sound_dir->tones[i].value == value) + { + ERR("Tone name %s with same frequency %d exist.", + edje_file->sound_dir->tones[i].name, value); + exit(-1); + } + } + edje_file->sound_dir->tones_count++; + edje_file->sound_dir->tones = + realloc(edje_file->sound_dir->tones, + sizeof (Edje_Sound_Tone) * + edje_file->sound_dir->tones_count); + + if (!edje_file->sound_dir->tones) + { + ERR("No enough memory."); + exit(-1); + } + + tone = edje_file->sound_dir->tones + edje_file->sound_dir->tones_count - 1; + memset(tone, 0, sizeof (Edje_Sound_Tone)); + + tone->name = tmp; + tone->value = value; + tone->id = edje_file->sound_dir->tones_count - 1; +} + +/** + @edcsection{group,Group sub blocks} + */ + +/** + @page edcref + @block + group + @context + collections { + .. + group { + name: "nameusedbytheapplication"; + alias: "anothername"; + min: width height; + max: width height; + + data { } + script { } + parts { } + programs { } + } + .. + } + @description + A "group" block contains the list of parts and programs that compose a + given Edje Object. + @endblock +*/ +static void +ob_collections_group(void) +{ + Edje_Part_Collection *pc; + Code *cd; + + if (current_de && !current_de->entry) + { + ERR("A collection without a name was detected, that's not allowed."); + exit(-1); + } + + current_de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); + current_de->id = eina_list_count(edje_collections); + + pc = mem_alloc(SZ(Edje_Part_Collection)); + edje_collections = eina_list_append(edje_collections, pc); + pc->id = current_de->id; + pc->broadcast_signal = EINA_TRUE; /* This was the behaviour by default in Edje 1.1 */ + + cd = mem_alloc(SZ(Code)); + codes = eina_list_append(codes, cd); +} + +/** + @page edcref + @property + name + @parameters + [group name] + @effect + The name that will be used by the application to load the resulting + Edje object and to identify the group to swallow in a GROUP part. If a + group with the same name exists already it will be completely overriden + by the new group. + @endproperty +*/ +static void +st_collections_group_name(void) +{ + Edje_Part_Collection_Directory_Entry *alias; + Edje_Part_Collection_Directory_Entry *older; + Edje_Part_Collection *current_pc; + Eina_List *l = NULL; + + check_arg_count(1); + + current_pc = eina_list_data_get(eina_list_last(edje_collections)); + + current_de->entry = parse_str(0); + current_pc->part = current_de->entry; + + older = eina_hash_find(edje_file->collection, current_de->entry); + if (older) eina_hash_del(edje_file->collection, current_de->entry, older); + eina_hash_direct_add(edje_file->collection, current_de->entry, current_de); + if (!older) return; + + EINA_LIST_FOREACH(aliases, l, alias) + if (strcmp(alias->entry, current_de->entry) == 0) + { + Edje_Part_Collection *pc; + + pc = eina_list_nth(edje_collections, older->id); + INF("overriding alias ('%s' => '%s') by group '%s'", + alias->entry, pc->part, + current_de->entry); + aliases = eina_list_remove_list(aliases, l); + free(alias); + break; + } + +} + +typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; +struct _Edje_List_Foreach_Data +{ + Eina_List *list; +}; + +static Eina_Bool +_edje_data_item_list_foreach(const Eina_Hash *hash __UNUSED__, const void *key, void *data __UNUSED__, void *fdata) +{ + Edje_List_Foreach_Data *fd; + + fd = fdata; + fd->list = eina_list_append(fd->list, strdup(key)); + + return EINA_TRUE; +} + +/** + @page edcref + @property + inherit + @parameters + [parent group name] + @effect + Parent group name for inheritance. + Group "inherit" is used to inherit any predefined group and change + some property which belongs to "part", "description", "items" or "program". + The child group has the same property as parent group. If you specify the + type again in an inherited part, it will cause an error (unless you plan + to fix that). + @endproperty + @since 1.1.0 +*/ +static void +st_collections_group_inherit(void) +{ + Edje_Part_Collection *pc, *pc2; + Edje_Part *ep, *ep2; + Edje_Part_Parser *epp, *epp2; + Edje_Pack_Element *item, *item2; + Edje_Pack_Element_Parser *pitem; + Edje_Part_Description_Common *ed, *ed2; + Edje_List_Foreach_Data fdata; + Eina_List *l; + char *parent_name; + unsigned int i, j; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + parent_name = parse_str(0); + + EINA_LIST_FOREACH(edje_collections, l, pc2) + { + if (!strcmp(parent_name, pc2->part)) + break; + } + if (!pc2) + { + ERR("parse error %s:%i. There isn't a group with the name %s", + file_in, line - 1, parent_name); + exit(-1); + } + if (pc2 == pc) + { + ERR("parse error %s:%i. You are trying to inherit '%s' from itself. That's not possible." + "If there is another group of the same name, you want to inherit from that group and have the" + "same name as that group, there is a trick ! Just put the inherit before the directive that set" + "the name !", file_in, line - 1, parent_name); + exit(-1); + } + + if (pc2->data) + { + char *key, *data; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(pc2->data, + _edje_data_item_list_foreach, &fdata); + + if (!pc->data) pc->data = eina_hash_string_small_new(free); + EINA_LIST_FREE(fdata.list, key) + { + data = eina_hash_find(pc2->data, key); + eina_hash_direct_add(pc->data, key, data); + } + } + + if (pc2->alias) + { + char *key, *alias; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(pc2->alias, + _edje_data_item_list_foreach, &fdata); + if (!pc->alias) pc->alias = eina_hash_string_small_new(free); + EINA_LIST_FREE(fdata.list, key) + { + alias = eina_hash_find(pc2->alias, key); + eina_hash_direct_add(pc->alias, key, alias); + } + } + if (pc2->aliased) + { + char *key, *aliased; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(pc2->aliased, + _edje_data_item_list_foreach, &fdata); + if (!pc->aliased) pc->aliased = eina_hash_string_small_new(free); + EINA_LIST_FREE(fdata.list, key) + { + aliased = eina_hash_find(pc2->aliased, key); + eina_hash_direct_add(pc->aliased, key, aliased); + } + } + + pc->prop.min.w = pc2->prop.min.w; + pc->prop.min.h = pc2->prop.min.h; + pc->prop.orientation = pc2->prop.orientation; + + pc->lua_script_only = pc2->lua_script_only; + + #define STRDUP(x) x ? strdup(x) : NULL + for (i = 0 ; i < pc2->parts_count ; i++) + { + // copy the part + ob_collections_group_parts_part(); + ep = pc->parts[i]; + ep2 = pc2->parts[i]; + ep->name = STRDUP(ep2->name); + ep->source = STRDUP(ep2->source); + ep->source2 = STRDUP(ep2->source2); + ep->source3 = STRDUP(ep2->source3); + ep->source4 = STRDUP(ep2->source4); + ep->source5 = STRDUP(ep2->source5); + ep->source6 = STRDUP(ep2->source6); + + data_queue_copied_part_lookup(pc, &(ep2->clip_to_id), &(ep->clip_to_id)); + + ep->type = ep2->type; + ep->mouse_events = ep2->mouse_events; + ep->repeat_events = ep2->repeat_events; + ep->ignore_flags = ep2->ignore_flags; + ep->scale = ep2->scale; + ep->pointer_mode = ep2->pointer_mode; + ep->precise_is_inside = ep2->precise_is_inside; + ep->use_alternate_font_metrics = ep2->use_alternate_font_metrics; + ep->effect = ep2->effect; + ep->entry_mode = ep2->entry_mode; + ep->select_mode = ep2->select_mode; + ep->cursor_mode = ep2->cursor_mode; + ep->multiline = ep2->multiline; + ep->access = ep2->access; + ep->dragable.x = ep2->dragable.x; + ep->dragable.step_x = ep2->dragable.step_x; + ep->dragable.count_x = ep2->dragable.count_x; + ep->dragable.y = ep2->dragable.y; + ep->dragable.step_y = ep2->dragable.step_y; + ep->dragable.count_y = ep2->dragable.count_y; + + data_queue_copied_part_lookup(pc, &(ep2->dragable.confine_id), &(ep->dragable.confine_id)); + data_queue_copied_part_lookup(pc, &(ep2->dragable.event_id), &(ep->dragable.event_id)); + + epp = (Edje_Part_Parser *)ep; + epp2 = (Edje_Part_Parser *)ep2; + epp->reorder.insert_before = STRDUP(epp2->reorder.insert_before); + epp->reorder.insert_after = STRDUP(epp2->reorder.insert_after); + epp->can_override = EINA_TRUE; + + for (j = 0 ; j < ep2->items_count ; j++) + { + ob_collections_group_parts_part_box_items_item(); + item = ep->items[j]; + item2 = ep2->items[j]; + item->type = item2->type; + item->name = STRDUP(item2->name); + item->source = STRDUP(item2->source); + item->min.w = item2->min.w; + item->min.h = item2->min.h; + item->prefer.w = item2->prefer.w; + item->prefer.h = item2->prefer.h; + item->max.w = item2->max.w; + item->max.h = item2->max.h; + item->padding.l = item2->padding.l; + item->padding.r = item2->padding.r; + item->padding.t = item2->padding.t; + item->padding.b = item2->padding.b; + item->align.x = item2->align.x; + item->align.y = item2->align.y; + item->weight.x = item2->weight.x; + item->weight.y = item2->weight.y; + item->aspect.w = item2->aspect.w; + item->aspect.h = item2->aspect.h; + item->aspect.mode = item2->aspect.mode; + item->options = STRDUP(item2->options); + item->col = item2->col; + item->row = item2->row; + item->colspan = item2->colspan; + item->rowspan = item2->rowspan; + + pitem = (Edje_Pack_Element_Parser *)item; + pitem->can_override = EINA_TRUE; + } + + ep->api.name = STRDUP(ep2->api.name); + if (ep2->api.description) ep->api.description = STRDUP(ep2->api.description); + + // copy default description + ob_collections_group_parts_part_description(); + ed = ep->default_desc; + parent_desc = ed2 = ep2->default_desc; + ed->state.name = STRDUP(ed2->state.name); + ed->state.value = ed2->state.value; + st_collections_group_parts_part_description_inherit(); + parent_desc = NULL; + + // copy other description + for (j = 0 ; j < ep2->other.desc_count ; j++) + { + ob_collections_group_parts_part_description(); + ed = ep->other.desc[j]; + parent_desc = ed2 = ep2->other.desc[j]; + ed->state.name = STRDUP(ed2->state.name); + ed->state.value = ed2->state.value; + st_collections_group_parts_part_description_inherit(); + parent_desc = NULL; + } + } + + //copy programs + for (j = 0 ; j < pc2->programs.fnmatch_count ; j++) + { + ob_collections_group_programs_program(); + _edje_program_copy(current_program, pc2->programs.fnmatch[j]); + } + for (j = 0 ; j < pc2->programs.strcmp_count ; j++) + { + ob_collections_group_programs_program(); + _edje_program_copy(current_program, pc2->programs.strcmp[j]); + } + for (j = 0 ; j < pc2->programs.strncmp_count ; j++) + { + ob_collections_group_programs_program(); + _edje_program_copy(current_program, pc2->programs.strncmp[j]); + } + for (j = 0 ; j < pc2->programs.strrncmp_count ; j++) + { + ob_collections_group_programs_program(); + _edje_program_copy(current_program, pc2->programs.strrncmp[j]); + } + for (j = 0 ; j < pc2->programs.nocmp_count ; j++) + { + ob_collections_group_programs_program(); + _edje_program_copy(current_program, pc2->programs.nocmp[j]); + } + + Code *cd, *cd2; + Code_Program *cp, *cp2; + Edje_Part_Collection_Directory_Entry *de; + + de = eina_hash_find(edje_file->collection, pc2->part); + cd2 = eina_list_nth(codes, de->id); + cd = eina_list_data_get(eina_list_last(codes)); + + EINA_LIST_FOREACH(cd2->programs, l, cp2) + { + cp = mem_alloc(SZ(Code_Program)); + + cp->l1 = cp2->l1; + cp->l2 = cp2->l2; + cp->script = STRDUP(cp2->script); + cd->is_lua = cd2->is_lua; + cd->programs = eina_list_append(cd->programs, cp); + data_queue_copied_anonymous_lookup(pc, &(cp2->id), &(cp->id)); + } + + free(parent_name); + #undef STRDUP +} + +/** + @page edcref + @property + script_only + @parameters + [on/off] + @effect + The flag (on/off) as to if this group is defined ONLY by script + callbacks such as init(), resize() and shutdown() + @endproperty +*/ +static void +st_collections_group_script_only(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->lua_script_only = parse_bool(0); +} + +/** + @page edcref + @property + alias + @parameters + [aditional group name] + @effect + Additional name to serve as identifier. Defining multiple aliases is + supported. + @endproperty +*/ +static void +st_collections_group_alias(void) +{ + Edje_Part_Collection_Directory_Entry *alias; + Edje_Part_Collection_Directory_Entry *tmp; + Eina_List *l; + + check_arg_count(1); + + alias = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); + alias->id = current_de->id; + alias->entry = parse_str(0); + + EINA_LIST_FOREACH(aliases, l, tmp) + if (strcmp(alias->entry, tmp->entry) == 0) + { + Edje_Part_Collection *pc; + + pc = eina_list_nth(edje_collections, tmp->id); + INF("overriding alias ('%s' => '%s') to ('%s' => '%s')", + tmp->entry, pc->part, + alias->entry, current_de->entry); + aliases = eina_list_remove_list(aliases, l); + free(tmp); + break; + } + + aliases = eina_list_append(aliases, alias); +} + +/** + @page edcref + @property + min + @parameters + [width] [height] + @effect + The minimum size for the container defined by the composition of the + parts. It is not enforced. + @endproperty +*/ +static void +st_collections_group_min(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(2); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->prop.min.w = parse_int_range(0, 0, 0x7fffffff); + pc->prop.min.h = parse_int_range(1, 0, 0x7fffffff); +} + +/** + @page edcref + @property + max + @parameters + [width] [height] + @effect + The maximum size for the container defined by the totality of the + parts. It is not enforced. + @endproperty +*/ +static void +st_collections_group_max(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(2); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->prop.max.w = parse_int_range(0, 0, 0x7fffffff); + pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff); +} + +/** + @page edcref + @property + broadcast_signal + @parameters + [broadcast] + @effect + Signal got automatically broadcasted to all sub group part. Default to + true since 1.1. + @endproperty +*/ +static void +st_collections_group_broadcast_signal(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->broadcast_signal = parse_bool(0); +} + +/** + @page edcref + @block + script + @context + .. + group { + script { + //embryo script + } + .. + program { + script { + //embryo script + } + } + .. + } + .. + @description + This block is used to "inject" embryo scripts to a given Edje theme and + it functions in two modalities. When it's included inside a "program" + block, the script will be executed every time the program is run, on + the other hand, when included directly into a "group", "part" or + "description" block, it will be executed once at load time, in the + load order. + @endblock +*/ +static void +ob_collections_group_script(void) +{ + Code *cd; + + cd = eina_list_data_get(eina_list_last(codes)); + + if (!is_verbatim()) track_verbatim(1); + else + { + char *s; + + s = get_verbatim(); + if (s) + { + cd->l1 = get_verbatim_line1(); + cd->l2 = get_verbatim_line2(); + if (cd->shared) + { + ERR("parse error %s:%i. There is already an existing script section for the group", + file_in, line - 1); + exit(-1); + } + cd->shared = s; + cd->original = strdup(s); + cd->is_lua = 0; + set_verbatim(NULL, 0, 0); + } + } +} + +static void +ob_collections_group_lua_script(void) +{ + Code *cd; + + cd = eina_list_data_get(eina_list_last(codes)); + + if (!is_verbatim()) track_verbatim(1); + else + { + char *s; + + s = get_verbatim(); + if (s) + { + cd->l1 = get_verbatim_line1(); + cd->l2 = get_verbatim_line2(); + if (cd->shared) + { + ERR("parse error %s:%i. There is already an existing script section for the group", + file_in, line - 1); + exit(-1); + } + cd->shared = s; + cd->is_lua = 1; + set_verbatim(NULL, 0, 0); + } + } +} + +static void +st_collections_group_data_item(void) +{ + Edje_Part_Collection *pc; + Edje_String *es; + char *key; + + check_arg_count(2); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + if (!pc->data) + pc->data = eina_hash_string_small_new(free); + + key = parse_str(0); + + es = mem_alloc(SZ(Edje_String)); + es->str = parse_str(1); + + if (eina_hash_find(pc->data, key)) + eina_hash_modify(pc->data, key, es); + else + eina_hash_direct_add(pc->data, key, es); +} + +/** + @page edcref + @property + orientation + @parameters + enum AUTO, LTR, RTL + @effect + This defines GROUP orientation. + This is useful if you want match interface orientation with language. + AUTO - Follow system defs. + LTR - suitable for Left To Right Languages (latin) + RTL - suitable for Right To Left Languages (Hebrew, Arabic interface) + @endproperty +*/ +static void +st_collections_group_orientation(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->prop.orientation = parse_enum(0, + "AUTO", EDJE_ORIENTATION_AUTO, + "LTR", EDJE_ORIENTATION_LTR, + "RTL", EDJE_ORIENTATION_RTL, + NULL); +} + +/** + @page edcref + @block + limits + @context + group { + limits { + vertical: "limit_name" height_barrier; + horizontal: "limit_name" width_barrier; + .. + } + .. + } + .. + @description + This block is used to trigger some signal when the Edje object is resized. + @endblock + + @page edcref + @property + vertical + @parameters + [name] [height barrier] + @effect + It will send a signal: "limit,name,over" when the object is resized and pass + the limit by growing over it. And it will send: "limit,name,below" when + it pass below that limit. + This limit will be applied on the y absis and is expressed in pixels. + @endproperty +*/ +static void +st_collections_group_limits_vertical(void) +{ + Edje_Part_Collection *pc; + Edje_Limit *el; + + check_arg_count(2); + + el = mem_alloc(SZ(Edje_Limit)); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->limits.vertical_count++; + pc->limits.vertical = realloc(pc->limits.vertical, pc->limits.vertical_count * sizeof (Edje_Limit *)); + if (!pc->limits.vertical || !el) + { + ERR("Not enough memory."); + exit(-1); + } + + pc->limits.vertical[pc->limits.vertical_count - 1] = el; + + el->name = parse_str(0); + el->value = parse_int_range(1, 1, 0xffff); +} + +/** + @page edcref + @property + horizontal + @parameters + [name] [width barrier] + @effect + It will send a signal: "limit,name,over" when the object is resized and pass + the limit by growing over it. And it will send: "limit,name,below" when + it pass below that limit. + This limit will be applied on the x absis and is expressed in pixels. + @endproperty +*/ +static void +st_collections_group_limits_horizontal(void) +{ + Edje_Part_Collection *pc; + Edje_Limit *el; + + check_arg_count(2); + + el = mem_alloc(SZ(Edje_Limit)); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->limits.horizontal_count++; + pc->limits.horizontal = realloc(pc->limits.horizontal, pc->limits.horizontal_count * sizeof (Edje_Limit *)); + if (!pc->limits.horizontal || !el) + { + ERR("Not enough memory."); + exit(-1); + } + + pc->limits.horizontal[pc->limits.horizontal_count - 1] = el; + + el->name = parse_str(0); + el->value = parse_int_range(1, 1, 0xffff); +} + +/** + @page edcref + @block + parts + @context + group { + parts { + alias: "theme_part_path" "real_part_path"; + .. + } + } + @description + Alias of part give a chance to let the designer put the real one + in a box or reuse one from a GROUP or inside a BOX. + @endblock +*/ +static void +st_collections_group_parts_alias(void) +{ + Edje_Part_Collection *pc; + const char *alias; + const char *aliased; + + check_arg_count(2); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + alias = parse_str(0); + aliased = parse_str(1); + + if (!pc->alias) pc->alias = eina_hash_string_small_new(NULL); + eina_hash_add(pc->alias, alias, aliased); + + if (!pc->aliased) pc->aliased = eina_hash_string_small_new(NULL); + eina_hash_add(pc->aliased, aliased, alias); +} + + +/** + @page edcref + @block + part + @context + group { + parts { + .. + part { + name: "partname"; + type: IMAGE; + mouse_events: 1; + repeat_events: 0; + ignore_flags: NONE; + clip_to: "anotherpart"; + source: "groupname"; + pointer_mode: AUTOGRAB; + use_alternate_font_metrics: 0; + + description { } + dragable { } + items { } + } + .. + } + } + @description + Parts are used to represent the most basic design elements of the + theme, for example, a part can represent a line in a border or a label + on a button. + @endblock +*/ +static void +ob_collections_group_parts_part(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Parser *epp; + + ep = mem_alloc(SZ(Edje_Part_Parser)); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + pc->parts_count++; + pc->parts = realloc(pc->parts, pc->parts_count * sizeof (Edje_Part *)); + if (!pc->parts) + { + ERR("Not enough memory."); + exit(-1); + } + current_part = pc->parts[pc->parts_count - 1] = ep; + + ep->id = pc->parts_count - 1; + ep->type = EDJE_PART_TYPE_IMAGE; + ep->mouse_events = 1; + ep->repeat_events = 0; + ep->ignore_flags = EVAS_EVENT_FLAG_NONE; + ep->scale = 0; + ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; + ep->precise_is_inside = 0; + ep->use_alternate_font_metrics = 0; + ep->access = 0; + ep->clip_to_id = -1; + ep->dragable.confine_id = -1; + ep->dragable.event_id = -1; + ep->items = NULL; + + epp = (Edje_Part_Parser *)ep; + epp->reorder.insert_before = NULL; + epp->reorder.insert_after = NULL; + epp->reorder.before = NULL; + epp->reorder.after = NULL; + epp->reorder.linked_prev = 0; + epp->reorder.linked_next = 0; + epp->reorder.done = EINA_FALSE; + epp->can_override = EINA_FALSE; +} + +/** + @page edcref + @property + name + @parameters + [part name] + @effect + The part's name will be used as reference in the theme's relative + positioning system, by programs and in some cases by the application. + It must be unique within the group. + @endproperty +*/ +static void +st_collections_group_parts_part_name(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Parser *epp; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_part; + ep->name = parse_str(0); + + if (ep->name) + { + unsigned int i; + + for (i = 0; i < (pc->parts_count - 1); i++) + { + if (pc->parts[i]->name && (!strcmp(pc->parts[i]->name, ep->name))) + { + epp = (Edje_Part_Parser *)pc->parts[i]; + if (!epp->can_override) + { + ERR("parse error %s:%i. There is already a part of the name %s", + file_in, line - 1, ep->name); + exit(-1); + } + else + { + free(ep); + pc->parts_count--; + pc->parts = realloc(pc->parts, pc->parts_count * sizeof (Edje_Part *)); + ep = current_part = pc->parts[i]; + epp->can_override = EINA_FALSE; + break; + } + } + } + } +} + +/** + @page edcref + @property + type + @parameters + [TYPE] + @effect + Set the type (all caps) from among the available types, it's set to + IMAGE by default. Valid types: + @li RECT + @li TEXT + @li IMAGE + @li SWALLOW + @li TEXTBLOCK + @li GROUP + @li BOX + @li TABLE + @li EXTERNAL + @li PROXY + @li SPACER + @endproperty +*/ +static void +st_collections_group_parts_part_type(void) +{ + unsigned int type; + + check_arg_count(1); + + type = parse_enum(0, + "NONE", EDJE_PART_TYPE_NONE, + "RECT", EDJE_PART_TYPE_RECTANGLE, + "TEXT", EDJE_PART_TYPE_TEXT, + "IMAGE", EDJE_PART_TYPE_IMAGE, + "SWALLOW", EDJE_PART_TYPE_SWALLOW, + "TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK, + "GROUP", EDJE_PART_TYPE_GROUP, + "BOX", EDJE_PART_TYPE_BOX, + "TABLE", EDJE_PART_TYPE_TABLE, + "EXTERNAL", EDJE_PART_TYPE_EXTERNAL, + "PROXY", EDJE_PART_TYPE_PROXY, + "SPACER", EDJE_PART_TYPE_SPACER, + NULL); + + /* handle type change of inherited part */ + if (type != current_part->type) + { + Edje_Part_Description_Common *new, *previous; + Edje_Part_Collection *pc; + Edje_Part *ep; + unsigned int i; + + /* we don't free old part as we don't remove all reference to them */ + part_description_image_cleanup(current_part); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_part; + + previous = ep->default_desc; + if (previous) + { + new = _edje_part_description_alloc(type, pc->part, ep->name); + memcpy(new, previous, sizeof (Edje_Part_Description_Common)); + + ep->default_desc = new; + } + + for (i = 0; i < ep->other.desc_count; i++) + { + previous = ep->other.desc[i]; + new = _edje_part_description_alloc(type, pc->part, ep->name); + memcpy(new, previous, sizeof (Edje_Part_Description_Common)); + ep->other.desc[i] = new; + } + } + + current_part->type = type; +} + +/** + @page edcref + @property + insert_before + @parameters + [another part's name] + @effect + The part's name which this part is inserted before. One part cannot + have both insert_before and insert_after. One part cannot refer + more than one by insert_before. + @endproperty + @since 1.1.0 +*/ +static void +st_collections_group_parts_part_insert_before(void) +{ + Edje_Part_Parser *epp; + check_arg_count(1); + + epp = (Edje_Part_Parser *)current_part; + epp->reorder.insert_before = parse_str(0); +} + +/** + @page edcref + @property + insert_after + @parameters + [another part's name] + @effect + The part's name which this part is inserted after. One part cannot + have both insert_before and insert_after. One part cannot refer + more than one by insert_after. + @endproperty + @since 1.1.0 +*/ +static void +st_collections_group_parts_part_insert_after(void) +{ + Edje_Part_Parser *epp; + check_arg_count(1); + + epp = (Edje_Part_Parser *)current_part; + epp->reorder.insert_after = parse_str(0); +} + +/** + @page edcref + @property + mouse_events + @parameters + [1 or 0] + @effect + Specifies whether the part will emit signals, although it is named + "mouse_events", disabling it (0) will prevent the part from emitting + any type of signal at all. It's set to 1 by default. + @endproperty +*/ +static void +st_collections_group_parts_part_mouse_events(void) +{ + check_arg_count(1); + + current_part->mouse_events = parse_bool(0); +} + +/** + @page edcref + @property + repeat_events + @parameters + [1 or 0] + @effect + Specifies whether a part echoes a mouse event to other parts below the + pointer (1), or not (0). It's set to 0 by default. + @endproperty +*/ +static void +st_collections_group_parts_part_repeat_events(void) +{ + check_arg_count(1); + + current_part->repeat_events = parse_bool(0); +} + +/** + @page edcref + @property + ignore_flags + @parameters + [FLAG] ... + @effect + Specifies whether events with the given flags should be ignored, + i.e., will not have the signals emitted to the parts. Multiple flags + must be separated by spaces, the effect will be ignoring all events + with one of the flags specified. Possible flags: + @li NONE (default value, no event will be ignored) + @li ON_HOLD + @endproperty +*/ +static void +st_collections_group_parts_part_ignore_flags(void) +{ + check_min_arg_count(1); + + current_part->ignore_flags = parse_flags(0, + "NONE", EVAS_EVENT_FLAG_NONE, + "ON_HOLD", EVAS_EVENT_FLAG_ON_HOLD, + NULL); +} + +/** + @page edcref + @property + scale + @parameters + [1 or 0] + @effect + Specifies whether the part will scale its size with an edje scaling + factor. By default scale is off (0) and the default scale factor is + 1.0 - that means no scaling. This would be used to scale properties + such as font size, min/max size of the part, and possibly can be used + to scale based on DPI of the target device. The reason to be selective + is that some things work well being scaled, others do not, so the + designer gets to choose what works best. + @endproperty +*/ +static void +st_collections_group_parts_part_scale(void) +{ + check_arg_count(1); + + current_part->scale = parse_bool(0); +} + +/** + @page edcref + @property + pointer_mode + @parameters + [MODE] + @effect + Sets the mouse pointer behavior for a given part. The default value is + AUTOGRAB. Aviable modes: + @li AUTOGRAB, when the part is clicked and the button remains + pressed, the part will be the source of all future mouse + signals emitted, even outside the object, until the button is + released. + @li NOGRAB, the effect will be limited to the part's container. + @endproperty +*/ +static void +st_collections_group_parts_part_pointer_mode(void) +{ + check_arg_count(1); + + current_part->pointer_mode = parse_enum(0, + "AUTOGRAB", EVAS_OBJECT_POINTER_MODE_AUTOGRAB, + "NOGRAB", EVAS_OBJECT_POINTER_MODE_NOGRAB, + NULL); +} + +/** + @page edcref + @property + precise_is_inside + @parameters + [1 or 0] + @effect + Enables precise point collision detection for the part, which is more + resource intensive. Disabled by default. + @endproperty +*/ +static void +st_collections_group_parts_part_precise_is_inside(void) +{ + check_arg_count(1); + + current_part->precise_is_inside = parse_bool(0); +} + +/** + @page edcref + @property + use_alternate_font_metrics + @parameters + [1 or 0] + @effect + Only affects text and textblock parts, when enabled Edje will use + different size measurement functions. Disabled by default. (note from + the author: I don't know what this is exactly useful for?) + @endproperty +*/ +static void +st_collections_group_parts_part_use_alternate_font_metrics(void) +{ + check_arg_count(1); + + current_part->use_alternate_font_metrics = parse_bool(0); +} + +/** + @page edcref + @property + clip_to + @parameters + [another part's name] + @effect + Only renders the area of part that coincides with another part's + container. Overflowing content will not be displayed. Note that + the part being clipped to can only be a rectangle part. + @endproperty +*/ +static void +st_collections_group_parts_part_clip_to_id(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_part->clip_to_id)); + free(name); + } +} + +/** + @page edcref + @property + source + @parameters + [another group's name] + @effect + Only available to GROUP or TEXTBLOCK parts. Swallows the specified + group into the part's container if a GROUP. If TEXTBLOCK it is used + for the group to be loaded and used for selection display UNDER the + selected text. source2 is used for on top of the selected text, if + source2 is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source = parse_str(0); + data_queue_group_lookup(current_part->source, current_part); +} + +/** + @page edcref + @property + source2 + @parameters + [another group's name] + @effect + Only available to TEXTBLOCK parts. It is used for the group to be + loaded and used for selection display OVER the selected text. source + is used for under of the selected text, if source is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source2(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source2 = parse_str(0); + data_queue_group_lookup(current_part->source2, current_part); +} + +/** + @page edcref + @property + source3 + @parameters + [another group's name] + @effect + Only available to TEXTBLOCK parts. It is used for the group to be + loaded and used for cursor display UNDER the cursor position. source4 + is used for over the cursor text, if source4 is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source3(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source3 = parse_str(0); + data_queue_group_lookup(current_part->source3, current_part); +} + +/** + @page edcref + @property + source4 + @parameters + [another group's name] + @effect + Only available to TEXTBLOCK parts. It is used for the group to be + loaded and used for cursor display OVER the cursor position. source3 + is used for under the cursor text, if source4 is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source4(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source4 = parse_str(0); + data_queue_group_lookup(current_part->source4, current_part); +} + +/** + @page edcref + @property + source5 + @parameters + [another group's name] + @effect + Only available to TEXTBLOCK parts. It is used for the group to be + loaded and used for anchors display UNDER the anchor position. source6 + is used for over the anchors text, if source6 is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source5(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source5 = parse_str(0); + data_queue_group_lookup(current_part->source5, current_part); +} + +/** + @page edcref + @property + source6 + @parameters + [another group's name] + @effect + Only available to TEXTBLOCK parts. It is used for the group to be + loaded and used for anchor display OVER the anchor position. source5 + is used for under the anchor text, if source6 is specified. + @endproperty +*/ +static void +st_collections_group_parts_part_source6(void) +{ + check_arg_count(1); + + //FIXME: validate this somehow (need to decide on the format also) + current_part->source6 = parse_str(0); + data_queue_group_lookup(current_part->source6, current_part); +} + +/** + @page edcref + + @property + effect + @parameters + [EFFECT] + (optional) [SHADOW DIRECTION] + @effect + Causes Edje to draw the selected effect among: + @li PLAIN + @li OUTLINE + @li SOFT_OUTLINE + @li SHADOW + @li SOFT_SHADOW + @li OUTLINE_SHADOW + @li OUTLINE_SOFT_SHADOW + @li FAR_SHADOW + @li FAR_SOFT_SHADOW + @li GLOW + + Shadow directions (default if not given is BOTTOM_RIGHT): + @li BOTTOM_RIGHT + @li BOTTOM + @li BOTTOM_LEFT + @li LEFT + @li TOP_LEFT + @li TOP + @li TOP_RIGHT + @li RIGHT + @endproperty +*/ +static void +st_collections_group_parts_part_effect(void) +{ + check_min_arg_count(1); + + current_part->effect = parse_enum(0, + "NONE", EDJE_TEXT_EFFECT_NONE, + "PLAIN", EDJE_TEXT_EFFECT_PLAIN, + "OUTLINE", EDJE_TEXT_EFFECT_OUTLINE, + "SOFT_OUTLINE", EDJE_TEXT_EFFECT_SOFT_OUTLINE, + "SHADOW", EDJE_TEXT_EFFECT_SHADOW, + "SOFT_SHADOW", EDJE_TEXT_EFFECT_SOFT_SHADOW, + "OUTLINE_SHADOW", EDJE_TEXT_EFFECT_OUTLINE_SHADOW, + "OUTLINE_SOFT_SHADOW", EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW, + "FAR_SHADOW", EDJE_TEXT_EFFECT_FAR_SHADOW, + "FAR_SOFT_SHADOW", EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW, + "GLOW", EDJE_TEXT_EFFECT_GLOW, + NULL); + if (get_arg_count() >= 2) + { + unsigned char shadow; + + shadow = parse_enum(1, + "BOTTOM_RIGHT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT, + "BOTTOM", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM, + "BOTTOM_LEFT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT, + "LEFT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT, + "TOP_LEFT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT, + "TOP", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP, + "TOP_RIGHT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT, + "RIGHT", EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT, + NULL); + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(current_part->effect, shadow); + } +} + +/** + @page edcref + @property + entry_mode + @parameters + [MODE] + @effect + Sets the edit mode for a textblock part to one of: + @li NONE + @li PLAIN + @li EDITABLE + @li PASSWORD + It causes the part be editable if the edje object has the keyboard + focus AND the part has the edje focus (or selectable always + regardless of focus) and in the event of password mode, not + selectable and all text chars replaced with *'s but editable and + pastable. + @endproperty +*/ +static void +st_collections_group_parts_part_entry_mode(void) +{ + check_arg_count(1); + + current_part->entry_mode = parse_enum(0, + "NONE", EDJE_ENTRY_EDIT_MODE_NONE, + "PLAIN", EDJE_ENTRY_EDIT_MODE_SELECTABLE, + "EDITABLE", EDJE_ENTRY_EDIT_MODE_EDITABLE, + "PASSWORD", EDJE_ENTRY_EDIT_MODE_PASSWORD, + NULL); +} + +/** + @page edcref + @property + select_mode + @parameters + [MODE] + @effect + Sets the selection mode for a textblock part to one of: + @li DEFAULT selection mode is what you would expect on any desktop. Press + mouse, drag and release to end. + @li EXPLICIT mode requires the application + controlling the edje object has to explicitly begin and end selection + modes, and the selection itself is dragable at both ends. + @li BLOCK_HANDLE mode is the same as DEFAULT, it is for backward-compatibility. + @endproperty +*/ +static void +st_collections_group_parts_part_select_mode(void) +{ + check_arg_count(1); + + current_part->select_mode = parse_enum(0, + "DEFAULT", EDJE_ENTRY_SELECTION_MODE_DEFAULT, + "EXPLICIT", EDJE_ENTRY_SELECTION_MODE_EXPLICIT, + "BLOCK_HANDLE", EDJE_ENTRY_SELECTION_MODE_DEFAULT, + NULL); +} + +/** + @page edcref + @property + cursor_mode + @parameters + [MODE] + @effect + Sets the cursor mode for a textblock part to one of: + @li UNDER cursor mode means the cursor will draw below the character pointed + at. That's the default. + @li BEFORE cursor mode means the cursor is drawn as a vertical line before + the current character, just like many other GUI toolkits handle it. + @endproperty +*/ +static void +st_collections_group_parts_part_cursor_mode(void) +{ + check_arg_count(1); + + current_part->cursor_mode = parse_enum(0, + "UNDER", EDJE_ENTRY_CURSOR_MODE_UNDER, + "BEFORE", EDJE_ENTRY_CURSOR_MODE_BEFORE, + NULL); +} + +/** + @page edcref + @property + multiline + @parameters + [1 or 0] + @effect + It causes a textblock that is editable to allow multiple lines for + editing. + @endproperty +*/ +static void +st_collections_group_parts_part_multiline(void) +{ + check_arg_count(1); + + current_part->multiline = parse_bool(0); +} + +/** + @page edcref + @property + access + @parameters + [1 or 0] + @effect + Specifies whether the part will use accessibility feature (1), + or not (0). It's set to 0 by default. + @endproperty +*/ +static void +st_collections_group_parts_part_access(void) +{ + check_arg_count(1); + + current_part->access = parse_bool(0); +} + +/** + @page edcref + @block + dragable + @context + part { + .. + dragable { + confine: "another part"; + events: "another dragable part"; + x: 0 0 0; + y: 0 0 0; + } + .. + } + @description + When this block is used the resulting part can be dragged around the + interface, do not confuse with external drag & drop. By default Edje + (and most applications) will attempt to use the minimal size possible + for a dragable part. If the min property is not set in the description + the part will be (most likely) set to 0px width and 0px height, thus + invisible. + @endblock + + @property + x + @parameters + [enable/disable] [step] [count] + @effect + Used to setup dragging events for the X axis. The first parameter is + used to enable (1 or -1) and disable (0) dragging along the axis. When + enabled, 1 will set the starting point at 0.0 and -1 at 1.0. The second + parameter takes any integer and will limit movement to values + divisible by it, causing the part to jump from position to position. + The third parameter, (question from the author: What is count for?). + @endproperty +*/ +static void +st_collections_group_parts_part_dragable_x(void) +{ + check_arg_count(3); + + current_part->dragable.x = parse_int_range(0, -1, 1); + current_part->dragable.step_x = parse_int_range(1, 0, 0x7fffffff); + current_part->dragable.count_x = parse_int_range(2, 0, 0x7fffffff); +} + +/** + @page edcref + @property + y + @parameters + [enable/disable] [step] [count] + @effect + Used to setup dragging events for the Y axis. The first parameter is + used to enable (1 or -1) and disable (0) dragging along the axis. When + enabled, 1 will set the starting point at 0.0 and -1 at 1.0. The second + parameter takes any integer and will limit movement to values + divisibles by it, causing the part to jump from position to position. + The third parameter, (question from the author: What is count for?). + @endproperty +*/ +static void +st_collections_group_parts_part_dragable_y(void) +{ + check_arg_count(3); + + current_part->dragable.y = parse_int_range(0, -1, 1); + current_part->dragable.step_y = parse_int_range(1, 0, 0x7fffffff); + current_part->dragable.count_y = parse_int_range(2, 0, 0x7fffffff); +} + +/** + @page edcref + @property + confine + @parameters + [another part's name] + @effect + When set, limits the movement of the dragged part to another part's + container. When you use confine don't forget to set a min size for the + part, or the draggie will not show up. + @endproperty +*/ +static void +st_collections_group_parts_part_dragable_confine(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_part->dragable.confine_id)); + free(name); + } +} + +/** + @page edcref + @property + events + @parameters + [another dragable part's name] + @effect + It causes the part to forward the drag events to another part, thus + ignoring them for itself. + @endproperty +*/ +static void +st_collections_group_parts_part_dragable_events(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_part->dragable.event_id)); + free(name); + } +} + +/** + @page edcref + @block + items + @context + part { + .. + box { + items { + item { + type: TYPE; + source: "some source"; + min: 1 1; + max: 100 100; + padding: 1 1 2 2; + } + item { + type: TYPE; + source: "some other source"; + name: "some name"; + align: 1.0 0.5; + } + .. + } + } + .. + } + @description + On a part of type BOX, this block can be used to set other groups + as elements of the box. These can be mixed with external objects set + by the application through the edje_object_part_box_* API. + @endblock +*/ +static void ob_collections_group_parts_part_box_items_item(void) +{ + Edje_Part *ep; + Edje_Pack_Element *item; + Edje_Pack_Element_Parser *pitem; + + ep = current_part; + + if ((ep->type != EDJE_PART_TYPE_BOX) && (ep->type != EDJE_PART_TYPE_TABLE)) + { + ERR("parse error %s:%i. box attributes in non-BOX or TABLE part.", + file_in, line - 1); + exit(-1); + } + + ep->items_count++; + ep->items = realloc(ep->items, sizeof (Edje_Pack_Element*) * ep->items_count); + if (!ep->items) + { + ERR("Not enough memory."); + exit(-1); + } + + item = mem_alloc(SZ(Edje_Pack_Element_Parser)); + current_item = ep->items[ep->items_count - 1] = item; + item->type = EDJE_PART_TYPE_GROUP; + item->name = NULL; + item->source = NULL; + item->min.w = 0; + item->min.h = 0; + item->prefer.w = 0; + item->prefer.h = 0; + item->max.w = -1; + item->max.h = -1; + item->padding.l = 0; + item->padding.r = 0; + item->padding.t = 0; + item->padding.b = 0; + item->align.x = FROM_DOUBLE(0.5); + item->align.y = FROM_DOUBLE(0.5); + item->weight.x = FROM_DOUBLE(0.0); + item->weight.y = FROM_DOUBLE(0.0); + item->aspect.w = 0; + item->aspect.h = 0; + item->aspect.mode = EDJE_ASPECT_CONTROL_NONE; + item->options = NULL; + item->col = -1; + item->row = -1; + item->colspan = 1; + item->rowspan = 1; + pitem = (Edje_Pack_Element_Parser *)item; + pitem->can_override = EINA_FALSE; +} + +/** + @page edcref + @property + type + @parameters + Only GROUP for now (defaults to it) + @effect + Sets the type of the object this item will hold. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_type(void) +{ + check_arg_count(1); + + { + char *s; + + s = parse_str(0); + if (strcmp(s, "GROUP")) + { + ERR("parse error %s:%i. token %s not one of: GROUP.", + file_in, line - 1, s); + exit(-1); + } + /* FIXME: handle the enum, once everything else is supported */ + current_item->type = EDJE_PART_TYPE_GROUP; + } +} + +/** + @page edcref + @property + name + @parameters + [name for the object] + @effect + Sets the name of the object via evas_object_name_set(). + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_name(void) +{ + Edje_Part *ep; + Edje_Pack_Element *item; + Edje_Pack_Element_Parser *pitem; + + check_arg_count(1); + + ep = current_part; + item = ep->items[ep->items_count - 1]; + + item->name = parse_str(0); + + { + unsigned int i; + + for (i = 0; i < ep->items_count - 1; ++i) + { + if (ep->items[i]->name && (!strcmp(ep->items[i]->name, item->name))) + { + pitem = (Edje_Pack_Element_Parser *)ep->items[i]; + if (!pitem->can_override) + { + ERR("parse error %s:%i. There is already a item of the name %s", + file_in, line - 1, item->name); + exit(-1); + } + else + { + free(item); + ep->items_count--; + ep->items = realloc(ep->items, ep->items_count * sizeof (Edje_Pack_Element *)); + current_item = ep->items[i]; + pitem->can_override = EINA_FALSE; + } + } + } + } +} + +/** + @page edcref + @property + source + @parameters + [another group's name] + @effect + Sets the group this object will be made from. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_source(void) +{ + check_arg_count(1); + + current_item->source = parse_str(0); + data_queue_group_lookup(current_item->source, current_part); +} + +/** + @page edcref + @property + min + @parameters + [width] [height] + @effect + Sets the minimum size hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_min(void) +{ + check_arg_count(2); + + current_item->min.w = parse_int_range(0, 0, 0x7ffffff); + current_item->min.h = parse_int_range(1, 0, 0x7ffffff); +} + +/** + @page edcref + @property + prefer + @parameters + [width] [height] + @effect + Sets the preferred size hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_prefer(void) +{ + check_arg_count(2); + + current_item->prefer.w = parse_int_range(0, 0, 0x7ffffff); + current_item->prefer.h = parse_int_range(1, 0, 0x7ffffff); +} +/** + @page edcref + @property + max + @parameters + [width] [height] + @effect + Sets the maximum size hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_max(void) +{ + check_arg_count(2); + + current_item->max.w = parse_int_range(0, 0, 0x7ffffff); + current_item->max.h = parse_int_range(1, 0, 0x7ffffff); +} + +/** + @page edcref + @property + padding + @parameters + [left] [right] [top] [bottom] + @effect + Sets the padding hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_padding(void) +{ + check_arg_count(4); + + current_item->padding.l = parse_int_range(0, 0, 0x7ffffff); + current_item->padding.r = parse_int_range(1, 0, 0x7ffffff); + current_item->padding.t = parse_int_range(2, 0, 0x7ffffff); + current_item->padding.b = parse_int_range(3, 0, 0x7ffffff); +} + +/** + @page edcref + @property + align + @parameters + [x] [y] + @effect + Sets the alignment hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_align(void) +{ + check_arg_count(2); + + current_item->align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); + current_item->align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); +} + +/** + @page edcref + @property + weight + @parameters + [x] [y] + @effect + Sets the weight hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_weight(void) +{ + check_arg_count(2); + + current_item->weight.x = FROM_DOUBLE(parse_float_range(0, 0.0, 99999.99)); + current_item->weight.y = FROM_DOUBLE(parse_float_range(1, 0.0, 99999.99)); +} + +/** + @page edcref + @property + aspect + @parameters + [w] [h] + @effect + Sets the aspect width and height hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_aspect(void) +{ + check_arg_count(2); + + current_item->aspect.w = parse_int_range(0, 0, 0x7fffffff); + current_item->aspect.h = parse_int_range(1, 0, 0x7fffffff); +} + +/** + @page edcref + @property + aspect_mode + @parameters + NONE, NEITHER, HORIZONTAL, VERTICAL, BOTH + @effect + Sets the aspect control hints for this object. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_aspect_mode(void) +{ + check_arg_count(1); + + current_item->aspect.mode = parse_enum(0, + "NONE", EDJE_ASPECT_CONTROL_NONE, + "NEITHER", EDJE_ASPECT_CONTROL_NEITHER, + "HORIZONTAL", EDJE_ASPECT_CONTROL_HORIZONTAL, + "VERTICAL", EDJE_ASPECT_CONTROL_VERTICAL, + "BOTH", EDJE_ASPECT_CONTROL_BOTH, + NULL); +} + +/** + @page edcref + @property + options + @parameters + [extra options] + @effect + Sets extra options for the object. Unused for now. + @endproperty +*/ +static void st_collections_group_parts_part_box_items_item_options(void) +{ + check_arg_count(1); + + current_item->options = parse_str(0); +} + +/** + @page edcref + @property + position + @parameters + [col] [row] + @effect + Sets the position this item will have in the table. + This is required for parts of type TABLE. + @endproperty +*/ +static void st_collections_group_parts_part_table_items_item_position(void) +{ + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. table attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + current_item->col = parse_int_range(0, 0, 0xffff); + current_item->row = parse_int_range(1, 0, 0xffff); +} + +/** + @page edcref + @property + span + @parameters + [col] [row] + @effect + Sets how many columns/rows this item will use. + Defaults to 1 1. + @endproperty +*/ +static void st_collections_group_parts_part_table_items_item_span(void) +{ + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. table attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + current_item->colspan = parse_int_range(0, 1, 0xffff); + current_item->rowspan = parse_int_range(1, 1, 0xffff); +} + +/** + @edcsection{description,State description sub blocks} + */ + +/** + @page edcref + @block + description + @context + description { + inherit: "another_description" INDEX; + state: "description_name" INDEX; + visible: 1; + min: 0 0; + max: -1 -1; + align: 0.5 0.5; + fixed: 0 0; + step: 0 0; + aspect: 1 1; + + rel1 { + .. + } + + rel2 { + .. + } + } + @description + Every part can have one or more description blocks. Each description is + used to define style and layout properties of a part in a given + "state". + @endblock +*/ +static void +ob_collections_group_parts_part_description(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_part; + + ed = _edje_part_description_alloc(ep->type, pc->part, ep->name); + + if (!ep->default_desc) + { + current_desc = ep->default_desc = ed; + } + else + { + ep->other.desc_count++; + ep->other.desc = realloc(ep->other.desc, + sizeof (Edje_Part_Description_Common*) * ep->other.desc_count); + current_desc = ep->other.desc[ep->other.desc_count - 1] = ed; + } + + ed->visible = 1; + ed->limit = 0; + ed->align.x = FROM_DOUBLE(0.5); + ed->align.y = FROM_DOUBLE(0.5); + ed->min.w = 0; + ed->min.h = 0; + ed->fixed.w = 0; + ed->fixed.h = 0; + ed->max.w = -1; + ed->max.h = -1; + ed->rel1.relative_x = FROM_DOUBLE(0.0); + ed->rel1.relative_y = FROM_DOUBLE(0.0); + ed->rel1.offset_x = 0; + ed->rel1.offset_y = 0; + ed->rel1.id_x = -1; + ed->rel1.id_y = -1; + ed->rel2.relative_x = FROM_DOUBLE(1.0); + ed->rel2.relative_y = FROM_DOUBLE(1.0); + ed->rel2.offset_x = -1; + ed->rel2.offset_y = -1; + ed->rel2.id_x = -1; + ed->rel2.id_y = -1; + ed->color_class = NULL; + ed->color.r = 255; + ed->color.g = 255; + ed->color.b = 255; + ed->color.a = 255; + ed->color2.r = 0; + ed->color2.g = 0; + ed->color2.b = 0; + ed->color2.a = 255; + ed->map.id_persp = -1; + ed->map.id_light = -1; + ed->map.rot.id_center = -1; + ed->map.rot.x = FROM_DOUBLE(0.0); + ed->map.rot.y = FROM_DOUBLE(0.0); + ed->map.rot.z = FROM_DOUBLE(0.0); + ed->map.on = 0; + ed->map.smooth = 1; + ed->map.alpha = 1; + ed->map.backcull = 0; + ed->map.persp_on = 0; + ed->persp.zplane = 0; + ed->persp.focal = 1000; + ed->minmul.have = 1; + ed->minmul.w = FROM_INT(1); + ed->minmul.h = FROM_INT(1); +} + +/** + @page edcref + @property + inherit + @parameters + [another description's name] [another description's index] + @effect + When set, the description will inherit all the properties from the + named description. The properties defined in this part will override + the inherited properties, reducing the amount of necessary code for + simple state changes. Note: inheritance in Edje is single level only. + @endproperty +*/ +static void +st_collections_group_parts_part_description_inherit(void) +{ + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Common *ed, *parent = NULL; + Edje_Part_Image_Id *iid; + char *parent_name; + const char *state_name; + double parent_val, state_val; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_part; + ed = current_desc; + + if (!ed->state.name) + { + ERR("parse error %s:%i. inherit may only be used after state", + file_in, line - 1); + exit(-1); + } + + parent = parent_desc; + if (!parent) + { + check_min_arg_count(1); + + /* inherit may not be used in the default description */ + if (!ep->other.desc_count) + { + ERR("parse error %s:%i. " + "inherit may not be used in the default description", + file_in, line - 1); + exit(-1); + } + + /* find the description that we inherit from */ + parent_name = parse_str(0); + if (get_arg_count() == 2) + parent_val = parse_float_range(1, 0.0, 1.0); + else + parent_val = 0.0; + + if (!strcmp (parent_name, "default") && parent_val == 0.0) + parent = ep->default_desc; + else + { + Edje_Part_Description_Common *d; + double min_dst = 999.0; + unsigned int i; + + if (!strcmp(parent_name, "default")) + { + parent = ep->default_desc; + min_dst = ABS(ep->default_desc->state.value - parent_val); + } + + for (i = 0; i < ep->other.desc_count; ++i) + { + d = ep->other.desc[i]; + + if (!strcmp (d->state.name, parent_name)) + { + + double dst; + + dst = ABS(d->state.value - parent_val); + if (dst < min_dst) + { + parent = d; + min_dst = dst; + } + } + } + } + + if (!parent) + { + ERR("parse error %s:%i. " + "cannot find referenced part %s state %s %lf", + file_in, line - 1, ep->name, parent_name, parent_val); + exit(-1); + } + + free(parent_name); + } + /* now do a full copy, only state info will be kept */ + state_name = ed->state.name; + state_val = ed->state.value; + + *ed = *parent; + + ed->state.name = state_name; + ed->state.value = state_val; + + data_queue_copied_part_lookup(pc, &parent->rel1.id_x, &ed->rel1.id_x); + data_queue_copied_part_lookup(pc, &parent->rel1.id_y, &ed->rel1.id_y); + data_queue_copied_part_lookup(pc, &parent->rel2.id_x, &ed->rel2.id_x); + data_queue_copied_part_lookup(pc, &parent->rel2.id_y, &ed->rel2.id_y); + + data_queue_copied_part_lookup(pc, &parent->map.id_persp, &ed->map.id_persp); + data_queue_copied_part_lookup(pc, &parent->map.id_light, &ed->map.id_light); + data_queue_copied_part_lookup(pc, &parent->map.rot.id_center, &ed->map.rot.id_center); + + /* make sure all the allocated memory is getting copied, not just + * referenced + */ +#define STRDUP(x) x ? strdup(x) : NULL + + ed->color_class = STRDUP(ed->color_class); + switch (ep->type) + { + case EDJE_PART_TYPE_SPACER: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + /* Nothing todo, this part only have a common description. */ + break; + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *ted = (Edje_Part_Description_Text*) ed; + Edje_Part_Description_Text *tparent = (Edje_Part_Description_Text*) parent; + + ted->text = tparent->text; + + ted->text.text.str = STRDUP(ted->text.text.str); + ted->text.text_class = STRDUP(ted->text.text_class); + ted->text.font.str = STRDUP(ted->text.font.str); + + data_queue_copied_part_lookup(pc, &(tparent->text.id_source), &(ted->text.id_source)); + data_queue_copied_part_lookup(pc, &(tparent->text.id_text_source), &(ted->text.id_text_source)); + + break; + } + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ied = (Edje_Part_Description_Image *) ed; + Edje_Part_Description_Image *iparent = (Edje_Part_Description_Image *) parent; + unsigned int i; + + ied->image = iparent->image; + + data_queue_image_remove(&ied->image.id, &ied->image.set); + data_queue_copied_image_lookup(&iparent->image.id, &ied->image.id, &ied->image.set); + + ied->image.tweens = calloc(iparent->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + for (i = 0; i < iparent->image.tweens_count; i++) + { + Edje_Part_Image_Id *iid_new; + + iid = iparent->image.tweens[i]; + + iid_new = mem_alloc(SZ(Edje_Part_Image_Id)); + data_queue_image_remove(&ied->image.id, &ied->image.set); + data_queue_copied_image_lookup(&(iid->id), &(iid_new->id), &(iid_new->set)); + ied->image.tweens[i] = iid_new; + } + + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ped = (Edje_Part_Description_Proxy*) ed; + Edje_Part_Description_Proxy *pparent = (Edje_Part_Description_Proxy*) parent; + + data_queue_copied_part_lookup(pc, &(pparent->proxy.id), &(ped->proxy.id)); + + break; + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *bed = (Edje_Part_Description_Box *) ed; + Edje_Part_Description_Box *bparent = (Edje_Part_Description_Box *) parent; + + bed->box = bparent->box; + + break; + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *ted = (Edje_Part_Description_Table *) ed; + Edje_Part_Description_Table *tparent = (Edje_Part_Description_Table *) parent; + + ted->table = tparent->table; + + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *eed = (Edje_Part_Description_External *) ed; + Edje_Part_Description_External *eparent = (Edje_Part_Description_External *) parent; + + if (eparent->external_params) + { + Eina_List *l; + Edje_External_Param *param, *new_param; + + eed->external_params = NULL; + EINA_LIST_FOREACH(eparent->external_params, l, param) + { + new_param = mem_alloc(SZ(Edje_External_Param)); + *new_param = *param; + eed->external_params = eina_list_append(eed->external_params, new_param); + } + } + break; + } + } + +#undef STRDUP +} + +/** + @page edcref + + @property + source + @parameters + [another part's name] + @effect + Causes the part to use another part content as the content of this part. + Only work with PROXY part. + @endproperty +*/ +static void +st_collections_group_parts_part_description_source(void) +{ + Edje_Part_Collection *pc; + Edje_Part_Description_Proxy *ed; + char *name; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + if (current_part->type != EDJE_PART_TYPE_PROXY) + { + ERR("parse error %s:%i. source attributes in non-PROXY part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Proxy*) current_desc; + + name = parse_str(0); + + data_queue_part_lookup(pc, name, &(ed->proxy.id)); + free(name); +} + +/** + @page edcref + @property + state + @parameters + [a name for the description] [an index] + @effect + Sets a name used to identify a description inside a given part. + Multiple descriptions are used to declare different states of the same + part, like "clicked" or "invisible". All states declarations are also + coupled with an index number between 0.0 and 1.0. All parts must have + at least one description named "default 0.0". + @endproperty +*/ +static void +st_collections_group_parts_part_description_state(void) +{ + Edje_Part *ep; + Edje_Part_Description_Common *ed; + char *s; + + check_min_arg_count(1); + + ep = current_part; + + ed = ep->default_desc; + if (ep->other.desc_count) ed = ep->other.desc[ep->other.desc_count - 1]; + + s = parse_str(0); + if (!strcmp (s, "custom")) + { + ERR("parse error %s:%i. invalid state name: '%s'.", + file_in, line - 1, s); + exit(-1); + } + + ed->state.name = s; + if (get_arg_count() == 1) + ed->state.value = 0.0; + else + ed->state.value = parse_float_range(1, 0.0, 1.0); + + if (ed != ep->default_desc) + { + if ((ep->default_desc->state.name && !strcmp(s, ep->default_desc->state.name) && ed->state.value == ep->default_desc->state.value) || + (!ep->default_desc->state.name && !strcmp(s, "default") && ed->state.value == ep->default_desc->state.value)) + { + if (ep->type == EDJE_PART_TYPE_IMAGE) + _edje_part_description_image_remove((Edje_Part_Description_Image*) ed); + + free(ed); + ep->other.desc_count--; + ep->other.desc = realloc(ep->other.desc, + sizeof (Edje_Part_Description_Common*) * ep->other.desc_count); + current_desc = ep->default_desc; + } + else if (ep->other.desc_count) + { + unsigned int i; + for (i = 0; i < ep->other.desc_count - 1; ++i) + { + if (!strcmp(s, ep->other.desc[i]->state.name) && ed->state.value == ep->other.desc[i]->state.value) + { + if (ep->type == EDJE_PART_TYPE_IMAGE) + _edje_part_description_image_remove((Edje_Part_Description_Image*) ed); + + free(ed); + ep->other.desc_count--; + ep->other.desc = realloc(ep->other.desc, + sizeof (Edje_Part_Description_Common*) * ep->other.desc_count); + current_desc = ep->other.desc[i]; + break; + } + } + } + } +} + +/** + @page edcref + @property + visible + @parameters + [0 or 1] + @effect + Takes a boolean value specifying whether part is visible (1) or not + (0). Non-visible parts do not emit signals. The default value is 1. + @endproperty +*/ +static void +st_collections_group_parts_part_description_visible(void) +{ + check_arg_count(1); + + if (current_part->type == EDJE_PART_TYPE_SPACER) + { + ERR("parse error %s:%i. SPACER part can't have a visibility defined", + file_in, line - 1); + exit(-1); + } + + current_desc->visible = parse_bool(0); +} +/** + @page edcref + @property + limit + @parameters + [NONE, WIDTH, HEIGHT or BOTH] + @effect + Emit a signal when the part size change from zero or to a zero size + ('limit,width,over', 'limit,width,zero'). By default no signal are + emitted. + @endproperty + @since 1.7.0 +*/ +static void +st_collections_group_parts_part_description_limit(void) +{ + check_arg_count(1); + + current_desc->limit = parse_enum(0, + "NONE", 0, + "WIDTH", 1, + "HEIGHT", 2, + "BOTH", 3); + + if (current_desc->limit) + { + Edje_Part_Collection *pc; + int count; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + count = pc->limits.parts_count++; + pc->limits.parts = realloc(pc->limits.parts, + pc->limits.parts_count * sizeof (Edje_Part_Limit)); + data_queue_part_lookup(pc, current_part->name, + &(pc->limits.parts[count].part)); + } +} + +/** + @page edcref + @property + align + @parameters + [X axis] [Y axis] + @effect + When the displayed object's size is smaller than its container, this + property moves it relatively along both axis inside its container. The + default value is "0.5 0.5". + @endproperty +*/ +static void +st_collections_group_parts_part_description_align(void) +{ + check_arg_count(2); + + current_desc->align.x = FROM_DOUBLE(parse_float_range(0, 0.0, 1.0)); + current_desc->align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0)); +} + +/** + @page edcref + @property + fixed + @parameters + [width, 0 or 1] [height, 0 or 1] + @effect + This affects the minimum size calculation. See + edje_object_size_min_calc() and edje_object_size_min_restricted_calc(). + This tells the min size calculation routine that this part does not + change size in width or height (1 for it doesn't, 0 for it does), so + the routine should not try and expand or contract the part. + @endproperty +*/ +static void +st_collections_group_parts_part_description_fixed(void) +{ + check_arg_count(2); + + current_desc->fixed.w = parse_float_range(0, 0, 1); + current_desc->fixed.h = parse_float_range(1, 0, 1); +} + +/** + @page edcref + @property + min + @parameters + [width] [height] or SOURCE + @effect + The minimum size of the state. + + When min is defined to SOURCE, it will look at the original + image size and enforce it minimal size to match at least the + original one. The part must be an IMAGE or a GROUP part. + @endproperty +*/ +static void +st_collections_group_parts_part_description_min(void) +{ + check_min_arg_count(1); + + if (is_param(1)) { + current_desc->min.w = parse_float_range(0, 0, 0x7fffffff); + current_desc->min.h = parse_float_range(1, 0, 0x7fffffff); + } else { + char *tmp; + + tmp = parse_str(0); + if ((current_part->type != EDJE_PART_TYPE_IMAGE && current_part->type != EDJE_PART_TYPE_GROUP) || + !tmp || strcmp(tmp, "SOURCE") != 0) + { + ERR("parse error %s:%i. " + "Only IMAGE and GROUP part can have a min: SOURCE; defined", + file_in, line - 1); + exit(-1); + } + + current_desc->min.limit = EINA_TRUE; + } +} + +/** + @page edcref + @property + minmul + @parameters + [width multipler] [height multiplier] + @effect + A multiplier FORCIBLY applied to whatever minimum size is only during + minimum size calculation. + @endproperty + @since 1.2 +*/ +static void +st_collections_group_parts_part_description_minmul(void) +{ + check_arg_count(2); + + current_desc->minmul.w = FROM_DOUBLE(parse_float_range(0, 0, 999999)); + current_desc->minmul.h = FROM_DOUBLE(parse_float_range(1, 0, 999999)); +} + +/** + @page edcref + @property + max + @parameters + [width] [height] or SOURCE + @effect + The maximum size of the state. A size of -1.0 means that it will be ignored in one direction. + + When max is set to SOURCE, edje will enforce the part to be + not more than the original image size. The part must be an + IMAGE part. + @endproperty +*/ +static void +st_collections_group_parts_part_description_max(void) +{ + check_min_arg_count(1); + + if (is_param(1)) { + current_desc->max.w = parse_float_range(0, -1.0, 0x7fffffff); + current_desc->max.h = parse_float_range(1, -1.0, 0x7fffffff); + } else { + char *tmp; + + tmp = parse_str(0); + if (current_part->type != EDJE_PART_TYPE_IMAGE || + !tmp || strcmp(tmp, "SOURCE") != 0) + { + ERR("parse error %s:%i. " + "Only IMAGE part can have a max: SOURCE; defined", + file_in, line - 1); + exit(-1); + } + + current_desc->max.limit = EINA_TRUE; + } +} + +/** + @page edcref + @property + step + @parameters + [width] [height] + @effect + Restricts resizing of each dimension to values divisibles by its value. + This causes the part to jump from value to value while resizing. The + default value is "0 0" disabling stepping. + @endproperty +*/ +static void +st_collections_group_parts_part_description_step(void) +{ + check_arg_count(2); + + current_desc->step.x = parse_float_range(0, 0, 0x7fffffff); + current_desc->step.y = parse_float_range(1, 0, 0x7fffffff); +} + +/** + @page edcref + @property + aspect + @parameters + [min] [max] + @effect + Normally width and height can be resized to any values independently. + The aspect property forces the width to height ratio to be kept between + the minimum and maximum set. For example, "1.0 1.0" will increase the + width a pixel for every pixel added to height. The default value is + "0.0 0.0" disabling aspect. + @endproperty +*/ +static void +st_collections_group_parts_part_description_aspect(void) +{ + check_arg_count(2); + + current_desc->aspect.min = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); + current_desc->aspect.max = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); +} + +/** + @page edcref + @property + aspect_preference + @parameters + [DIMENSION] + @effect + Sets the scope of the "aspect" property to a given dimension. Available + options are BOTH, VERTICAL, HORIZONTAL, SOURCE and NONE + @endproperty +*/ +static void +st_collections_group_parts_part_description_aspect_preference(void) +{ + check_arg_count(1); + + current_desc->aspect.prefer = parse_enum(0, + "NONE", EDJE_ASPECT_PREFER_NONE, + "VERTICAL", EDJE_ASPECT_PREFER_VERTICAL, + "HORIZONTAL", EDJE_ASPECT_PREFER_HORIZONTAL, + "BOTH", EDJE_ASPECT_PREFER_BOTH, + "SOURCE", EDJE_ASPECT_PREFER_SOURCE, + NULL); +} + +/** + @page edcref + @property + color_class + @parameters + [color class name] + @effect + The part will use the color values of the named color_class, these + values can be overrided by the "color", "color2" and "color3" + properties set below. + @endproperty +*/ +static void +st_collections_group_parts_part_description_color_class(void) +{ + check_arg_count(1); + + if (current_part->type == EDJE_PART_TYPE_SPACER) + { + ERR("parse error %s:%i. SPACER part can't have a color defined", + file_in, line - 1); + exit(-1); + } + + current_desc->color_class = parse_str(0); +} + +/** + @page edcref + @property + color + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the main color to the specified values (between 0 and 255). + @endproperty +*/ +static void +st_collections_group_parts_part_description_color(void) +{ + check_arg_count(4); + + if (current_part->type == EDJE_PART_TYPE_SPACER) + { + ERR("parse error %s:%i. SPACER part can't have a color defined", + file_in, line - 1); + exit(-1); + } + + current_desc->color.r = parse_int_range(0, 0, 255); + current_desc->color.g = parse_int_range(1, 0, 255); + current_desc->color.b = parse_int_range(2, 0, 255); + current_desc->color.a = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @property + color2 + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the text shadow color to the specified values (0 to 255). + @endproperty +*/ +static void +st_collections_group_parts_part_description_color2(void) +{ + check_arg_count(4); + + if (current_part->type == EDJE_PART_TYPE_SPACER) + { + ERR("parse error %s:%i. SPACER part can't have a color defined", + file_in, line - 1); + exit(-1); + } + + current_desc->color2.r = parse_int_range(0, 0, 255); + current_desc->color2.g = parse_int_range(1, 0, 255); + current_desc->color2.b = parse_int_range(2, 0, 255); + current_desc->color2.a = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @property + color3 + @parameters + [red] [green] [blue] [alpha] + @effect + Sets the text outline color to the specified values (0 to 255). + @endproperty +*/ +static void +st_collections_group_parts_part_description_color3(void) +{ + Edje_Part_Collection *pc; + Edje_Part_Description_Text *ed; + + check_arg_count(4); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + if (current_part->type != EDJE_PART_TYPE_TEXT + && current_part->type != EDJE_PART_TYPE_TEXTBLOCK) + { + ERR("Setting color3 in part %s from %s not of type TEXT or TEXTBLOCK.", + current_part->name, pc->part); + exit(-1); + } + + ed = (Edje_Part_Description_Text*)current_desc; + + ed->text.color3.r = parse_int_range(0, 0, 255); + ed->text.color3.g = parse_int_range(1, 0, 255); + ed->text.color3.b = parse_int_range(2, 0, 255); + ed->text.color3.a = parse_int_range(3, 0, 255); +} + +/** + @page edcref + @block + rel1/rel2 + @context + description { + .. + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + .. + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + .. + } + @description + The rel1 and rel2 blocks are used to define the position of each corner + of the part's container. With rel1 being the left-up corner and rel2 + being the right-down corner. + @endblock + + @property + relative + @parameters + [X axis] [Y axis] + @effect + Moves a corner to a relative position inside the container of the + relative "to" part. Values from 0.0 (0%, beginning) to 1.0 (100%, end) + of each axis. + @endproperty +*/ +static void +st_collections_group_parts_part_description_rel1_relative(void) +{ + check_arg_count(2); + + current_desc->rel1.relative_x = FROM_DOUBLE(parse_float(0)); + current_desc->rel1.relative_y = FROM_DOUBLE(parse_float(1)); +} + +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the corner position a fixed number of pixels along each axis. + @endproperty +*/ +static void +st_collections_group_parts_part_description_rel1_offset(void) +{ + check_arg_count(2); + + current_desc->rel1.offset_x = parse_int(0); + current_desc->rel1.offset_y = parse_int(1); +} + +/** + @page edcref + @property + to + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to another part's + container. Setting to "" will un-set this value for inherited + parts. + @endproperty +*/ +static void +st_collections_group_parts_part_description_rel1_to(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel1.id_x)); + data_queue_part_lookup(pc, name, &(current_desc->rel1.id_y)); + free(name); + } +} + +/** + @page edcref + @property + to_x + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to the X axis of another + part's container. Simply put affects the first parameter of "relative". + Setting to "" will un-set this value for inherited parts. + @endproperty +*/ +static void +st_collections_group_parts_part_description_rel1_to_x(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel1.id_x)); + free(name); + } +} + +/** + @page edcref + @property + to_y + @parameters + [another part's name] + @effect + Causes a corner to be positioned relatively to the Y axis of another + part's container. Simply put, affects the second parameter of + "relative". Setting to "" will un-set this value for inherited parts. + @endproperty +*/ +static void +st_collections_group_parts_part_description_rel1_to_y(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel1.id_y)); + free(name); + } +} + +static void +st_collections_group_parts_part_description_rel2_relative(void) +{ + check_arg_count(2); + + current_desc->rel2.relative_x = FROM_DOUBLE(parse_float(0)); + current_desc->rel2.relative_y = FROM_DOUBLE(parse_float(1)); +} + +static void +st_collections_group_parts_part_description_rel2_offset(void) +{ + check_arg_count(2); + + current_desc->rel2.offset_x = parse_int(0); + current_desc->rel2.offset_y = parse_int(1); +} + +static void +st_collections_group_parts_part_description_rel2_to(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel2.id_x)); + data_queue_part_lookup(pc, name, &(current_desc->rel2.id_y)); + free(name); + } +} + +static void +st_collections_group_parts_part_description_rel2_to_x(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel2.id_x)); + free(name); + } +} + +static void +st_collections_group_parts_part_description_rel2_to_y(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->rel2.id_y)); + free(name); + } +} + +/** + @edcsection{description_image,Image state description sub blocks} + */ + +/** + @page edcref + @block + image + @context + description { + .. + image { + normal: "filename.ext"; + tween: "filename2.ext"; + .. + tween: "filenameN.ext"; + border: left right top bottom; + middle: 0/1/NONE/DEFAULT/SOLID; + } + .. + } + @description + @endblock + + @property + normal + @parameters + [image's filename] + @effect + Name of image to be used as previously declared in the images block. + In an animation, this is the first and last image displayed. It's + required in any image part + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_normal(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. " + "image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + { + char *name; + + name = parse_str(0); + data_queue_image_remove(&(ed->image.id), &(ed->image.set)); + data_queue_image_lookup(name, &(ed->image.id), &(ed->image.set)); + free(name); + } +} + +/** + @page edcref + @property + tween + @parameters + [image's filename] + @effect + Name of an image to be used in an animation loop, an image block can + have none, one or multiple tween declarations. Images are displayed in + the order they are listed, during the transition to the state they are + declared in; the "normal" image is the final state. + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_tween(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + { + char *name; + Edje_Part_Image_Id *iid; + + iid = mem_alloc(SZ(Edje_Part_Image_Id)); + ed->image.tweens_count++; + ed->image.tweens = realloc(ed->image.tweens, + sizeof (Edje_Part_Image_Id*) * ed->image.tweens_count); + ed->image.tweens[ed->image.tweens_count - 1] = iid; + name = parse_str(0); + data_queue_image_remove(&(iid->id), &(iid->set)); + data_queue_image_lookup(name, &(iid->id), &(iid->set)); + free(name); + } +} + +/** + @page edcref + @property + border + @parameters + [left] [right] [top] [bottom] + @effect + If set, the area (in pixels) of each side of the image will be + displayed as a fixed size border, from the side -> inwards, preventing + the corners from being changed on a resize. + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_border(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(4); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + ed->image.border.l = parse_int_range(0, 0, 0x7fffffff); + ed->image.border.r = parse_int_range(1, 0, 0x7fffffff); + ed->image.border.t = parse_int_range(2, 0, 0x7fffffff); + ed->image.border.b = parse_int_range(3, 0, 0x7fffffff); +} + +/** + @page edcref + @property + middle + @parameters + 0, 1, NONE, DEFAULT, SOLID + @effect + If border is set, this value tells Edje if the rest of the + image (not covered by the defined border) will be displayed or not + or be assumed to be solid (without alpha). The default is 1/DEFAULT. + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_middle(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + ed->image.border.no_fill = parse_enum(0, + "1", 0, + "DEFAULT", 0, + "0", 1, + "NONE", 1, + "SOLID", 2, + NULL); +} + +/** + @page edcref + @property + border_scale_by + @parameters + 0.0 or bigger (0.0 or 1.0 to turn it off) + @effect + If border scaling is enabled then normally the OUTPUT border sizes + (e.g. if 3 pixels on the left edge are set as a border, then normally + at scale 1.0, those 3 columns will always be the exact 3 columns of + output, or at scale 2.0 they will be 6 columns, or 0.33 they will merge + into a single column). This property multiplies the input scale + factor by this multiplier, allowing the creation of "supersampled" + borders to make much higher resolution outputs possible by always using + the highest resolution artwork and then runtime scaling it down. + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_border_scale_by(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + ed->image.border.scale_by = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); +} + +/** + @page edcref + @property + border_scale + @parameters + 0, 1 + @effect + If border is set, this value tells Edje if the border should be scaled + by the object/global edje scale factors + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_border_scale(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + ed->image.border.scale = parse_enum(0, + "0", 0, + "1", 1, + NULL); +} + +/** + @page edcref + @property + scale_hint + @parameters + 0, NONE, DYNAMIC, STATIC + @effect + Sets the evas image scale hint letting the engine more effectively save + cached copies of the scaled image if it makes sense + @endproperty +*/ +static void +st_collections_group_parts_part_description_image_scale_hint(void) +{ + Edje_Part_Description_Image *ed; + + check_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) current_desc; + + ed->image.scale_hint = parse_enum(0, + "NONE", EVAS_IMAGE_SCALE_HINT_NONE, + "DYNAMIC", EVAS_IMAGE_SCALE_HINT_DYNAMIC, + "STATIC", EVAS_IMAGE_SCALE_HINT_STATIC, + "0", EVAS_IMAGE_SCALE_HINT_NONE, + NULL); +} + +/** + @page edcref + @block + fill + @context + description { + .. + fill { + smooth: 0-1; + origin { + relative: X-axis Y-axis; + offset: X-axis Y-axis; + } + size { + relative: width height; + offset: width height; + } + } + .. + } + @description + The fill method is an optional block that defines the way an IMAGE part + is going to be displayed inside its container. + It can be used for tiling (repeating the image) or displaying only + part of an image. See @ref evas_object_image_fill_set() documentation + for more details. + @endblock + + @property + smooth + @parameters + [0 or 1] + @effect + The smooth property takes a boolean value to decide if the image will + be smoothed on scaling (1) or not (0). The default value is 1. + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_smooth(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(1); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY `%s` part (%i).", + file_in, line - 1, current_part->name, current_part->type); + exit(-1); + } + } + + fill->smooth = parse_bool(0); +} + +/** + @page edcref + + @property + spread + @parameters + TODO + @effect + TODO + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_spread(void) +{ +#if 0 + Edje_Part_Collection *pc; + Edje_Part *ep; + Edje_Part_Description_Image *ed; +#endif + + check_arg_count(1); + + /* XXX this will need to include IMAGES when spread support is added to evas images */ + { + ERR("parse error %s:%i. fill.spread not supported yet.", + file_in, line - 1); + exit(-1); + } + +#if 0 + pc = eina_list_data_get(eina_list_last(edje_collections)); + + ep = pc->parts[pc->parts_count - 1]; + + if (ep->type != EDJE_PART_TYPE_IMAGE) + { + ERR("parse error %s:%i. image attributes in non-IMAGE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Image*) ep->default_desc; + if (ep->other.desc_count) ed = (Edje_Part_Description_Image*) ep->other.desc[ep->other.desc_count - 1]; + + ed->image.fill.spread = parse_int_range(0, 0, 1); +#endif +} + +/** + @page edcref + + @property + type + @parameters + TODO + @effect + TODO + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_type(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(1); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY part.", + file_in, line - 1); + exit(-1); + } + } + + fill->type = parse_enum(0, + "SCALE", EDJE_FILL_TYPE_SCALE, + "TILE", EDJE_FILL_TYPE_TILE, + NULL); +} + +/** + @page edcref + @block + origin + @context + description { + .. + fill { + .. + origin { + relative: 0.0 0.0; + offset: 0 0; + } + .. + } + .. + } + @description + The origin block is used to place the starting point, inside the + displayed element, that will be used to render the tile. By default, + the origin is set at the element's left-up corner. + @endblock + + @property + relative + @parameters + [X axis] [Y axis] + @effect + Sets the starting point relatively to displayed element's content. + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_origin_relative(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(2); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY part.", + file_in, line - 1); + exit(-1); + } + } + + fill->pos_rel_x = FROM_DOUBLE(parse_float_range(0, -999999999.0, 999999999.0)); + fill->pos_rel_y = FROM_DOUBLE(parse_float_range(1, -999999999.0, 999999999.0)); +} + +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the starting point a fixed number of pixels along each axis. + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_origin_offset(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(2); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY part.", + file_in, line - 1); + exit(-1); + } + } + + fill->pos_abs_x = parse_int(0); + fill->pos_abs_y = parse_int(1); +} + +/** + @page edcref + @block + size + @context + description { + .. + fill { + .. + size { + relative: 1.0 1.0; + offset: -1 -1; + } + .. + } + .. + } + @description + The size block defines the tile size of the content that will be + displayed. + @endblock + + @property + relative + @parameters + [width] [height] + @effect + Takes a pair of decimal values that represent the percentual value + of the original size of the element. For example, "0.5 0.5" represents + half the size, while "2.0 2.0" represents the double. The default + value is "1.0 1.0". + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_size_relative(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(2); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY part.", + file_in, line - 1); + exit(-1); + } + } + + fill->rel_x = FROM_DOUBLE(parse_float_range(0, 0.0, 999999999.0)); + fill->rel_y = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); +} + +/** + @page edcref + @property + offset + @parameters + [X axis] [Y axis] + @effect + Affects the size of the tile a fixed number of pixels along each axis. + @endproperty +*/ +static void +st_collections_group_parts_part_description_fill_size_offset(void) +{ + Edje_Part_Description_Spec_Fill *fill; + + check_arg_count(2); + + switch (current_part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *ed; + + ed = (Edje_Part_Description_Image*) current_desc; + + fill = &ed->image.fill; + break; + } + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *ed; + + ed = (Edje_Part_Description_Proxy*) current_desc; + + fill = &ed->proxy.fill; + break; + } + default: + { + ERR("parse error %s:%i. " + "image and proxy attributes in non-IMAGE, non-PROXY part.", + file_in, line - 1); + exit(-1); + } + } + + fill->abs_x = parse_int(0); + fill->abs_y = parse_int(1); +} + + +/** + @edcsection{description_text,Text state description sub blocks} + */ + +/** + @page edcref + + @block + text + @context + part { + description { + .. + text { + text: "some string of text to display"; + font: "font_name"; + size: SIZE; + text_class: "class_name"; + fit: horizontal vertical; + min: horizontal vertical; + max: horizontal vertical; + align: X-axis Y-axis; + source: "part_name"; + text_source: "text_part_name"; + ellipsis: 0.0-1.0; + style: "stylename"; + } + .. + } + } + @description + @endblock + + @property + text + @parameters + [a string of text, or nothing] + @effect + Sets the default content of a text part, normally the application is + the one changing its value. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_text(void) +{ + Edje_Part_Description_Text *ed; + char *str = NULL; + int i; + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + for (i = 0; ;i++) + { + char *s; + + if (!is_param(i)) break; + s = parse_str(i); + if (!str) str = s; + else + { + str = realloc(str, strlen(str) + strlen(s) + 1); + strcat(str, s); + free(s); + } + } + ed->text.text.str = str; +} + +/** + @page edcref + + @property + text_class + @parameters + [text class name] + @effect + Similar to color_class, this is the name used by the application + to alter the font family and size at runtime. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_text_class(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.text_class = parse_str(0); +} + +/** + @page edcref + + @property + font + @parameters + [font alias] + @effect + This sets the font family to one of the aliases set up in the "fonts" + block. Can be overrided by the application. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_font(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.font.str = parse_str(0); +} + +/** + @page edcref + + @property + style + @parameters + [the style name] + @effect + Causes the part to use the default style and tags defined in the + "style" block with the specified name. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_style(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.style.str = parse_str(0); +} + +/** + @page edcref + + @property + repch + @parameters + [the replacement character string] + @effect + If this is a textblock and is in PASSWORD mode this string is used + to replace every character to hide the details of the entry. Normally + you would use a "*", but you can use anything you like. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_repch(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.repch.str = parse_str(0); +} + +/** + @page edcref + + @property + size + @parameters + [font size in points (pt)] + @effect + Sets the default font size for the text part. Can be overrided by the + application. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_size(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*)current_desc; + + ed->text.size = parse_int_range(0, 0, 255); +} + +/** + @page edcref + + @property + size_range + @parameters + [font min size in points (pt)] [font max size in points (pt)] + @effect + Sets the allowed font size for the text part. Setting min and max to 0 + means we won't restrict the sizing (default). + @endproperty + @since 1.1.0 +*/ +static void +st_collections_group_parts_part_description_text_size_range(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(2); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.size_range_min = parse_int_range(0, 0, 255); + ed->text.size_range_max = parse_int_range(1, 0, 255); + if (ed->text.size_range_min > ed->text.size_range_max) + { + ERR("parse error %s:%i. min size is bigger than max size.", + file_in, line - 1); + exit(-1); + } +} + +/** + @page edcref + + @property + fit + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is set to 1 edje will resize the text for it + to fit in it's container. Both are disabled by default. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_fit(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(2); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.fit_x = parse_bool(0); + ed->text.fit_y = parse_bool(1); +} + +/** + @page edcref + + @property + min + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the minimum size of + the container to be equal to the minimum size of the text. The default + value is "0 0". + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_min(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(2); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*)current_desc; + + ed->text.min_x = parse_bool(0); + ed->text.min_y = parse_bool(1); +} + +/** + @page edcref + + @property + max + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the maximum size of + the container to be equal to the maximum size of the text. The default + value is "0 0". + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_max(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(2); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.max_x = parse_bool(0); + ed->text.max_y = parse_bool(1); +} + +/** + @page edcref + + @property + align + @parameters + [horizontal] [vertical] + @effect + Change the position of the point of balance inside the container. The + default value is 0.5 0.5. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_align(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(2); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); + ed->text.align.y = FROM_DOUBLE(parse_float_range(1, 0.0, 1.0)); +} + +/** + @page edcref + + @property + source + @parameters + [another TEXT part's name] + @effect + Causes the part to use the text properties (like font and size) of + another part and update them as they change. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_source(void) +{ + Edje_Part_Collection *pc; + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->text.id_source)); + free(name); + } +} + +/** + @page edcref + + @property + text_source + @parameters + [another TEXT part's name] + @effect + Causes the part to display the text content of another part and update + them as they change. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_text_source(void) +{ + Edje_Part_Collection *pc; + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(ed->text.id_text_source)); + free(name); + } +} + +/** + @page edcref + + @property + ellipsis + @parameters + [point of balance] + @effect + Used to balance the text in a relative point from 0.0 to 1.0, this + point is the last section of the string to be cut out in case of a + resize that is smaller than the text itself. The default value is 0.0. + @endproperty +*/ +static void +st_collections_group_parts_part_description_text_elipsis(void) +{ + Edje_Part_Description_Text *ed; + + check_arg_count(1); + + if ((current_part->type != EDJE_PART_TYPE_TEXT) && + (current_part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + ERR("parse error %s:%i. text attributes in non-TEXT part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Text*) current_desc; + + ed->text.elipsis = parse_float_range(0, 0.0, 1.0); +} + + +/** + @edcsection{description_box,Box state description sub blocks} + */ + +/** + @page edcref + + @block + box + @context + part { + description { + .. + box { + layout: "vertical"; + padding: 0 2; + align: 0.5 0.5; + min: 0 0; + } + .. + } + } + @description + A box block can contain other objects and display them in different + layouts, any of the predefined set, or a custom one, set by the + application. + @endblock + + @property + layout + @parameters + [primary layout] [fallback layout] + @effect + Sets the layout for the box: + @li horizontal (default) + @li vertical + @li horizontal_homogeneous + @li vertical_homogeneous + @li horizontal_max (homogeneous to the max sized child) + @li vertical_max + @li horizontal_flow + @li vertical_flow + @li stack + @li some_other_custom_layout_set_by_the_application + You could set a custom layout as fallback, it makes very + very little sense though, and if that one fails, it will + default to horizontal. + @endproperty + + @property + align + @parameters + [horizontal] [vertical] + @effect + Change the position of the point of balance inside the container. The + default value is 0.5 0.5. + @endproperty + + @property + padding + @parameters + [horizontal] [vertical] + @effect + Sets the space between cells in pixels. Defaults to 0 0. + @endproperty + + @property + min + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the minimum size of + the box to be equal to the minimum size of the items. The default + value is "0 0". + @endproperty +*/ +static void st_collections_group_parts_part_description_box_layout(void) +{ + Edje_Part_Description_Box *ed; + + check_min_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_BOX) + { + ERR("parse error %s:%i. box attributes in non-BOX part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Box*) current_desc; + + ed->box.layout = parse_str(0); + if (is_param(1)) + ed->box.alt_layout = parse_str(1); +} + +static void st_collections_group_parts_part_description_box_align(void) +{ + Edje_Part_Description_Box *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_BOX) + { + ERR("parse error %s:%i. box attributes in non-BOX part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Box*) current_desc; + + ed->box.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); + ed->box.align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); +} + +static void st_collections_group_parts_part_description_box_padding(void) +{ + Edje_Part_Description_Box *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_BOX) + { + ERR("parse error %s:%i. box attributes in non-BOX part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Box*) current_desc; + + ed->box.padding.x = parse_int_range(0, 0, 0x7fffffff); + ed->box.padding.y = parse_int_range(1, 0, 0x7fffffff); +} + +static void +st_collections_group_parts_part_description_box_min(void) +{ + Edje_Part_Description_Box *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_BOX) + { + ERR("parse error %s:%i. box attributes in non-BOX part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Box*) current_desc; + + ed->box.min.h = parse_bool(0); + ed->box.min.v = parse_bool(1); +} + + +/** + @edcsection{description_table,Table state description sub blocks} + */ + +/** + @page edcref + + @block + table + @context + part { + description { + .. + table { + homogeneous: TABLE; + padding: 0 2; + align: 0.5 0.5; + min: 0 0; + } + .. + } + } + @description + A table block can contain other objects packed in multiple columns + and rows, and each item can span across more than one column and/or + row. + @endblock + + @property + homogeneous + @parameters + [homogeneous mode] + @effect + Sets the homogeneous mode for the table: + @li NONE (default) + @li TABLE + @li ITEM + @endproperty + + @property + align + @parameters + [horizontal] [vertical] + @effect + Change the position of the point of balance inside the container. The + default value is 0.5 0.5. + @endproperty + + @property + padding + @parameters + [horizontal] [vertical] + @effect + Sets the space between cells in pixels. Defaults to 0 0. + @endproperty + + @property + min + @parameters + [horizontal] [vertical] + @effect + When any of the parameters is enabled (1) it forces the minimum size of + the table to be equal to the minimum size of the items. The default + value is "0 0". + @endproperty +*/ +static void st_collections_group_parts_part_description_table_homogeneous(void) +{ + Edje_Part_Description_Table *ed; + + check_min_arg_count(1); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. table attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Table*) current_desc; + + ed->table.homogeneous = parse_enum(0, + "NONE", EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE, + "TABLE", EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE, + "ITEM", EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM, + NULL); +} + +static void st_collections_group_parts_part_description_table_align(void) +{ + Edje_Part_Description_Table *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. table attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Table*) current_desc; + + ed->table.align.x = FROM_DOUBLE(parse_float_range(0, -1.0, 1.0)); + ed->table.align.y = FROM_DOUBLE(parse_float_range(1, -1.0, 1.0)); +} + +static void st_collections_group_parts_part_description_table_padding(void) +{ + Edje_Part_Description_Table *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. table attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Table*) current_desc; + + ed->table.padding.x = parse_int_range(0, 0, 0x7fffffff); + ed->table.padding.y = parse_int_range(1, 0, 0x7fffffff); +} + +static void +st_collections_group_parts_part_description_table_min(void) +{ + Edje_Part_Description_Table *ed; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_TABLE) + { + ERR("parse error %s:%i. box attributes in non-TABLE part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_Table*) current_desc; + + ed->table.min.h = parse_bool(0); + ed->table.min.v = parse_bool(1); +} + +/** + @edcsection{description_map,Map state description sub blocks} + */ + +/** + @page edcref + @block + map + @context + description { + .. + map { + perspective: "name"; + light: "name"; + on: 1; + smooth: 1; + perspective_on: 1; + backface_cull: 1; + alpha: 1; + + rotation { + .. + } + } + .. + } + + @description + @endblock + + @property + perspective + @parameters + [another part's name] + @effect + This sets the part that is used as the "perspective point" for giving + a part a "3d look". The perspective point should have a perspective + section that provides zplane and focal properties. The center of this + part will be used as the focal point, so size, color and visibility + etc. are not relevant just center point, zplane and focal are used. + This also implicitly enables perspective transforms (see the on + parameter for the map section). + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_perspective(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->map.id_persp)); + free(name); + } + + current_desc->map.persp_on = 1; +} + +/** + @page edcref + @property + light + @parameters + [another part's name] + @effect + This sets the part that is used as the "light" for calculating the + brightness (based on how directly the part's surface is facing the + light source point). Like the perspective point part, the center point + is used and zplane is used for the z position (0 being the zero-plane + where all 2D objects normally live) and positive values being further + away into the distance. The light part color is used as the light + color (alpha not used for light color). The color2 color is used for + the ambient lighting when calculating brightness (alpha also not + used). + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_light(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->map.id_light)); + free(name); + } +} + +/** + @page edcref + @property + on + @parameters + [1 or 0] + @effect + This enables mapping for the part. Default is 0. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_on(void) +{ + check_arg_count(1); + + current_desc->map.on = parse_bool(0); +} + +/** + @page edcref + @property + smooth + @parameters + [1 or 0] + @effect + This enable smooth map rendering. This may be linear interpolation, + anisotropic filtering or anything the engine decides is "smooth". + This is a best-effort hint and may not produce precisely the same + results in all engines and situations. Default is 1 + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_smooth(void) +{ + check_arg_count(1); + + current_desc->map.smooth = parse_bool(0); +} + +/** + @page edcref + @property + alpha + @parameters + [1 or 0] + @effect + This enable alpha channel when map rendering. Default is 1. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_alpha(void) +{ + check_arg_count(1); + + current_desc->map.alpha = parse_bool(0); +} + +/** + @page edcref + @property + backface_cull + @parameters + [1 or 0] + @effect + This enables backface culling (when the rotated part that normally + faces the camera is facing away after being rotated etc.). This means + that the object will be hidden when "backface culled". + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_backface_cull(void) +{ + check_arg_count(1); + + current_desc->map.backcull = parse_bool(0); +} + +/** + @page edcref + @property + perspective_on + @parameters + [1 or 0] + @effect + Enable perspective when rotating even without a perspective point object. + This would use perspective set for the object itself or for the + canvas as a whole as the global perspective with + edje_perspective_set() and edje_perspective_global_set(). + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_perspective_on(void) +{ + check_arg_count(1); + + current_desc->map.persp_on = parse_bool(0); +} +/** + @page edcref + @block + rotation + @context + map { + .. + rotation { + center: "name"; + x: 45.0; + y: 45.0; + z: 45.0; + } + .. + } + @description + Rotates the part, optionally with the center on another part. + @endblock + + @property + center + @parameters + [another part's name] + @effect + This sets the part that is used as the center of rotation when + rotating the part with this description. The part's center point + is used as the rotation center when applying rotation around the + x, y and z axes. If no center is given, the parts original center + itself is used for the rotation center. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_rotation_center(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + { + char *name; + + name = parse_str(0); + data_queue_part_lookup(pc, name, &(current_desc->map.rot.id_center)); + free(name); + } +} + +/** + @page edcref + @property + x + @parameters + [X degrees] + @effect + This sets the rotation around the x axis of the part considering + the center set. In degrees. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_rotation_x(void) +{ + check_arg_count(1); + + current_desc->map.rot.x = FROM_DOUBLE(parse_float(0)); +} + +/** + @page edcref + @property + y + @parameters + [Y degrees] + @effect + This sets the rotation around the y axis of the part considering + the center set. In degrees. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_rotation_y(void) +{ + check_arg_count(1); + + current_desc->map.rot.y = FROM_DOUBLE(parse_float(0)); +} + +/** + @page edcref + @property + z + @parameters + [Z degrees] + @effect + This sets the rotation around the z axis of the part considering + the center set. In degrees. + @endproperty +*/ +static void +st_collections_group_parts_part_description_map_rotation_z(void) +{ + check_arg_count(1); + + current_desc->map.rot.z = FROM_DOUBLE(parse_float(0)); +} + +/** + @page edcref + @block + perspective + @context + description { + .. + perspective { + zplane: 0; + focal: 1000; + } + .. + } + @description + Adds focal and plane perspective to the part. Active if perspective_on is true. + Must be provided if the part is being used by other part as it's perspective target. + @endblock + + @property + zplane + @parameters + [unscaled Z value] + @effect + This sets the z value that will not be scaled. Normally this is 0 as + that is the z distance that all objects are at normally. + @endproperty +*/ +static void +st_collections_group_parts_part_description_perspective_zplane(void) +{ + check_arg_count(1); + + current_desc->persp.zplane = parse_int(0); +} + + +/** + @page edcref + @property + focal + @parameters + [distance] + @effect + This sets the distance from the focal z plane (zplane) and the + camera - i.e. very much equating to focal length of the camera + @endproperty +*/ +static void +st_collections_group_parts_part_description_perspective_focal(void) +{ + check_arg_count(1); + + current_desc->persp.focal = parse_int_range(0, 1, 0x7fffffff); +} + + +/** + @edcsection{description_params,Params state description sub blocks} + */ + +/** + @page edcref + @block + params + @context + description { + .. + params { + int: "name" 0; + double: "other_name" 0.0; + string: "another_name" "some text"; + bool: "name" 1; + choice: "some_name" "value"; + } + .. + } + @description + Set parameters for EXTERNAL parts. The value overwrites previous + definitions with the same name. + @endblock +*/ +static void +_st_collections_group_parts_part_description_params(Edje_External_Param_Type type) +{ + Edje_Part_Description_External *ed; + Edje_External_Param *param; + Eina_List *l; + const char *name; + int found = 0; + + check_arg_count(2); + + if (current_part->type != EDJE_PART_TYPE_EXTERNAL) + { + ERR("parse error %s:%i. params in non-EXTERNAL part.", + file_in, line - 1); + exit(-1); + } + + ed = (Edje_Part_Description_External*) current_desc; + + name = parse_str(0); + + /* if a param with this name already exists, overwrite it */ + EINA_LIST_FOREACH(ed->external_params, l, param) + { + if (!strcmp(param->name, name)) + { + found = 1; + break; + } + } + + if (!found) + { + param = mem_alloc(SZ(Edje_External_Param)); + param->name = name; + } + + param->type = type; + param->i = 0; + param->d = 0; + param->s = NULL; + + switch (type) + { + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + case EDJE_EXTERNAL_PARAM_TYPE_INT: + param->i = parse_int(1); + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + param->d = parse_float(1); + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + param->s = parse_str(1); + break; + default: + ERR("parse error %s:%i. Invalid param type.", + file_in, line - 1); + break; + } + + if (!found) + ed->external_params = eina_list_append(ed->external_params, param); +} + +/** + @page edcref + @property + int + @parameters + [param_name] [int_value] + @effect + Adds an integer parameter for an external object + @endproperty +*/ +static void +st_collections_group_parts_part_description_params_int(void) +{ + _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_INT); +} + +/** + @page edcref + @property + double + @parameters + [param_name] [double_value] + @effect + Adds a double parameter for an external object + @endproperty +*/ +static void +st_collections_group_parts_part_description_params_double(void) +{ + _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_DOUBLE); +} + +/** + @page edcref + @property + string + @parameters + [param_name] [string_value] + @effect + Adds a string parameter for an external object + @endproperty +*/ +static void +st_collections_group_parts_part_description_params_string(void) +{ + _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_STRING); +} + +/** + @page edcref + @property + bool + @parameters + [param_name] [bool_value] + @effect + Adds an boolean parameter for an external object. Value must be 0 or 1. + @endproperty +*/ +static void +st_collections_group_parts_part_description_params_bool(void) +{ + _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_BOOL); +} + +/** + @page edcref + @property + choice + @parameters + [param_name] [choice_string] + @effect + Adds a choice parameter for an external object. The possible + choice values are defined by external type at their register time + and will be validated at runtime. + @endproperty +*/ +static void +st_collections_group_parts_part_description_params_choice(void) +{ + _st_collections_group_parts_part_description_params(EDJE_EXTERNAL_PARAM_TYPE_CHOICE); +} + + +/** + @edcsection{program, Program block} + */ + +/** + @page edcref + @block + program + @context + group { + programs { + .. + program { + name: "programname"; + signal: "signalname"; + source: "partname"; + filter: "partname" "statename"; + in: 0.3 0.0; + action: STATE_SET "statename" state_value; + transition: LINEAR 0.5; + target: "partname"; + target: "anotherpart"; + after: "programname"; + after: "anotherprogram"; + } + .. + } + } + @description + Programs define how your interface reacts to events. + Programs can change the state of parts, react to events or trigger + other events. + @endblock +*/ +static void +ob_collections_group_programs_program(void) +{ + Edje_Part_Collection *pc; + Edje_Program *ep; + Edje_Program_Parser *epp; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + ep = mem_alloc(SZ(Edje_Program_Parser)); + ep->id = -1; + ep->tween.mode = EDJE_TWEEN_MODE_LINEAR; + ep->after = NULL; + epp = (Edje_Program_Parser *)ep; + epp->can_override = EINA_FALSE; + + _edje_program_insert(pc, ep); + + current_program = ep; +} + +/** + @page edcref + @property + name + @parameters + [program name] + @effect + Symbolic name of program as a unique identifier. + @endproperty +*/ +static void +st_collections_group_programs_program_name(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + current_program->name = parse_str(0); + + _edje_program_check(current_program->name, current_program, pc->programs.fnmatch, pc->programs.fnmatch_count); + _edje_program_check(current_program->name, current_program, pc->programs.strcmp, pc->programs.strcmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.strncmp, pc->programs.strncmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.strrncmp, pc->programs.strrncmp_count); + _edje_program_check(current_program->name, current_program, pc->programs.nocmp, pc->programs.nocmp_count); +} + +/** + @page edcref + @property + signal + @parameters + [signal name] + @effect + Specifies signal(s) that should cause the program to run. The signal + received must match the specified source to run. + Signals may be globbed, but only one signal keyword per program + may be used. ex: signal: "mouse,clicked,*"; (clicking any mouse button + that matches source starts program). + @endproperty +*/ +static void +st_collections_group_programs_program_signal(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + _edje_program_remove(pc, current_program); + current_program->signal = parse_str(0); + _edje_program_insert(pc, current_program); +} + +/** + @page edcref + @property + source + @parameters + [source name] + @effect + Source of accepted signal. Sources may be globbed, but only one source + keyword per program may be used. ex:source: "button-*"; (Signals from + any part or program named "button-*" are accepted). + @endproperty +*/ +static void +st_collections_group_programs_program_source(void) +{ + Edje_Part_Collection *pc; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + + _edje_program_remove(pc, current_program); + current_program->source = parse_str(0); + _edje_program_insert(pc, current_program); +} + +/** + @page edcref + @property + filter + @parameters + [part] [state] + @effect + Filter signals to be only accepted if the part [part] is in state named [state]. + Only one filter per program can be used. If [state] is not given, the source of + the event will be used instead. + @endproperty +*/ +static void +st_collections_group_programs_program_filter(void) +{ + check_min_arg_count(1); + + if(is_param(1)) { + current_program->filter.part = parse_str(0); + current_program->filter.state = parse_str(1); + } else { + current_program->filter.state = parse_str(0); + } +} + +/** + @page edcref + @property + in + @parameters + [from] [range] + @effect + Wait 'from' seconds before executing the program. And add a random + number of seconds (from 0 to 'range') to the total waiting time. + @endproperty +*/ +static void +st_collections_group_programs_program_in(void) +{ + check_arg_count(2); + + current_program->in.from = parse_float_range(0, 0.0, 999999999.0); + current_program->in.range = parse_float_range(1, 0.0, 999999999.0); +} + +/** + @page edcref + @property + action + @parameters + [type] [param1] [param2] + @effect + Action to be performed by the program. Valid actions are: STATE_SET, + ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, DRAG_VAL_STEP, DRAG_VAL_PAGE, + FOCUS_SET, PARAM_COPY, PARAM_SET, PLAY_SAMPLE, PLAY_TONE + Only one action can be specified per program. Examples:\n + action: STATE_SET "statename" 0.5;\n + action: ACTION_STOP;\n + action: SIGNAL_EMIT "signalname" "emitter";\n + action: DRAG_VAL_SET 0.5 0.0;\n + action: DRAG_VAL_STEP 1.0 0.0;\n + action: DRAG_VAL_PAGE 0.0 0.0;\n + action: FOCUS_SET;\n + action: FOCUS_OBJECT;\n + action: PARAM_COPY "src_part" "src_param" "dst_part" "dst_param";\n + action: PARAM_SET "part" "param" "value";\n + action: PLAY_SAMPLE "sample name";\n + action: PLAY_TONE "tone name" duration in seconds ( Range 0.1 to 10.0 );\n + @endproperty +*/ +static void +st_collections_group_programs_program_action(void) +{ + Edje_Part_Collection *pc; + Edje_Program *ep; + int i; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_program; + ep->action = parse_enum(0, + "STATE_SET", EDJE_ACTION_TYPE_STATE_SET, + "ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP, + "SIGNAL_EMIT", EDJE_ACTION_TYPE_SIGNAL_EMIT, + "DRAG_VAL_SET", EDJE_ACTION_TYPE_DRAG_VAL_SET, + "DRAG_VAL_STEP", EDJE_ACTION_TYPE_DRAG_VAL_STEP, + "DRAG_VAL_PAGE", EDJE_ACTION_TYPE_DRAG_VAL_PAGE, + "SCRIPT", EDJE_ACTION_TYPE_SCRIPT, + "FOCUS_SET", EDJE_ACTION_TYPE_FOCUS_SET, + "FOCUS_OBJECT", EDJE_ACTION_TYPE_FOCUS_OBJECT, + "PARAM_COPY", EDJE_ACTION_TYPE_PARAM_COPY, + "PARAM_SET", EDJE_ACTION_TYPE_PARAM_SET, + "PLAY_SAMPLE", EDJE_ACTION_TYPE_SOUND_SAMPLE, + "PLAY_TONE", EDJE_ACTION_TYPE_SOUND_TONE, + NULL); + if (ep->action == EDJE_ACTION_TYPE_STATE_SET) + { + ep->state = parse_str(1); + if (get_arg_count() == 1) + ep->value = 0.0; + else + ep->value = parse_float_range(2, 0.0, 1.0); + } + else if (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT) + { + ep->state = parse_str(1); + ep->state2 = parse_str(2); + } + else if (ep->action == EDJE_ACTION_TYPE_SOUND_SAMPLE) + { + ep->sample_name = parse_str(1); + for (i = 0; i < (int)edje_file->sound_dir->samples_count; i++) + { + if (!strcmp(edje_file->sound_dir->samples[i].name, ep->sample_name)) + break; + if (i == (int)(edje_file->sound_dir->samples_count - 1)) + { + ERR("No Sample name %s exist.", ep->sample_name); + exit(-1); + } + } + ep->speed = parse_float_range(2, 0.0, 10.0); + } + else if (ep->action == EDJE_ACTION_TYPE_SOUND_TONE) + { + ep->tone_name = parse_str(1); + for (i = 0; i < (int)edje_file->sound_dir->tones_count; i++) + { + if (!strcmp(edje_file->sound_dir->tones[i].name, ep->tone_name)) + break; + if (i == (int)(edje_file->sound_dir->tones_count - 1)) + { + ERR("No Tone name %s exist.", ep->tone_name); + exit(-1); + } + } + ep->duration = parse_float_range(2, 0.1, 10.0); + } + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_SET) + { + ep->value = parse_float(1); + ep->value2 = parse_float(2); + } + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP) + { + ep->value = parse_float(1); + ep->value2 = parse_float(2); + } + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_PAGE) + { + ep->value = parse_float(1); + ep->value2 = parse_float(2); + } + else if (ep->action == EDJE_ACTION_TYPE_PARAM_COPY) + { + char *src_part, *dst_part; + + src_part = parse_str(1); + ep->state = parse_str(2); + dst_part = parse_str(3); + ep->state2 = parse_str(4); + + data_queue_part_lookup(pc, src_part, &(ep->param.src)); + data_queue_part_lookup(pc, dst_part, &(ep->param.dst)); + + free(src_part); + free(dst_part); + } + else if (ep->action == EDJE_ACTION_TYPE_PARAM_SET) + { + char *part; + + part = parse_str(1); + ep->state = parse_str(2); + ep->state2 = parse_str(3); + + data_queue_part_lookup(pc, part, &(ep->param.dst)); + free(part); + } + + switch (ep->action) + { + case EDJE_ACTION_TYPE_ACTION_STOP: + check_arg_count(1); + break; + case EDJE_ACTION_TYPE_SCRIPT: + /* this is implicitly set by script {} so this is here just for + * completeness */ + break; + case EDJE_ACTION_TYPE_FOCUS_OBJECT: + case EDJE_ACTION_TYPE_FOCUS_SET: + check_arg_count(1); + break; + case EDJE_ACTION_TYPE_PARAM_COPY: + check_arg_count(5); + break; + case EDJE_ACTION_TYPE_PARAM_SET: + check_arg_count(4); + break; + case EDJE_ACTION_TYPE_SOUND_SAMPLE: + check_arg_count(3); + break; + case EDJE_ACTION_TYPE_SOUND_TONE: + check_arg_count(3); + break; + default: + check_arg_count(3); + } +} + +/** + @page edcref + @property + transition + @parameters + [type] [length] [[interp val 1]] [[interp val 2]] [[option]] + @effect + Defines how transitions occur using STATE_SET action.\n + Where 'type' is the style of the transition and 'length' is a double + specifying the number of seconds in which to preform the transition.\n + Valid types are: LIN or LINEAR, SIN or SINUSOIDAL, + ACCEL or ACCELERATE, DECEL or DECELERATE, + ACCEL_FAC or ACCELERATE_FACTOR, DECEL_FAC or DECELERATE_FACTOR, + SIN_FAC or SINUSOIDAL_FACTOR, DIVIS or DIVISOR_INTERP, + BOUNCE, SPRING. + + ACCEL_FAC, DECEL_FAC and SIN_FAC need the extra optional + "interp val 1" to determine the "factor" of curviness. 1.0 is the same + as their non-factor counterparts, where 0.0 is equal to linear. + Numbers higher than one make the curve angles steeper with a more + pronounced curve point. + + DIVIS, BOUNCE and SPRING also require "interp val 2" in addition + to "interp val 1". + + DIVIS uses val 1 as the initial gradient start + (0.0 is horizontal, 1.0 is diagonal (linear), 2.0 is twice the + gradient of linear etc.). val 2 is interpreted as an integer factor + defining how much the value swings "outside" the gradient only to come + back to the final resting spot at the end. 0.0 for val 2 is equivalent + to linear interpolation. Note that DIVIS can exceed 1.0 + + BOUNCE uses val 2 as the number of bounces (so its rounded down to + the nearest integer value), with val 1 determining how much the + bounce decays, with 0.0 giving linear decay per bounce, and higher + values giving much more decay. + + SPRING is similar to bounce, where val 2 specifies the number of + spring "swings" and val 1 specifies the decay, but it can exceed 1.0 + on the outer swings. + + Valid option is CURRENT. + + CURRENT is the option which causes the edje object to move from its current position. + It can be used as the last parameter of any transition type. (@since 1.1.0) + + @endproperty +*/ +static void +st_collections_group_programs_program_transition(void) +{ + check_min_arg_count(2); + + current_program->tween.mode = parse_enum(0, + // short names + "LIN", EDJE_TWEEN_MODE_LINEAR, + "SIN", EDJE_TWEEN_MODE_SINUSOIDAL, + "ACCEL", EDJE_TWEEN_MODE_ACCELERATE, + "DECEL", EDJE_TWEEN_MODE_DECELERATE, + "ACCEL_FAC", EDJE_TWEEN_MODE_ACCELERATE_FACTOR, + "DECEL_FAC", EDJE_TWEEN_MODE_DECELERATE_FACTOR, + "SIN_FAC", EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR, + "DIVIS", EDJE_TWEEN_MODE_DIVISOR_INTERP, + + // long/full names + "LINEAR", EDJE_TWEEN_MODE_LINEAR, + "SINUSOIDAL", EDJE_TWEEN_MODE_SINUSOIDAL, + "ACCELERATE", EDJE_TWEEN_MODE_ACCELERATE, + "DECELERATE", EDJE_TWEEN_MODE_DECELERATE, + "ACCELERATE_FACTOR", EDJE_TWEEN_MODE_ACCELERATE_FACTOR, + "DECELERATE_FACTOR", EDJE_TWEEN_MODE_DECELERATE_FACTOR, + "SINUSOIDAL_FACTOR", EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR, + "DIVISOR_INTERP", EDJE_TWEEN_MODE_DIVISOR_INTERP, + + // long/full is short enough + "BOUNCE", EDJE_TWEEN_MODE_BOUNCE, + "SPRING", EDJE_TWEEN_MODE_SPRING, + NULL); + current_program->tween.time = FROM_DOUBLE(parse_float_range(1, 0.0, 999999999.0)); + if ((current_program->tween.mode >= EDJE_TWEEN_MODE_LINEAR) && + (current_program->tween.mode <= EDJE_TWEEN_MODE_DECELERATE)) + { + if ((get_arg_count() == 3) && (!strcmp(parse_str(2), "CURRENT"))) + current_program->tween.mode |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT; + else if (get_arg_count() != 2) + { + ERR("parse error %s:%i. Need 2rd parameter to set time", + file_in, line - 1); + exit(-1); + } + } + // the following need v1 + // EDJE_TWEEN_MODE_ACCELERATE_FACTOR + // EDJE_TWEEN_MODE_DECELERATE_FACTOR + // EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR + // current_program->tween.v1 + else if ((current_program->tween.mode >= EDJE_TWEEN_MODE_ACCELERATE_FACTOR) && + (current_program->tween.mode <= EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR)) + { + if ((get_arg_count() == 4) && (!strcmp(parse_str(3), "CURRENT"))) + current_program->tween.mode |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT; + else if (get_arg_count() != 3) + { + ERR("parse error %s:%i. Need 3rd parameter to set factor", + file_in, line - 1); + exit(-1); + } + current_program->tween.v1 = FROM_DOUBLE(parse_float_range(2, 0.0, 999999999.0)); + } + // the followjng also need v2 + // EDJE_TWEEN_MODE_DIVISOR_INTERP + // EDJE_TWEEN_MODE_BOUNCE + // EDJE_TWEEN_MODE_SPRING + // current_program->tween.v2 + else if ((current_program->tween.mode >= EDJE_TWEEN_MODE_DIVISOR_INTERP) && + (current_program->tween.mode <= EDJE_TWEEN_MODE_SPRING)) + { + if ((get_arg_count() == 5) && (!strcmp(parse_str(4), "CURRENT"))) + current_program->tween.mode |= EDJE_TWEEN_MODE_OPT_FROM_CURRENT; + else if (get_arg_count() != 4) + { + ERR("parse error %s:%i. " + "Need 3rd and 4th parameters to set factor and counts", + file_in, line - 1); + exit(-1); + } + current_program->tween.v1 = FROM_DOUBLE(parse_float_range(2, 0.0, 999999999.0)); + current_program->tween.v2 = FROM_DOUBLE(parse_float_range(3, 0.0, 999999999.0)); + } +} + +/** + @page edcref + @property + target + @parameters + [target] + @effect + Program or part on which the specified action acts. Multiple target + keywords may be specified, one per target. SIGNAL_EMITs do not have + targets. + @endproperty +*/ +static void +st_collections_group_programs_program_target(void) +{ + Edje_Part_Collection *pc; + Edje_Program *ep; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_program; + { + Edje_Program_Target *et; + Edje_Program_Target *etw; + Eina_List *l; + char *name; + char *copy; + + name = parse_str(0); + + EINA_LIST_FOREACH(ep->targets, l, etw) + { + if (!strcmp(name, (char*) (etw + 1))) + { + free(name); + return; + } + } + + et = mem_alloc(SZ(Edje_Program_Target) + strlen(name) + 1); + ep->targets = eina_list_append(ep->targets, et); + copy = (char*) (et + 1); + + memcpy(copy, name, strlen(name) + 1); + + if (ep->action == EDJE_ACTION_TYPE_STATE_SET) + data_queue_part_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_ACTION_STOP) + data_queue_program_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_SET) + data_queue_part_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP) + data_queue_part_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_PAGE) + data_queue_part_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_FOCUS_SET) + data_queue_part_lookup(pc, name, &(et->id)); + else if (ep->action == EDJE_ACTION_TYPE_FOCUS_OBJECT) + data_queue_part_lookup(pc, name, &(et->id)); + else + { + ERR("parse error %s:%i. target may only be used after action", + file_in, line - 1); + exit(-1); + } + free(name); + } +} + +/** + @page edcref + @property + after + @parameters + [after] + @effect + Specifies a program to run after the current program completes. The + source and signal parameters of a program run as an "after" are ignored. + Multiple "after" statements can be specified per program. + @endproperty +*/ +static void +st_collections_group_programs_program_after(void) +{ + Edje_Part_Collection *pc; + Edje_Program *ep; + + check_arg_count(1); + + pc = eina_list_data_get(eina_list_last(edje_collections)); + ep = current_program; + { + Edje_Program_After *pa; + char *name; + + name = parse_str(0); + + pa = mem_alloc(SZ(Edje_Program_After)); + pa->id = -1; + ep->after = eina_list_append(ep->after, pa); + + data_queue_program_lookup(pc, name, &(pa->id)); + free(name); + } +} + +/** + @page edcref + @property + api + @parameters + [name] [description] + @effect + Specifies a hint to let applications (or IDE's) know how to bind + things. The parameter name should contain the name of the function that + the application should use, and description describes how it should + be used. + @endproperty +*/ +static void +st_collections_group_programs_program_api(void) +{ + check_min_arg_count(1); + + current_program->api.name = parse_str(0); + + if (is_param(1)) + { + check_arg_count(2); + current_program->api.description = parse_str(1); + } +} + +static void +st_collections_group_parts_part_api(void) +{ + check_min_arg_count(1); + + current_part->api.name = parse_str(0); + if (is_param(1)) + { + check_arg_count(2); + current_part->api.description = parse_str(1); + } +} + +static void +ob_collections_group_programs_program_script(void) +{ + Edje_Part_Collection *pc; + Code *cd; + + pc = eina_list_data_get(eina_list_last(edje_collections)); + cd = eina_list_data_get(eina_list_last(codes)); + + if (!is_verbatim()) track_verbatim(1); + else + { + Eina_Bool empty = EINA_TRUE; + char *s; + int i, len; + + s = get_verbatim(); + if (s) + { + Code_Program *cp; + + /* FIXME: Need to store the script somewhere to be restored when using edje_edit API */ + cp = mem_alloc(SZ(Code_Program)); + cp->l1 = get_verbatim_line1(); + cp->l2 = get_verbatim_line2(); + cp->script = s; + cp->original = strdup(s); + if (cd->shared && cd->is_lua) + { + ERR("parse error %s:%i. You're trying to mix Embryo and Lua scripting in the same group", + file_in, line - 1); + exit(-1); + } + cd->is_lua = 0; + + len = strlen(cp->script); + for (i = 0; i < len; i++) + { + if (((cp->script[i] > 'a') && (cp->script[i] < 'z')) || + ((cp->script[i] > 'A') && (cp->script[i] < 'Z')) || + ((cp->script[i] > '0') && (cp->script[i] < '9'))) + empty = EINA_FALSE; + } + + if (!empty) + { + cd->programs = eina_list_append(cd->programs, cp); + data_queue_anonymous_lookup(pc, current_program, &(cp->id)); + current_program->action = EDJE_ACTION_TYPE_SCRIPT; + } + else + { + data_queue_anonymous_lookup(pc, current_program, NULL); + free(cp); + cp = NULL; + } + + set_verbatim(NULL, 0, 0); + } + } +} +/** + @page edcref +
+*/ diff --git a/src/bin/edje_cc_mem.c b/src/bin/edje_cc_mem.c new file mode 100644 index 0000000..e1fa239 --- /dev/null +++ b/src/bin/edje_cc_mem.c @@ -0,0 +1,34 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include "edje_cc.h" + +void * +mem_alloc(size_t size) +{ + void *mem; + + mem = calloc(1, size); + if (mem) return mem; + ERR("%s:%i memory allocation of %zu bytes failed. %s", + file_in, line, size, strerror(errno)); + exit(-1); + return NULL; +} + +char * +mem_strdup(const char *s) +{ + void *str; + + str = strdup(s); + if (str) return str; + ERR("%s:%i memory allocation of %zu bytes failed. %s. string being duplicated: \"%s\"", + file_in, line, strlen(s) + 1, strerror(errno), s); + exit(-1); + return NULL; +} diff --git a/src/bin/edje_cc_out.c b/src/bin/edje_cc_out.c new file mode 100644 index 0000000..041bcf7 --- /dev/null +++ b/src/bin/edje_cc_out.c @@ -0,0 +1,2583 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_ALLOCA_H +# include +#elif !defined alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# elif !defined HAVE_ALLOCA +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +#include +#include +#include +#include + +#include + +#include "edje_cc.h" +#include "edje_convert.h" +#include "edje_multisense_convert.h" + +#include +#include + +typedef struct _External_Lookup External_Lookup; +typedef struct _Part_Lookup Part_Lookup; +typedef struct _Program_Lookup Program_Lookup; +typedef struct _Group_Lookup Group_Lookup; +typedef struct _Image_Lookup Image_Lookup; +typedef struct _Slave_Lookup Slave_Lookup; +typedef struct _Code_Lookup Code_Lookup; + + +struct _External_Lookup +{ + char *name; +}; + +struct _Part_Lookup +{ + Edje_Part_Collection *pc; + char *name; + int *dest; +}; + +struct _Program_Lookup +{ + Edje_Part_Collection *pc; + + union + { + char *name; + Edje_Program *ep; + } u; + + int *dest; + + Eina_Bool anonymous : 1; +}; + +struct _Group_Lookup +{ + char *name; + Edje_Part *part; +}; + +struct _String_Lookup +{ + char *name; + int *dest; +}; + +struct _Image_Lookup +{ + char *name; + int *dest; + Eina_Bool *set; +}; + +struct _Slave_Lookup +{ + int *master; + int *slave; +}; + +struct _Code_Lookup +{ + char *ptr; + int len; + int val; + Eina_Bool set; +}; + +typedef struct _Script_Lua_Writer Script_Lua_Writer; + +struct _Script_Lua_Writer +{ + char *buf; + int size; +}; + +typedef struct _Script_Write Script_Write;; +typedef struct _Head_Write Head_Write; +typedef struct _Fonts_Write Fonts_Write; +typedef struct _Image_Write Image_Write; +typedef struct _Sound_Write Sound_Write; +typedef struct _Group_Write Group_Write; + +struct _Script_Write +{ + Eet_File *ef; + Code *cd; + int i; + Ecore_Exe *exe; + int tmpn_fd, tmpo_fd; + char tmpn[PATH_MAX]; + char tmpo[PATH_MAX]; + char *errstr; +}; + +struct _Head_Write +{ + Eet_File *ef; + char *errstr; +}; + +struct _Fonts_Write +{ + Eet_File *ef; + Font *fn; + char *errstr; +}; + +struct _Image_Write +{ + Eet_File *ef; + Edje_Image_Directory_Entry *img; + Evas_Object *im; + int w, h; + int alpha; + unsigned int *data; + char *path; + char *errstr; +}; + +struct _Sound_Write +{ + Eet_File *ef; + Edje_Sound_Sample *sample; + int i; +}; + +struct _Group_Write +{ + Eet_File *ef; + Edje_Part_Collection *pc; + char *errstr; +}; + +static int pending_threads = 0; + +static void data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)); + +Edje_File *edje_file = NULL; +Eina_List *edje_collections = NULL; +Eina_List *externals = NULL; +Eina_List *fonts = NULL; +Eina_List *codes = NULL; +Eina_List *code_lookups = NULL; +Eina_List *aliases = NULL; + +static Eet_Data_Descriptor *edd_edje_file = NULL; +static Eet_Data_Descriptor *edd_edje_part_collection = NULL; + +static Eina_List *part_lookups = NULL; +static Eina_List *program_lookups = NULL; +static Eina_List *group_lookups = NULL; +static Eina_List *image_lookups = NULL; +static Eina_List *part_slave_lookups = NULL; +static Eina_List *image_slave_lookups= NULL; + +void +error_and_abort(Eet_File *ef __UNUSED__, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + eina_log_vprint(_edje_cc_log_dom, EINA_LOG_LEVEL_CRITICAL, + "unknown", "unknown", 0, fmt, ap); + va_end(ap); + unlink(file_out); + exit(-1); +} + +void +data_setup(void) +{ + edd_edje_file = _edje_edd_edje_file; + edd_edje_part_collection = _edje_edd_edje_part_collection; +} + +static void +check_image_part_desc(Edje_Part_Collection *pc, Edje_Part *ep, + Edje_Part_Description_Image *epd, Eet_File *ef) +{ + unsigned int i; + + /* FIXME: This check sounds like not a useful one */ + if (epd->image.id == -1 && epd->common.visible) + WRN("Collection %s(%i): image attributes missing for " + "part \"%s\", description \"%s\" %f", + pc->part, pc->id, ep->name, epd->common.state.name, epd->common.state.value); + + for (i = 0; i < epd->image.tweens_count; ++i) + { + if (epd->image.tweens[i]->id == -1) + error_and_abort(ef, "Collection %i: tween image id missing for " + "part \"%s\", description \"%s\" %f", + pc->id, ep->name, epd->common.state.name, epd->common.state.value); + } +} + +static void +check_packed_items(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) +{ + unsigned int i; + + for (i = 0; i < ep->items_count; ++i) + { + if (ep->items[i]->type == EDJE_PART_TYPE_GROUP && !ep->items[i]->source) + error_and_abort(ef, "Collection %i: missing source on packed item " + "of type GROUP in part \"%s\"", + pc->id, ep->name); + if (ep->type == EDJE_PART_TYPE_TABLE && (ep->items[i]->col < 0 || ep->items[i]->row < 0)) + error_and_abort(ef, "Collection %i: missing col/row on packed item " + "for part \"%s\" of type TABLE", + pc->id, ep->name); + } +} + +static void +check_nameless_state(Edje_Part_Collection *pc, Edje_Part *ep, Edje_Part_Description_Common *ed, Eet_File *ef) +{ + if (!ed->state.name) + error_and_abort(ef, "Collection %i: description with state missing on part \"%s\"", + pc->id, ep->name); +} + +static void +check_part(Edje_Part_Collection *pc, Edje_Part *ep, Eet_File *ef) +{ + unsigned int i; + /* FIXME: check image set and sort them. */ + if (!ep->default_desc) + error_and_abort(ef, "Collection %i: default description missing " + "for part \"%s\"", pc->id, ep->name); + + for (i = 0; i < ep->other.desc_count; ++i) + check_nameless_state(pc, ep, ep->other.desc[i], ef); + + if (ep->type == EDJE_PART_TYPE_IMAGE) + { + check_image_part_desc(pc, ep, (Edje_Part_Description_Image*) ep->default_desc, ef); + + for (i = 0; i < ep->other.desc_count; ++i) + check_image_part_desc (pc, ep, (Edje_Part_Description_Image*) ep->other.desc[i], ef); + } + else if ((ep->type == EDJE_PART_TYPE_BOX) || + (ep->type == EDJE_PART_TYPE_TABLE)) + check_packed_items(pc, ep, ef); + + /* FIXME: When mask are supported remove this check */ + if (ep->clip_to_id != -1 && + pc->parts[ep->clip_to_id]->type != EDJE_PART_TYPE_RECTANGLE) + error_and_abort(ef, "Collection %i: clip_to point to a non RECT part '%s' !", + pc->id, pc->parts[ep->clip_to_id]->name); +} + +static void +check_program(Edje_Part_Collection *pc, Edje_Program *ep, Eet_File *ef) +{ + switch (ep->action) + { + case EDJE_ACTION_TYPE_STATE_SET: + case EDJE_ACTION_TYPE_ACTION_STOP: + case EDJE_ACTION_TYPE_DRAG_VAL_SET: + case EDJE_ACTION_TYPE_DRAG_VAL_STEP: + case EDJE_ACTION_TYPE_DRAG_VAL_PAGE: + if (!ep->targets) + error_and_abort(ef, "Collection %i: target missing in program " + "\"%s\"", pc->id, ep->name); + break; + default: + break; + } +} + +static void +data_thread_head(void *data, Ecore_Thread *thread __UNUSED__) +{ + Head_Write *hw = data; + int bytes = 0; + char buf[PATH_MAX]; + + if (edje_file) + { + if (edje_file->collection) + { + Edje_Part_Collection_Directory_Entry *ce; + + EINA_LIST_FREE(aliases, ce) + { + Edje_Part_Collection_Directory_Entry *sce; + Eina_Iterator *it; + + if (!ce->entry) + { + snprintf(buf, sizeof(buf), + "Collection %i: name missing.", ce->id); + hw->errstr = strdup(buf); + return; + } + + it = eina_hash_iterator_data_new(edje_file->collection); + + EINA_ITERATOR_FOREACH(it, sce) + { + if (ce->id == sce->id) + { + memcpy(&ce->count, &sce->count, sizeof (ce->count)); + break; + } + } + + if (!sce) + { + snprintf(buf, sizeof(buf), + "Collection %s (%i) can't find an correct alias.", + ce->entry, ce->id); + hw->errstr = strdup(buf); + return; + } + eina_iterator_free(it); + eina_hash_direct_add(edje_file->collection, ce->entry, ce); + } + } + bytes = eet_data_write(hw->ef, edd_edje_file, "edje/file", edje_file, + compress_mode); + if (bytes <= 0) + { + snprintf(buf, sizeof(buf), + "Unable to write \"edje_file\" entry to \"%s\"", + file_out); + hw->errstr = strdup(buf); + return; + } + } + + INF("Wrote %9i bytes (%4iKb) for \"edje_file\" header", + bytes, (bytes + 512) / 1024); +} + +static void +data_thread_head_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Head_Write *hw = data; + + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (hw->errstr) + { + error_and_abort(hw->ef, hw->errstr); + free(hw->errstr); + } + free(hw); +} + +static void +data_write_header(Eet_File *ef) +{ + Head_Write *hw; + + hw = calloc(1, sizeof(Head_Write)); + hw->ef = ef; + pending_threads++; + if (threads) + ecore_thread_run(data_thread_head, data_thread_head_end, NULL, hw); + else + { + data_thread_head(hw, NULL); + data_thread_head_end(hw, NULL); + } +} + +static void +data_thread_fonts(void *data, Ecore_Thread *thread __UNUSED__) +{ + Fonts_Write *fc = data; + Eina_List *ll; + Eina_File *f = NULL; + void *m = NULL; + int bytes = 0; + char buf[PATH_MAX]; + char buf2[PATH_MAX]; + + f = eina_file_open(fc->fn->file, 0); + if (f) + { + using_file(fc->fn->file); + m = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); + } + else + { + char *dat; + + EINA_LIST_FOREACH(fnt_dirs, ll, dat) + { + snprintf(buf, sizeof(buf), "%s/%s", dat, fc->fn->file); + f = eina_file_open(buf, 0); + if (f) + { + using_file(buf); + m = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); + if (m) break; + eina_file_close(f); + f = NULL; + } + } + } + if (!m) + { + if (f) eina_file_close(f); + snprintf(buf, sizeof(buf), + "Unable to load font part \"%s\" entry to %s", + fc->fn->file, file_out); + fc->errstr = strdup(buf); + return; + } + + snprintf(buf, sizeof(buf), "edje/fonts/%s", fc->fn->name); + bytes = eet_write(fc->ef, buf, m, eina_file_size_get(f), compress_mode); + + if ((bytes <= 0) || eina_file_map_faulted(f, m)) + { + eina_file_map_free(f, m); + eina_file_close(f); + snprintf(buf2, sizeof(buf2), + "Unable to write font part \"%s\" as \"%s\" " + "part entry to %s", fc->fn->file, buf, file_out); + fc->errstr = strdup(buf2); + return; + } + + INF("Wrote %9i bytes (%4iKb) for \"%s\" font entry \"%s\" compress: [real: %2.1f%%]", + bytes, (bytes + 512) / 1024, buf, fc->fn->file, + 100 - (100 * (double)bytes) / ((double)(eina_file_size_get(f))) + ); + eina_file_map_free(f, m); + eina_file_close(f); +} + +static void +data_thread_fonts_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Fonts_Write *fc = data; + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (fc->errstr) + { + error_and_abort(fc->ef, fc->errstr); + free(fc->errstr); + } + free(fc); +} + +static void +data_write_fonts(Eet_File *ef, int *font_num) +{ + Eina_Iterator *it; + Font *fn; + + if (!edje_file->fonts) return; + + it = eina_hash_iterator_data_new(edje_file->fonts); + EINA_ITERATOR_FOREACH(it, fn) + { + Fonts_Write *fc; + + fc = calloc(1, sizeof(Fonts_Write)); + if (!fc) continue; + fc->ef = ef; + fc->fn = fn; + pending_threads++; + if (threads) + ecore_thread_run(data_thread_fonts, data_thread_fonts_end, NULL, fc); + else + { + data_thread_fonts(fc, NULL); + data_thread_fonts_end(fc, NULL); + } + *font_num += 1; + } + eina_iterator_free(it); +} + +static void +error_and_abort_image_load_error(Eet_File *ef, const char *file, int error) +{ + const char *errmsg = evas_load_error_str(error); + char hint[1024] = ""; + + if (error == EVAS_LOAD_ERROR_DOES_NOT_EXIST) + { + snprintf + (hint, sizeof(hint), + " Check if path to file \"%s\" is correct " + "(both directory and file name).", + file); + } + else if (error == EVAS_LOAD_ERROR_CORRUPT_FILE) + { + snprintf + (hint, sizeof(hint), + " Check if file \"%s\" is consistent.", + file); + } + else if (error == EVAS_LOAD_ERROR_UNKNOWN_FORMAT) + { + const char *ext = strrchr(file, '.'); + const char **itr, *known_loaders[] = { + /* list from evas_image_load.c */ + "png", + "jpg", + "jpeg", + "jfif", + "eet", + "edj", + "eap", + "edb", + "xpm", + "tiff", + "tif", + "svg", + "svgz", + "gif", + "pbm", + "pgm", + "ppm", + "pnm", + "bmp", + "ico", + "tga", + NULL + }; + + if (!ext) + { + snprintf + (hint, sizeof(hint), + " File \"%s\" does not have an extension, " + "maybe it should?", + file); + goto show_err; + } + + ext++; + for (itr = known_loaders; *itr; itr++) + { + if (strcasecmp(ext, *itr) == 0) + { + snprintf + (hint, sizeof(hint), + " Check if Evas was compiled with %s module enabled and " + "all required dependencies exist.", + ext); + goto show_err; + } + } + + snprintf(hint, sizeof(hint), + " Check if Evas supports loading files of type \"%s\" (%s) " + "and this module was compiled and all its dependencies exist.", + ext, file); + } + show_err: + error_and_abort + (ef, "Unable to load image \"%s\" used by file \"%s\": %s.%s", + file, file_out, errmsg, hint); +} + +static void +data_thread_image(void *data, Ecore_Thread *thread __UNUSED__) +{ + Image_Write *iw = data; + char buf[PATH_MAX], buf2[PATH_MAX]; + unsigned int *start, *end; + Eina_Bool opaque = EINA_TRUE; + int bytes = 0; + + if ((iw->data) && (iw->w > 0) && (iw->h > 0)) + { + int mode, qual; + + snprintf(buf, sizeof(buf), "edje/images/%i", iw->img->id); + qual = 80; + if ((iw->img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) && + (iw->img->source_param == 0)) + mode = 0; /* RAW */ + else if ((iw->img->source_type == EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT) && + (iw->img->source_param == 1)) + mode = 1; /* COMPRESS */ + else + mode = 2; /* LOSSY */ + if ((mode == 0) && (no_raw)) + { + mode = 1; /* promote compression */ + iw->img->source_param = 95; + } + if ((mode == 2) && (no_lossy)) mode = 1; /* demote compression */ + if ((mode == 1) && (no_comp)) + { + if (no_lossy) mode = 0; /* demote compression */ + else if (no_raw) + { + iw->img->source_param = 90; + mode = 2; /* no choice. lossy */ + } + } + if (mode == 2) + { + qual = iw->img->source_param; + if (qual < min_quality) qual = min_quality; + if (qual > max_quality) qual = max_quality; + } + if (iw->alpha) + { + start = (unsigned int *) iw->data; + end = start + (iw->w * iw->h); + while (start < end) + { + if ((*start & 0xff000000) != 0xff000000) + { + opaque = EINA_FALSE; + break; + } + start++; + } + if (opaque) iw->alpha = 0; + } + if (mode == 0) + bytes = eet_data_image_write(iw->ef, buf, + iw->data, iw->w, iw->h, + iw->alpha, + 0, 0, 0); + else if (mode == 1) + bytes = eet_data_image_write(iw->ef, buf, + iw->data, iw->w, iw->h, + iw->alpha, + compress_mode, + 0, 0); + else if (mode == 2) + bytes = eet_data_image_write(iw->ef, buf, + iw->data, iw->w, iw->h, + iw->alpha, + 0, qual, 1); + if (bytes <= 0) + { + snprintf(buf2, sizeof(buf2), + "Unable to write image part " + "\"%s\" as \"%s\" part entry to " + "%s", iw->img->entry, buf, file_out); + iw->errstr = strdup(buf2); + return; + } + } + else + { + snprintf(buf, sizeof(buf), "edje/images/%i", iw->img->id); + snprintf(buf2, sizeof(buf2), + "Unable to load image part " + "\"%s\" as \"%s\" part entry to " + "%s", iw->img->entry, buf, file_out); + iw->errstr = strdup(buf2); + return; + } + + if (eina_log_domain_level_check(_edje_cc_log_dom, EINA_LOG_LEVEL_INFO)) + { + struct stat st; + + if (!iw->path || (stat(iw->path, &st))) st.st_size = 0; + INF("Wrote %9i bytes (%4iKb) for \"%s\" image entry \"%s\" compress: [raw: %2.1f%%] [real: %2.1f%%]", + bytes, (bytes + 512) / 1024, buf, iw->img->entry, + 100 - (100 * (double)bytes) / ((double)(iw->w * iw->h * 4)), + 100 - (100 * (double)bytes) / ((double)(st.st_size)) + ); + } +} + +static void +data_thread_image_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Image_Write *iw = data; + + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (iw->errstr) + { + error_and_abort(iw->ef, iw->errstr); + free(iw->errstr); + } + if (iw->path) free(iw->path); + evas_object_del(iw->im); + free(iw); +} + +static void +data_image_preload_done(void *data, Evas *e __UNUSED__, Evas_Object *o, void *event_info __UNUSED__) +{ + Image_Write *iw = data; + + evas_object_image_size_get(o, &iw->w, &iw->h); + iw->alpha = evas_object_image_alpha_get(o); + iw->data = evas_object_image_data_get(o, 0); + if (threads) + ecore_thread_run(data_thread_image, data_thread_image_end, NULL, iw); + else + { + data_thread_image(iw, NULL); + data_thread_image_end(iw, NULL); + } +} + +static void +data_write_images(Eet_File *ef, int *image_num) +{ + int i; + Ecore_Evas *ee; + Evas *evas; + + if (!((edje_file) && (edje_file->image_dir))) return; + + ecore_evas_init(); + ee = ecore_evas_buffer_new(1, 1); + if (!ee) + error_and_abort(ef, "Cannot create buffer engine canvas for image load."); + evas = ecore_evas_get(ee); + + for (i = 0; i < (int)edje_file->image_dir->entries_count; i++) + { + Edje_Image_Directory_Entry *img; + + img = &edje_file->image_dir->entries[i]; + if ((img->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) || + (img->entry == NULL)) + { + } + else + { + Evas_Object *im; + Eina_List *ll; + char *s; + int load_err = EVAS_LOAD_ERROR_NONE; + Image_Write *iw; + + iw = calloc(1, sizeof(Image_Write)); + iw->ef = ef; + iw->img = img; + iw->im = im = evas_object_image_add(evas); + if (threads) + evas_object_event_callback_add(im, + EVAS_CALLBACK_IMAGE_PRELOADED, + data_image_preload_done, + iw); + EINA_LIST_FOREACH(img_dirs, ll, s) + { + char buf[PATH_MAX]; + + snprintf(buf, sizeof(buf), "%s/%s", s, img->entry); + evas_object_image_file_set(im, buf, NULL); + load_err = evas_object_image_load_error_get(im); + if (load_err == EVAS_LOAD_ERROR_NONE) + { + *image_num += 1; + iw->path = strdup(buf); + pending_threads++; + if (threads) + evas_object_image_preload(im, 0); + using_file(buf); + if (!threads) + data_image_preload_done(iw, evas, im, NULL); + break; + } + } + if (load_err != EVAS_LOAD_ERROR_NONE) + { + evas_object_image_file_set(im, img->entry, NULL); + load_err = evas_object_image_load_error_get(im); + if (load_err == EVAS_LOAD_ERROR_NONE) + { + *image_num += 1; + iw->path = strdup(img->entry); + pending_threads++; + if (threads) + evas_object_image_preload(im, 0); + using_file(img->entry); + if (!threads) + data_image_preload_done(iw, evas, im, NULL); + } + else + error_and_abort_image_load_error + (ef, img->entry, load_err); + } + } + } +} + +static void +data_thread_sounds(void *data, Ecore_Thread *thread __UNUSED__) +{ + Sound_Write *sw = data; + Eina_List *ll; +#ifdef HAVE_LIBSNDFILE + Edje_Sound_Encode *enc_info; +#endif + char *dir_path = NULL; + char snd_path[PATH_MAX]; + char sndid_str[15]; + Eina_File *f = NULL; + void *m = NULL; + int bytes = 0; + + // Search the Sound file in all the -sd ( sound directory ) + EINA_LIST_FOREACH(snd_dirs, ll, dir_path) + { + snprintf((char *)snd_path, sizeof(snd_path), "%s/%s", dir_path, + sw->sample->snd_src); + f = eina_file_open(snd_path, 0); + if (f) break; + } + if (!f) + { + snprintf((char *)snd_path, sizeof(snd_path), "%s", + sw->sample->snd_src); + f = eina_file_open(snd_path, 0); + } +#ifdef HAVE_LIBSNDFILE + if (f) eina_file_close(f); + enc_info = _edje_multisense_encode(snd_path, sw->sample, + sw->sample->quality); + f = eina_file_open(enc_info->file, 0); + if (f) using_file(enc_info->file); +#else + if (f) using_file(snd_path); +#endif + if (!f) + { + ERR("Unable to load sound data of: %s", sw->sample->name); + exit(-1); + } + + snprintf(sndid_str, sizeof(sndid_str), "edje/sounds/%i", sw->sample->id); + m = eina_file_map_all(f, EINA_FILE_WILLNEED); + if (m) + { + bytes = eet_write(sw->ef, sndid_str, m, eina_file_size_get(f), + EET_COMPRESSION_NONE); + if (eina_file_map_faulted(f, m)) + { + ERR("File access error when reading '%s'", + eina_file_filename_get(f)); + exit(-1); + } + eina_file_map_free(f, m); + } + eina_file_close(f); + +#ifdef HAVE_LIBSNDFILE + //If encoded temporary file, delete it. + if (enc_info->encoded) unlink(enc_info->file); +#endif +#ifdef HAVE_LIBSNDFILE + INF("Wrote %9i bytes (%4iKb) for \"%s\" %s sound entry \"%s\"", + bytes, (bytes + 512) / 1024, + sndid_str, enc_info->comp_type, sw->sample->name); +#else + INF("Wrote %9i bytes (%4iKb) for \"%s\" %s sound entry \"%s\"", + bytes, (bytes + 512) / 1024, + sndid_str, "RAW PCM", sw->sample->name); +#endif + +#ifdef HAVE_LIBSNDFILE + if ((enc_info->file) && (!enc_info->encoded)) + eina_stringshare_del(enc_info->file); + if (enc_info) free(enc_info); + enc_info = NULL; +#endif +} + +static void +data_thread_sounds_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Sound_Write *sw = data; + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + free(sw); +} + +static void +data_write_sounds(Eet_File *ef, int *sound_num) +{ + if ((edje_file) && (edje_file->sound_dir)) + { + int i; + + for (i = 0; i < (int)edje_file->sound_dir->samples_count; i++) + { + Sound_Write *sw; + + sw = calloc(1, sizeof(Sound_Write)); + if (!sw) continue; + sw->ef = ef; + sw->sample = &edje_file->sound_dir->samples[i]; + sw->i = i; + *sound_num += 1; + pending_threads++; + if (threads) + ecore_thread_run(data_thread_sounds, data_thread_sounds_end, NULL, sw); + else + { + data_thread_sounds(sw, NULL); + data_thread_sounds_end(sw, NULL); + } + } + } +} + +static void +check_groups(Eet_File *ef) +{ + Edje_Part_Collection *pc; + Eina_List *l; + + /* sanity checks for parts and programs */ + EINA_LIST_FOREACH(edje_collections, l, pc) + { + unsigned int i; + + for (i = 0; i < pc->parts_count; ++i) + check_part(pc, pc->parts[i], ef); + +#define CHECK_PROGRAM(Type, Pc, It) \ + for (It = 0; It < Pc->programs.Type ## _count; ++It) \ + check_program(Pc, Pc->programs.Type[i], ef); \ + + CHECK_PROGRAM(fnmatch, pc, i); + CHECK_PROGRAM(strcmp, pc, i); + CHECK_PROGRAM(strncmp, pc, i); + CHECK_PROGRAM(strrncmp, pc, i); + CHECK_PROGRAM(nocmp, pc, i); + } +} + +static void +data_thread_group(void *data, Ecore_Thread *thread __UNUSED__) +{ + Group_Write *gw = data; + int bytes; + char buf[PATH_MAX]; + char buf2[PATH_MAX]; + + snprintf(buf, sizeof(buf), "edje/collections/%i", gw->pc->id); + bytes = eet_data_write(gw->ef, edd_edje_part_collection, buf, gw->pc, + compress_mode); + return; + if (bytes <= 0) + { + snprintf(buf2, sizeof(buf2), + "Unable to write \"%s\" part entry to %s", + buf, file_out); + gw->errstr = strdup(buf2); + return; + } + + INF("Wrote %9i bytes (%4iKb) for \"%s\" aka \"%s\" collection entry", + bytes, (bytes + 512) / 1024, buf, gw->pc->part); +} + +static void +data_thread_group_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Group_Write *gw = data; + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (gw->errstr) + { + error_and_abort(gw->ef, gw->errstr); + free(gw->errstr); + } + free(gw); +} + +static void +data_write_groups(Eet_File *ef, int *collection_num) +{ + Eina_List *l; + Edje_Part_Collection *pc; + + EINA_LIST_FOREACH(edje_collections, l, pc) + { + Group_Write *gw; + + gw = calloc(1, sizeof(Group_Write)); + if (!gw) + { + error_and_abort(ef, "Cannot allocate memory for group writer"); + return; + } + gw->ef = ef; + gw->pc = pc; + pending_threads++; + if (threads) + ecore_thread_run(data_thread_group, data_thread_group_end, NULL, gw); + else + { + data_thread_group(gw, NULL); + data_thread_group_end(gw, NULL); + } + *collection_num += 1; + } +} + +static void +create_script_file(Eet_File *ef, const char *filename, const Code *cd, int fd) +{ + FILE *f = fdopen(fd, "wb"); + if (!f) + error_and_abort(ef, "Unable to open temp file \"%s\" for script " + "compilation.", filename); + + Eina_List *ll; + Code_Program *cp; + + fprintf(f, "#include \n"); + int ln = 2; + + if (cd->shared) + { + while (ln < (cd->l1 - 1)) + { + fprintf(f, " \n"); + ln++; + } + { + char *sp; + int hash = 0; + int newlined = 0; + + for (sp = cd->shared; *sp; sp++) + { + if ((sp[0] == '#') && (newlined)) + { + hash = 1; + } + newlined = 0; + if (sp[0] == '\n') newlined = 1; + if (!hash) fputc(sp[0], f); + else if (sp[0] == '\n') hash = 0; + } + fputc('\n', f); + } + ln += cd->l2 - cd->l1 + 1; + } + EINA_LIST_FOREACH(cd->programs, ll, cp) + { + if (cp->script) + { + while (ln < (cp->l1 - 1)) + { + fprintf(f, " \n"); + ln++; + } + /* FIXME: this prototype needs to be */ + /* formalised and set in stone */ + fprintf(f, "public _p%i(sig[], src[]) {", cp->id); + { + char *sp; + int hash = 0; + int newlined = 0; + + for (sp = cp->script; *sp; sp++) + { + if ((sp[0] == '#') && (newlined)) + { + hash = 1; + } + newlined = 0; + if (sp[0] == '\n') newlined = 1; + if (!hash) fputc(sp[0], f); + else if (sp[0] == '\n') hash = 0; + } + } + fprintf(f, "}\n"); + ln += cp->l2 - cp->l1 + 1; + } + } + + fclose(f); +} + +static void +data_thread_script(void *data, Ecore_Thread *thread __UNUSED__) +{ + Script_Write *sc = data; + FILE *f; + int size; + char buf[PATH_MAX]; + + f = fdopen(sc->tmpo_fd, "rb"); + if (!f) + { + snprintf(buf, sizeof(buf), + "Unable to open script object \"%s\" for reading.", + sc->tmpo); + sc->errstr = strdup(buf); + return; + } + + fseek(f, 0, SEEK_END); + size = ftell(f); + rewind(f); + + if (size > 0) + { + void *dat = malloc(size); + + if (dat) + { + if (fread(dat, size, 1, f) != 1) + { + snprintf(buf, sizeof(buf), + "Unable to read all of script object \"%s\"", + sc->tmpo); + sc->errstr = strdup(buf); + return; + } + snprintf(buf, sizeof(buf), "edje/scripts/embryo/compiled/%i", + sc->i); + eet_write(sc->ef, buf, dat, size, compress_mode); + free(dat); + } + else + { + snprintf(buf, sizeof(buf), + "Alloc failed for %lu bytes", (unsigned long)size); + sc->errstr = strdup(buf); + return; + } + } + fclose(f); + + if (!no_save) + { + Eina_List *ll; + Code_Program *cp; + + if (sc->cd->original) + { + snprintf(buf, PATH_MAX, "edje/scripts/embryo/source/%i", sc->i); + eet_write(sc->ef, buf, sc->cd->original, + strlen(sc->cd->original) + 1, compress_mode); + } + EINA_LIST_FOREACH(sc->cd->programs, ll, cp) + { + if (!cp->original) continue; + snprintf(buf, PATH_MAX, "edje/scripts/embryo/source/%i/%i", + sc->i, cp->id); + eet_write(sc->ef, buf, cp->original, + strlen(cp->original) + 1, compress_mode); + } + } + + unlink(sc->tmpn); + unlink(sc->tmpo); + close(sc->tmpn_fd); + close(sc->tmpo_fd); +} + +static void +data_thread_script_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Script_Write *sc = data; + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (sc->errstr) + { + error_and_abort(sc->ef, sc->errstr); + free(sc->errstr); + } + free(sc); +} + +static Eina_Bool +data_scripts_exe_del_cb(void *data __UNUSED__, int evtype __UNUSED__, void *evinfo) +{ + Script_Write *sc = data; + Ecore_Exe_Event_Del *ev = evinfo; + + if (!ev->exe) return ECORE_CALLBACK_RENEW; + if (ecore_exe_data_get(ev->exe) != sc) return ECORE_CALLBACK_RENEW; + if (ev->exit_code != 0) + { + error_and_abort(sc->ef, "Compiling script code not clean."); + return ECORE_CALLBACK_CANCEL; + } + if (threads) + { + pending_threads++; + ecore_thread_run(data_thread_script, data_thread_script_end, NULL, sc); + } + else + { + pending_threads++; + data_thread_script(sc, NULL); + data_thread_script_end(sc, NULL); + } + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + return ECORE_CALLBACK_CANCEL; +} + +static void +data_write_scripts(Eet_File *ef) +{ + Eina_List *l; + int i; + + if (!tmp_dir) +#ifdef HAVE_EVIL + tmp_dir = (char *)evil_tmpdir_get(); +#else + tmp_dir = "/tmp"; +#endif + + for (i = 0, l = codes; l; l = eina_list_next(l), i++) + { + Code *cd = eina_list_data_get(l); + Script_Write *sc; + char buf[PATH_MAX]; + + if (cd->is_lua) + continue; + if ((!cd->shared) && (!cd->programs)) + continue; + sc = calloc(1, sizeof(Script_Write)); + sc->ef = ef; + sc->cd = cd; + sc->i = i; + snprintf(sc->tmpn, PATH_MAX, "%s/edje_cc.sma-tmp-XXXXXX", tmp_dir); + sc->tmpn_fd = mkstemp(sc->tmpn); + if (sc->tmpn_fd < 0) + error_and_abort(ef, "Unable to open temp file \"%s\" for script " + "compilation.", sc->tmpn); + snprintf(sc->tmpo, PATH_MAX, "%s/edje_cc.amx-tmp-XXXXXX", tmp_dir); + sc->tmpo_fd = mkstemp(sc->tmpo); + if (sc->tmpo_fd < 0) + { + unlink(sc->tmpn); + error_and_abort(ef, "Unable to open temp file \"%s\" for script " + "compilation.", sc->tmpn); + } + create_script_file(ef, sc->tmpn, cd, sc->tmpn_fd); + snprintf(buf, sizeof(buf), + "%s/embryo_cc -i %s/include -o %s %s", + eina_prefix_bin_get(pfx), + eina_prefix_data_get(pfx), + sc->tmpo, sc->tmpn); + pending_threads++; + sc->exe = ecore_exe_run(buf, sc); + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + data_scripts_exe_del_cb, sc); + } +} + +#ifdef LUA_BINARY +static int +_edje_lua_script_writer(lua_State *L __UNUSED__, const void *chunk_buf, size_t chunk_size, void *_data) +{ + Script_Lua_Writer *data; + void *old; + + data = (Script_Lua_Writer *)_data; + old = data->buf; + data->buf = malloc(data->size + chunk_size); + memcpy(data->buf, old, data->size); + memcpy(&((data->buf)[data->size]), chunk_buf, chunk_size); + if (old) free(old); + data->size += chunk_size; + + return 0; +} +#endif + +void +_edje_lua_error_and_abort(lua_State *L, int err_code, Script_Write *sc) +{ + char buf[PATH_MAX]; + char *err_type; + + switch (err_code) + { + case LUA_ERRRUN: + err_type = "runtime"; + break; + case LUA_ERRSYNTAX: + err_type = "syntax"; + break; + case LUA_ERRMEM: + err_type = "memory allocation"; + break; + case LUA_ERRERR: + err_type = "error handler"; + break; + default: + err_type = "unknown"; + break; + } + snprintf(buf, sizeof(buf), + "Lua %s error: %s", err_type, lua_tostring(L, -1)); + sc->errstr = strdup(buf); +} + +static void +data_thread_lua_script(void *data, Ecore_Thread *thread __UNUSED__) +{ + Script_Write *sc = data; + char buf[PATH_MAX]; + lua_State *L; + int ln = 1; + luaL_Buffer b; + Script_Lua_Writer dat; + Eina_List *ll; + Code_Program *cp; +#ifdef LUA_BINARY + int err_code; +#endif + + L = luaL_newstate(); + if (!L) + { + snprintf(buf, sizeof(buf), + "Lua error: Lua state could not be initialized"); + sc->errstr = strdup(buf); + return; + } + + luaL_buffinit(L, &b); + + dat.buf = NULL; + dat.size = 0; + if (sc->cd->shared) + { + while (ln < (sc->cd->l1 - 1)) + { + luaL_addchar(&b, '\n'); + ln++; + } + luaL_addstring(&b, sc->cd->shared); + ln += sc->cd->l2 - sc->cd->l1; + } + + EINA_LIST_FOREACH(sc->cd->programs, ll, cp) + { + if (cp->script) + { + while (ln < (cp->l1 - 1)) + { + luaL_addchar(&b, '\n'); + ln++; + } + luaL_addstring(&b, "_G["); + lua_pushnumber(L, cp->id); + luaL_addvalue(&b); + luaL_addstring(&b, "] = function (ed, signal, source)"); + luaL_addstring(&b, cp->script); + luaL_addstring(&b, "end\n"); + ln += cp->l2 - cp->l1 + 1; + } + } + luaL_pushresult(&b); +#ifdef LUA_BINARY + if (err_code = luaL_loadstring(L, lua_tostring (L, -1))) + { + _edje_lua_error_and_abort(L, err_code, sc); + return; + } + lua_dump(L, _edje_lua_script_writer, &dat); +#else // LUA_PLAIN_TEXT + dat.buf = (char *)lua_tostring(L, -1); + dat.size = strlen(dat.buf); +#endif + //printf("lua chunk size: %d\n", dat.size); + + /* + * TODO load and test Lua chunk + */ + + /* + if (luaL_loadbuffer(L, globbuf, globbufsize, "edje_lua_script")) + printf("lua load error: %s\n", lua_tostring (L, -1)); + if (lua_pcall(L, 0, 0, 0)) + printf("lua call error: %s\n", lua_tostring (L, -1)); + */ + + snprintf(buf, sizeof(buf), "edje/scripts/lua/%i", sc->i); + if (eet_write(sc->ef, buf, dat.buf, dat.size, compress_mode) <= 0) + { + snprintf(buf, sizeof(buf), + "Unable to write script %i", sc->i); + sc->errstr = strdup(buf); + return; + } +#ifdef LUA_BINARY + free(dat.buf); +#endif + lua_close(L); +} + +static void +data_thread_lua_script_end(void *data, Ecore_Thread *thread __UNUSED__) +{ + Script_Write *sc = data; + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); + if (sc->errstr) + { + error_and_abort(sc->ef, sc->errstr); + free(sc->errstr); + } + free(sc); +} + +static void +data_write_lua_scripts(Eet_File *ef) +{ + Eina_List *l; + int i; + + for (i = 0, l = codes; l; l = eina_list_next(l), i++) + { + Code *cd; + Script_Write *sc; + + cd = (Code *)eina_list_data_get(l); + if (!cd->is_lua) + continue; + if ((!cd->shared) && (!cd->programs)) + continue; + + sc = calloc(1, sizeof(Script_Write)); + sc->ef = ef; + sc->cd = cd; + sc->i = i; + pending_threads++; + if (threads) + ecore_thread_run(data_thread_lua_script, data_thread_lua_script_end, NULL, sc); + else + { + data_thread_lua_script(sc, NULL); + data_thread_lua_script_end(sc, NULL); + } + } +} + +static void +data_thread_source(void *data, Ecore_Thread *thread __UNUSED__) +{ + Eet_File *ef = data; + source_append(ef); +} + +static void +data_thread_source_end(void *data __UNUSED__, Ecore_Thread *thread __UNUSED__) +{ + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); +} + +static void +data_thread_fontmap(void *data, Ecore_Thread *thread __UNUSED__) +{ + Eet_File *ef = data; + source_fontmap_save(ef, fonts); +} + +static void +data_thread_fontmap_end(void *data __UNUSED__, Ecore_Thread *thread __UNUSED__) +{ + pending_threads--; + if (pending_threads <= 0) ecore_main_loop_quit(); +} + +void +data_write(void) +{ + Eet_File *ef; + int image_num = 0; + int sound_num = 0; + int font_num = 0; + int collection_num = 0; + double t; + + if (!edje_file) + { + ERR("No data to put in \"%s\"", file_out); + exit(-1); + } + + ef = eet_open(file_out, EET_FILE_MODE_WRITE); + if (!ef) + { + ERR("Unable to open \"%s\" for writing output", file_out); + exit(-1); + } + + check_groups(ef); + + ecore_thread_max_set(ecore_thread_max_get() * 2); + + pending_threads++; + t = ecore_time_get(); + data_write_header(ef); + + INF("header: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_groups(ef, &collection_num); + INF("groups: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_scripts(ef); + INF("scripts: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_lua_scripts(ef); + INF("lua scripts: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + + pending_threads++; + if (threads) + ecore_thread_run(data_thread_source, data_thread_source_end, NULL, ef); + else + { + data_thread_source(ef, NULL); + data_thread_source_end(ef, NULL); + } + INF("source: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + pending_threads++; + if (threads) + ecore_thread_run(data_thread_fontmap, data_thread_fontmap_end, NULL, ef); + else + { + data_thread_fontmap(ef, NULL); + data_thread_fontmap_end(ef, NULL); + } + INF("fontmap: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_images(ef, &image_num); + INF("images: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_fonts(ef, &font_num); + INF("fonts: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + data_write_sounds(ef, &sound_num); + INF("sounds: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + pending_threads--; + if (pending_threads > 0) ecore_main_loop_begin(); + INF("THREADS: %3.5f", ecore_time_get() - t); t = ecore_time_get(); + + eet_close(ef); + + if (eina_log_domain_level_check(_edje_cc_log_dom, EINA_LOG_LEVEL_INFO)) + { + printf("Summary:\n" + " Wrote %i collections\n" + " Wrote %i images\n" + " Wrote %i sounds\n" + " Wrote %i fonts\n" + , + collection_num, + image_num, + sound_num, + font_num); + } +} + +void +reorder_parts(void) +{ + Edje_Part_Collection *pc; + Edje_Part **parts; + Edje_Part_Parser *ep, *ep2; + Eina_List *l; + + /* sanity checks for parts and programs */ + EINA_LIST_FOREACH(edje_collections, l, pc) + { + unsigned int i, j, k; + Eina_Bool found = EINA_FALSE; + + for (i = 0; i < pc->parts_count; i++) + { + ep = (Edje_Part_Parser *)pc->parts[i]; + if (ep->reorder.insert_before && ep->reorder.insert_after) + ERR("Unable to use together insert_before and insert_after in part \"%s\".", pc->parts[i]->name); + + if (ep->reorder.done) + { + continue; + } + if (ep->reorder.insert_before || ep->reorder.insert_after) + { + found = EINA_FALSE; + for (j = 0; j < pc->parts_count; j++) + { + if (ep->reorder.insert_before && + !strcmp(ep->reorder.insert_before, pc->parts[j]->name)) + { + ep2 = (Edje_Part_Parser *)pc->parts[j]; + if (ep2->reorder.after) + ERR("The part \"%s\" is ambiguous ordered part.", + pc->parts[i]->name); + if (ep2->reorder.linked_prev) + ERR("Unable to insert two or more parts in same part \"%s\".", + pc->parts[j]->name); + k = j - 1; + found = EINA_TRUE; + ep2->reorder.linked_prev += ep->reorder.linked_prev + 1; + ep->reorder.before = (Edje_Part_Parser *)pc->parts[j]; + while (ep2->reorder.before) + { + ep2->reorder.before->reorder.linked_prev = ep2->reorder.linked_prev + 1; + ep2 = ep2->reorder.before; + } + break; + } + else if (ep->reorder.insert_after && + !strcmp(ep->reorder.insert_after, pc->parts[j]->name)) + { + ep2 = (Edje_Part_Parser *)pc->parts[j]; + if (ep2->reorder.before) + ERR("The part \"%s\" is ambiguous ordered part.", pc->parts[i]->name); + if (ep2->reorder.linked_next) + ERR("Unable to insert two or more parts in same part \"%s\".", pc->parts[j]->name); + k = j; + found = EINA_TRUE; + ep2->reorder.linked_next += ep->reorder.linked_next + 1; + ep->reorder.after = (Edje_Part_Parser *)pc->parts[j]; + while (ep2->reorder.after) + { + ep2->reorder.after->reorder.linked_next = ep2->reorder.linked_next + 1; + ep2 = ep2->reorder.after; + } + break; + } + } + if (found) + { + unsigned int amount, linked; + + if (((i > k) && ((i - ep->reorder.linked_prev) <= k)) + || ((i < k) && ((i + ep->reorder.linked_next) >= k))) + ERR("The part order is wrong. It has circular dependency."); + + amount = ep->reorder.linked_prev + ep->reorder.linked_next + 1; + linked = i - ep->reorder.linked_prev; + parts = malloc(amount * sizeof(Edje_Part)); + for (j = 0 ; j < amount ; j++) + { + parts[j] = pc->parts[linked]; + linked++; + } + if (i > k) + { + for (j = i - ep->reorder.linked_prev - 1 ; j >= k ; j--) + { + pc->parts[j + amount] = pc->parts[j]; + pc->parts[j + amount]->id = j + amount; + } + for (j = 0 ; j < amount ; j++) + { + pc->parts[j + k] = parts[j]; + pc->parts[j + k]->id = j + k; + } + } + else if (i < k) + { + for (j = i + ep->reorder.linked_next + 1 ; j <= k ; j++) + { + pc->parts[j - amount] = pc->parts[j]; + pc->parts[j - amount]->id = j - amount; + } + for (j = 0 ; j < amount ; j++) + { + pc->parts[j + k - amount + 1] = parts[j]; + pc->parts[j + k - amount + 1]->id = j + k - amount + 1; + } + i -= amount; + } + ep->reorder.done = EINA_TRUE; + free(parts); + } + } + } + } +} + +void +data_queue_group_lookup(const char *name, Edje_Part *part) +{ + Group_Lookup *gl; + + if (!name || !name[0]) return; + + gl = mem_alloc(SZ(Group_Lookup)); + group_lookups = eina_list_append(group_lookups, gl); + gl->name = mem_strdup(name); + gl->part = part; +} + +//#define NEWPARTLOOKUP 1 +#ifdef NEWPARTLOOKUP +static Eina_Hash *_part_lookups_hash = NULL; +static Eina_Hash *_part_lookups_dest_hash = NULL; +#endif + +void +data_queue_part_lookup(Edje_Part_Collection *pc, const char *name, int *dest) +{ + Part_Lookup *pl = NULL; + Eina_List *l; +#ifdef NEWPARTLOOKUP + char buf[256]; +#endif + +#ifdef NEWPARTLOOKUP + snprintf(buf, sizeof(buf), "%lu-%lu", + (unsigned long)name, (unsigned long)dest); + if (_part_lookups_hash) pl = eina_hash_find(_part_lookups_hash, buf); + if (pl) + { + free(pl->name); + if (name[0]) + pl->name = mem_strdup(name); + else + { + eina_hash_del(_part_lookups_hash, buf, pl); + snprintf(buf, sizeof(buf), "%lu", (unsigned long)dest); + eina_hash_del(_part_lookups_dest_hash, buf, pl); + part_lookups = eina_list_remove(part_lookups, pl); + free(pl); + } + return; + } +#else + EINA_LIST_FOREACH(part_lookups, l, pl) + { + if ((pl->pc == pc) && (pl->dest == dest)) + { + free(pl->name); + if (name[0]) + pl->name = mem_strdup(name); + else + { + part_lookups = eina_list_remove(part_lookups, pl); + free(pl); + } + return; + } + } +#endif + if (!name[0]) return; + + pl = mem_alloc(SZ(Part_Lookup)); + part_lookups = eina_list_prepend(part_lookups, pl); + pl->pc = pc; + pl->name = mem_strdup(name); + pl->dest = dest; +#ifdef NEWPARTLOOKUP + if (!_part_lookups_hash) + _part_lookups_hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(_part_lookups_hash, buf, pl); + + snprintf(buf, sizeof(buf), "%lu", (unsigned long)dest); + if (!_part_lookups_dest_hash) + _part_lookups_dest_hash = eina_hash_string_superfast_new(NULL); + l = eina_hash_find(_part_lookups_dest_hash, buf); + if (l) + { + l = eina_list_append(l, pl); + eina_hash_modify(_part_lookups_dest_hash, buf, l); + } + else + { + l = eina_list_append(l, pl); + eina_hash_add(_part_lookups_dest_hash, buf, l); + } +#endif +} + +void +data_queue_copied_part_lookup(Edje_Part_Collection *pc, int *src, int *dest) +{ + Eina_List *l; + Part_Lookup *pl; +#ifdef NEWPARTLOOKUP + Eina_List *list; + char buf[256]; +#endif + +#ifdef NEWPARTLOOKUP + if (!_part_lookups_dest_hash) return; + snprintf(buf, sizeof(buf), "%lu", (unsigned long)src); + list = eina_hash_find(_part_lookups_dest_hash, buf); + EINA_LIST_FOREACH(list, l, pl) + { + data_queue_part_lookup(pc, pl->name, dest); + } +#else + EINA_LIST_FOREACH(part_lookups, l, pl) + { + if (pl->dest == src) + data_queue_part_lookup(pc, pl->name, dest); + } +#endif +} + +void +data_queue_anonymous_lookup(Edje_Part_Collection *pc, Edje_Program *ep, int *dest) +{ + Eina_List *l, *l2; + Program_Lookup *pl; + + if (!ep) return ; /* FIXME: should we stop compiling ? */ + + EINA_LIST_FOREACH(program_lookups, l, pl) + { + if (pl->u.ep == ep) + { + Code *cd; + Code_Program *cp; + + cd = eina_list_data_get(eina_list_last(codes)); + + EINA_LIST_FOREACH(cd->programs, l2, cp) + { + if (&(cp->id) == pl->dest) + { + cd->programs = eina_list_remove(cd->programs, cp); + free(cp); + cp = NULL; + } + } + program_lookups = eina_list_remove(program_lookups, pl); + free(pl); + } + } + + if (dest) + { + pl = mem_alloc(SZ(Program_Lookup)); + program_lookups = eina_list_append(program_lookups, pl); + pl->pc = pc; + pl->u.ep = ep; + pl->dest = dest; + pl->anonymous = EINA_TRUE; + } +} + +void +data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest) +{ + Eina_List *l; + Program_Lookup *pl; + unsigned int i; + + EINA_LIST_FOREACH(program_lookups, l, pl) + { + if (pl->dest == src) + { + for (i = 0 ; i < pc->programs.fnmatch_count ; i++) + { + if (!strcmp(pl->u.ep->name, pc->programs.fnmatch[i]->name)) + data_queue_anonymous_lookup(pc, pc->programs.fnmatch[i], dest); + } + for (i = 0 ; i < pc->programs.strcmp_count ; i++) + { + if (!strcmp(pl->u.ep->name, pc->programs.strcmp[i]->name)) + data_queue_anonymous_lookup(pc, pc->programs.strcmp[i], dest); + } + for (i = 0 ; i < pc->programs.strncmp_count ; i++) + { + if (!strcmp(pl->u.ep->name, pc->programs.strncmp[i]->name)) + data_queue_anonymous_lookup(pc, pc->programs.strncmp[i], dest); + } + for (i = 0 ; i < pc->programs.strrncmp_count ; i++) + { + if (!strcmp(pl->u.ep->name, pc->programs.strrncmp[i]->name)) + data_queue_anonymous_lookup(pc, pc->programs.strrncmp[i], dest); + } + for (i = 0 ; i < pc->programs.nocmp_count ; i++) + { + if (!strcmp(pl->u.ep->name, pc->programs.nocmp[i]->name)) + data_queue_anonymous_lookup(pc, pc->programs.nocmp[i], dest); + } + } + } +} + +void +data_queue_program_lookup(Edje_Part_Collection *pc, const char *name, int *dest) +{ + Program_Lookup *pl; + + if (!name) return ; /* FIXME: should we stop compiling ? */ + + pl = mem_alloc(SZ(Program_Lookup)); + program_lookups = eina_list_append(program_lookups, pl); + pl->pc = pc; + pl->u.name = mem_strdup(name); + pl->dest = dest; + pl->anonymous = EINA_FALSE; +} + +void +data_queue_copied_program_lookup(Edje_Part_Collection *pc, int *src, int *dest) +{ + Eina_List *l; + Program_Lookup *pl; + + EINA_LIST_FOREACH(program_lookups, l, pl) + { + if (pl->dest == src) + data_queue_program_lookup(pc, pl->u.name, dest); + } +} + +void +data_queue_image_lookup(char *name, int *dest, Eina_Bool *set) +{ + Image_Lookup *il; + + il = mem_alloc(SZ(Image_Lookup)); + image_lookups = eina_list_append(image_lookups, il); + il->name = mem_strdup(name); + il->dest = dest; + il->set = set; +} + +void +data_queue_image_remove(int *dest, Eina_Bool *set) +{ + Eina_List *l; + Image_Lookup *il; + + EINA_LIST_FOREACH(image_lookups, l, il) + { + if (il->dest == dest && il->set == set) + { + image_lookups = eina_list_remove_list(image_lookups, l); + free(il->name); + free(il); + return ; + } + } + } + +void +data_queue_copied_image_lookup(int *src, int *dest, Eina_Bool *set) +{ + Eina_List *l; + Image_Lookup *il; + + EINA_LIST_FOREACH(image_lookups, l, il) + { + if (il->dest == src) + data_queue_image_lookup(il->name, dest, set); + } +} +void +data_queue_part_slave_lookup(int *master, int *slave) +{ + Slave_Lookup *sl; + + sl = mem_alloc(SZ(Slave_Lookup)); + part_slave_lookups = eina_list_append(part_slave_lookups, sl); + sl->master = master; + sl->slave = slave; +} + +void +data_queue_image_slave_lookup(int *master, int *slave) +{ + Slave_Lookup *sl; + + sl = mem_alloc(SZ(Slave_Lookup)); + image_slave_lookups = eina_list_append(image_slave_lookups, sl); + sl->master = master; + sl->slave = slave; +} + +void +handle_slave_lookup(Eina_List *list, int *master, int value) +{ + Eina_List *l; + Slave_Lookup *sl; + + EINA_LIST_FOREACH(list, l, sl) + if (sl->master == master) + *sl->slave = value; +} + +void +data_process_lookups(void) +{ + Edje_Part_Collection *pc; + Part_Lookup *part; + Program_Lookup *program; + Group_Lookup *group; + Image_Lookup *image; + Eina_List *l2; + Eina_List *l; + Eina_Hash *images_in_use; + void *data; + Eina_Bool is_lua = EINA_FALSE; + + /* remove all unreferenced Edje_Part_Collection */ + EINA_LIST_FOREACH_SAFE(edje_collections, l, l2, pc) + { + Edje_Part_Collection_Directory_Entry *alias; + Edje_Part_Collection_Directory_Entry *find; + Eina_List *l3; + unsigned int id = 0; + unsigned int i; + + if (!pc->part) + { + ERR("A collection without a name was detected, that's not allowed."); + exit(-1); + } + find = eina_hash_find(edje_file->collection, pc->part); + if (find && find->id == pc->id) + continue ; + + EINA_LIST_FOREACH(aliases, l3, alias) + if (alias->id == pc->id) + continue ; + + /* This Edje_Part_Collection is not used at all */ + edje_collections = eina_list_remove_list(edje_collections, l); + l3 = eina_list_nth_list(codes, pc->id); + codes = eina_list_remove_list(codes, l3); + + /* Unref all image used by that group */ + for (i = 0; i < pc->parts_count; ++i) + part_description_image_cleanup(pc->parts[i]); + + /* Correct all id */ + EINA_LIST_FOREACH(edje_collections, l3, pc) + { + Eina_List *l4; + + /* Some group could be removed from the collection, but still be referenced by alias */ + find = eina_hash_find(edje_file->collection, pc->part); + if (pc->id != find->id) find = NULL; + + /* Update all matching alias */ + EINA_LIST_FOREACH(aliases, l4, alias) + if (pc->id == alias->id) + alias->id = id; + + pc->id = id++; + if (find) find->id = pc->id; + } + } + + EINA_LIST_FOREACH(edje_collections, l, pc) + { + unsigned int count = 0; + unsigned int i; + + if (pc->lua_script_only) + is_lua = EINA_TRUE; +#define PROGRAM_ID_SET(Type, Pc, It, Count) \ + for (It = 0; It < Pc->programs.Type ## _count; ++It) \ + { \ + Pc->programs.Type[It]->id = Count++; \ + } + + PROGRAM_ID_SET(fnmatch, pc, i, count); + PROGRAM_ID_SET(strcmp, pc, i, count); + PROGRAM_ID_SET(strncmp, pc, i, count); + PROGRAM_ID_SET(strrncmp, pc, i, count); + PROGRAM_ID_SET(nocmp, pc, i, count); + +#undef PROGRAM_ID_SET + } + + EINA_LIST_FREE(part_lookups, part) + { + Edje_Part *ep; + unsigned int i; + + if (!strcmp(part->name, "-")) + { + *(part->dest) = -1; + } + else + { + char *alias; + alias = eina_hash_find(part->pc->alias, part->name); + if (!alias) + alias = part->name; + for (i = 0; i < part->pc->parts_count; ++i) + { + ep = part->pc->parts[i]; + + if ((ep->name) && (!strcmp(ep->name, alias))) + { + handle_slave_lookup(part_slave_lookups, part->dest, ep->id); + *(part->dest) = ep->id; + break; + } + } + + if (i == part->pc->parts_count) + { + ERR("Unable to find part name \"%s\" needed in group '%s'.", + alias, part->pc->part); + exit(-1); + } + } + + free(part->name); + free(part); + } + + EINA_LIST_FREE(program_lookups, program) + { + unsigned int i; + Eina_Bool find = EINA_FALSE; + +#define PROGRAM_MATCH(Type, Pl, It) \ + for (It = 0; It < Pl->pc->programs.Type ## _count; ++It) \ + { \ + Edje_Program *ep; \ + \ + ep = Pl->pc->programs.Type[It]; \ + \ + if ((Pl->anonymous && ep == Pl->u.ep) || \ + ((!Pl->anonymous) && (ep->name) && (!strcmp(ep->name, Pl->u.name)))) \ + { \ + *(Pl->dest) = ep->id; \ + find = EINA_TRUE; \ + break; \ + } \ + } + + PROGRAM_MATCH(fnmatch, program, i); + PROGRAM_MATCH(strcmp, program, i); + PROGRAM_MATCH(strncmp, program, i); + PROGRAM_MATCH(strrncmp, program, i); + PROGRAM_MATCH(nocmp, program, i); + +#undef PROGRAM_MATCH + + if (!find) + { + if (!program->anonymous) + ERR("Unable to find program name \"%s\".", + program->u.name); + else + ERR("Unable to find anonymous program."); + exit(-1); + } + + if (!program->anonymous) + free(program->u.name); + free(program); + } + + EINA_LIST_FREE(group_lookups, group) + { + Edje_Part_Collection_Directory_Entry *de; + + if (group->part) + { + if (group->part->type != EDJE_PART_TYPE_GROUP + && group->part->type != EDJE_PART_TYPE_TEXTBLOCK + && group->part->type != EDJE_PART_TYPE_BOX + && group->part->type != EDJE_PART_TYPE_TABLE) + goto free_group; + } + + de = eina_hash_find(edje_file->collection, group->name); + + if (!de) + { + Eina_Bool found = EINA_FALSE; + + EINA_LIST_FOREACH(aliases, l, de) + if (strcmp(de->entry, group->name) == 0) + { + found = EINA_TRUE; + break; + } + if (!found) de = NULL; + } + + if (!de) + { + ERR("Unable to find group name \"%s\".", group->name); + exit(-1); + } + +free_group: + free(group->name); + free(group); + } + + images_in_use = eina_hash_string_superfast_new(NULL); + + EINA_LIST_FREE(image_lookups, image) + { + Eina_Bool find = EINA_FALSE; + + if (edje_file->image_dir) + { + Edje_Image_Directory_Entry *de; + unsigned int i; + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + { + de = edje_file->image_dir->entries + i; + + if ((de->entry) && (!strcmp(de->entry, image->name))) + { + handle_slave_lookup(image_slave_lookups, image->dest, de->id); + if (de->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) + *(image->dest) = -de->id - 1; + else + *(image->dest) = de->id; + *(image->set) = EINA_FALSE; + find = EINA_TRUE; + + if (!eina_hash_find(images_in_use, image->name)) + eina_hash_direct_add(images_in_use, de->entry, de); + break; + } + } + + if (!find) + { + Edje_Image_Directory_Set *set; + + for (i = 0; i < edje_file->image_dir->sets_count; ++i) + { + set = edje_file->image_dir->sets + i; + + if ((set->name) && (!strcmp(set->name, image->name))) + { + Edje_Image_Directory_Set_Entry *child; + Eina_List *lc; + + handle_slave_lookup(image_slave_lookups, image->dest, set->id); + *(image->dest) = set->id; + *(image->set) = EINA_TRUE; + find = EINA_TRUE; + + EINA_LIST_FOREACH(set->entries, lc, child) + if (!eina_hash_find(images_in_use, child->name)) + eina_hash_direct_add(images_in_use, child->name, child); + + if (!eina_hash_find(images_in_use, image->name)) + eina_hash_direct_add(images_in_use, set->name, set); + break; + } + } + } + } + + if (!find) + { + ERR("Unable to find image name \"%s\".", image->name); + exit(-1); + } + + free(image->name); + free(image); + } + + if (edje_file->image_dir && !is_lua) + { + Edje_Image_Directory_Entry *de; + Edje_Image_Directory_Set *set; + unsigned int i; + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + { + de = edje_file->image_dir->entries + i; + + if (de->entry && eina_hash_find(images_in_use, de->entry)) + continue ; + + INF("Image '%s' in resource 'edje/image/%i' will not be included as it is unused.", + de->entry, de->id); + + de->entry = NULL; + } + + for (i = 0; i < edje_file->image_dir->sets_count; ++i) + { + set = edje_file->image_dir->sets + i; + + if (set->name && eina_hash_find(images_in_use, set->name)) + continue ; + + INF("Set '%s' will not be included as it is unused.", set->name); + + set->name = NULL; + set->entries = NULL; + } + } + + eina_hash_free(images_in_use); + + EINA_LIST_FREE(part_slave_lookups, data) + free(data); + + EINA_LIST_FREE(image_slave_lookups, data) + free(data); +} + +static void +data_process_string(Edje_Part_Collection *pc, const char *prefix, char *s, void (*func)(Edje_Part_Collection *pc, char *name, char* ptr, int len)) +{ + char *p; + char *key; + int keyl; + int quote, escape; + + key = alloca(strlen(prefix) + 2 + 1); + if (!key) return; + strcpy(key, prefix); + strcat(key, ":\""); + keyl = strlen(key); + quote = 0; + escape = 0; + for (p = s; (p) && (*p); p++) + { + if (!quote) + { + if (*p == '\"') + { + quote = 1; + p++; + } + } + if (!quote) + { + if (!strncmp(p, key, keyl)) + { + char *ptr; + int len; + int inesc = 0; + char *name; + + ptr = p; + p += keyl; + while ((*p)) + { + if (!inesc) + { + if (*p == '\\') inesc = 1; + else if (*p == '\"') + { + /* string concatenation, see below */ + if (*(p + 1) != '\"') + break; + else + p++; + } + } + else + inesc = 0; + p++; + } + len = p - ptr + 1; + name = alloca(len); + if (name) + { + char *pp; + int i; + + name[0] = 0; + pp = ptr + keyl; + inesc = 0; + i = 0; + while (*pp) + { + if (!inesc) + { + if (*pp == '\\') inesc = 1; + else if (*pp == '\"') + { + /* concat strings like "foo""bar" to "foobar" */ + if (*(pp + 1) == '\"') + pp++; + else + { + name[i] = 0; + break; + } + } + else + { + name[i] = *pp; + name[i + 1] = 0; + i++; + } + } + else + inesc = 0; + pp++; + } + func(pc, name, ptr, len); + } + } + } + else + { + if (!escape) + { + if (*p == '\"') quote = 0; + else if (*p == '\\') escape = 1; + } + else if (escape) + { + escape = 0; + } + } + } +} + +static void +_data_queue_part_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) +{ + Code_Lookup *cl; + cl = mem_alloc(SZ(Code_Lookup)); + cl->ptr = ptr; + cl->len = len; + + data_queue_part_lookup(pc, name, &(cl->val)); + + code_lookups = eina_list_append(code_lookups, cl); +} +static void +_data_queue_program_lookup(Edje_Part_Collection *pc, char *name, char *ptr, int len) +{ + Code_Lookup *cl; + + cl = mem_alloc(SZ(Code_Lookup)); + cl->ptr = ptr; + cl->len = len; + + data_queue_program_lookup(pc, name, &(cl->val)); + + code_lookups = eina_list_append(code_lookups, cl); +} +static void +_data_queue_group_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr __UNUSED__, int len __UNUSED__) +{ + data_queue_group_lookup(name, NULL); +} +static void +_data_queue_image_pc_lookup(Edje_Part_Collection *pc __UNUSED__, char *name, char *ptr, int len) +{ + Code_Lookup *cl; + + cl = mem_alloc(SZ(Code_Lookup)); + cl->ptr = ptr; + cl->len = len; + + data_queue_image_lookup(name, &(cl->val), &(cl->set)); + + code_lookups = eina_list_append(code_lookups, cl); +} + +void +data_process_scripts(void) +{ + Eina_List *l, *l2; + + for (l = codes, l2 = edje_collections; (l) && (l2); l = eina_list_next(l), l2 = eina_list_next(l2)) + { + Edje_Part_Collection *pc; + Code *cd; + + cd = eina_list_data_get(l); + pc = eina_list_data_get(l2); + + if ((cd->shared) && (!cd->is_lua)) + { + data_process_string(pc, "PART", cd->shared, _data_queue_part_lookup); + data_process_string(pc, "PROGRAM", cd->shared, _data_queue_program_lookup); + data_process_string(pc, "IMAGE", cd->shared, _data_queue_image_pc_lookup); + data_process_string(pc, "GROUP", cd->shared, _data_queue_group_lookup); + } + + if (cd->programs) + { + Code_Program *cp; + Eina_List *ll; + + EINA_LIST_FOREACH(cd->programs, ll, cp) + { + if (cp->script) + { + data_process_string(pc, "PART", cp->script, _data_queue_part_lookup); + data_process_string(pc, "PROGRAM", cp->script, _data_queue_program_lookup); + data_process_string(pc, "IMAGE", cp->script, _data_queue_image_pc_lookup); + data_process_string(pc, "GROUP", cp->script, _data_queue_group_lookup); + } + } + } + } +} + +void +data_process_script_lookups(void) +{ + Eina_List *l; + Code_Lookup *cl; + + EINA_LIST_FOREACH(code_lookups, l, cl) + { + char buf[12]; + int n; + + /* FIXME !! Handle set in program */ + n = eina_convert_itoa(cl->val, buf); + if (n > cl->len) + { + ERR("The unexpected happened. A numeric replacement string was larger than the original!"); + exit(-1); + } + memset(cl->ptr, ' ', cl->len); + strncpy(cl->ptr, buf, n); + } +} + +void +using_file(const char *filename) +{ + FILE *f; + + if (!watchfile) return; + f = fopen(watchfile, "ab"); + if (!f) return ; + fputs(filename, f); + fputc('\n', f); + fclose(f); +} diff --git a/src/bin/edje_cc_parse.c b/src/bin/edje_cc_parse.c new file mode 100644 index 0000000..d315790 --- /dev/null +++ b/src/bin/edje_cc_parse.c @@ -0,0 +1,1529 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_ALLOCA_H +# include +#elif defined __GNUC__ +# define alloca __builtin_alloca +#elif defined _AIX +# define alloca __alloca +#elif defined _MSC_VER +# include +# define alloca _alloca +#else +# include +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "edje_cc.h" +#include +#include + +#ifdef _WIN32 +# define EPP_EXT ".exe" +#else +# define EPP_EXT +#endif + +static void new_object(void); +static void new_statement(void); +static char *perform_math (char *input); +static int isdelim(char c); +static char *next_token(char *p, char *end, char **new_p, int *delim); +static char *stack_id(void); +static void stack_chop_top(void); +static void parse(char *data, off_t size); + +/* simple expression parsing protos */ +static int my_atoi(const char * s); +static char * _alphai(char *s, int * val); +static char * _betai(char *s, int * val); +static char * _gammai(char *s, int * val); +static char * _deltai(char *s, int * val); +static char * _get_numi(char *s, int * val); +static int _is_numi(char c); +static int _is_op1i(char c); +static int _is_op2i(char c); +static int _calci(char op, int a, int b); + +static double my_atof(const char * s); +static char * _alphaf(char *s, double * val); +static char * _betaf(char *s, double * val); +static char * _gammaf(char *s, double * val); +static char * _deltaf(char *s, double * val); +static char * _get_numf(char *s, double * val); +static int _is_numf(char c); +static int _is_op1f(char c); +static int _is_op2f(char c); +static double _calcf(char op, double a, double b); +static int strstrip(const char *in, char *out, size_t size); + + +int line = 0; +Eina_List *stack = NULL; +Eina_List *params = NULL; + +static char file_buf[4096]; +static int verbatim = 0; +static int verbatim_line1 = 0; +static int verbatim_line2 = 0; +static char *verbatim_str = NULL; + +static void +err_show_stack(void) +{ + char *s; + + s = stack_id(); + if (s) + { + ERR("PARSE STACK:\n%s", s); + free(s); + } + else + ERR("NO PARSE STACK"); +} + +static void +err_show_params(void) +{ + Eina_List *l; + char *p; + + ERR("PARAMS:"); + EINA_LIST_FOREACH(params, l, p) + { + ERR(" %s", p); + } +} + +static void +err_show(void) +{ + err_show_stack(); + err_show_params(); +} + +static Eina_Hash *_new_object_hash = NULL; +static Eina_Hash *_new_statement_hash = NULL; +static void +fill_object_statement_hashes(void) +{ + int i, n; + + if (_new_object_hash) return; + + _new_object_hash = eina_hash_string_superfast_new(NULL); + _new_statement_hash = eina_hash_string_superfast_new(NULL); + + n = object_handler_num(); + for (i = 0; i < n; i++) + { + eina_hash_add(_new_object_hash, object_handlers[i].type, + &(object_handlers[i])); + } + n = statement_handler_num(); + for (i = 0; i < n; i++) + { + eina_hash_add(_new_statement_hash, statement_handlers[i].type, + &(statement_handlers[i])); + } +} + +static void +new_object(void) +{ + char *id; + New_Object_Handler *oh; + New_Statement_Handler *sh; + + fill_object_statement_hashes(); + id = stack_id(); + oh = eina_hash_find(_new_object_hash, id); + if (oh) + { + if (oh->func) oh->func(); + } + else + { + sh = eina_hash_find(_new_statement_hash, id); + if (!sh) + { + ERR("%s:%i unhandled keyword %s", + file_in, line - 1, + (char *)eina_list_data_get(eina_list_last(stack))); + err_show(); + exit(-1); + } + } + free(id); +} + +static void +new_statement(void) +{ + char *id; + New_Statement_Handler *sh; + + fill_object_statement_hashes(); + id = stack_id(); + sh = eina_hash_find(_new_statement_hash, id); + if (sh) + { + if (sh->func) sh->func(); + } + else + { + ERR("%s:%i unhandled keyword %s", + file_in, line - 1, + (char *)eina_list_data_get(eina_list_last(stack))); + err_show(); + exit(-1); + } + free(id); +} + +static char * +perform_math (char *input) +{ + char buf[256]; + double res; + + /* FIXME + * Always apply floating-point arithmetic. + * Does this cause problems for integer parameters? (yes it will) + * + * What we should do is, loop over the string and figure out whether + * there are floating point operands, too and then switch to + * floating point math. + */ + res = my_atof(input); + snprintf(buf, sizeof (buf), "%lf", res); + return strdup(buf); +} + +static int +isdelim(char c) +{ + const char *delims = "{},;:"; + char *d; + + d = (char *)delims; + while (*d) + { + if (c == *d) return 1; + d++; + } + return 0; +} + +static char * +next_token(char *p, char *end, char **new_p, int *delim) +{ + char *tok_start = NULL, *tok_end = NULL, *tok = NULL, *sa_start = NULL; + int in_tok = 0; + int in_quote = 0; + int in_parens = 0; + int in_comment_ss = 0; + int in_comment_cpp = 0; + int in_comment_sa = 0; + int had_quote = 0; + int is_escaped = 0; + + *delim = 0; + if (p >= end) return NULL; + while (p < end) + { + if (*p == '\n') + { + in_comment_ss = 0; + in_comment_cpp = 0; + line++; + } + if ((!in_comment_ss) && (!in_comment_sa)) + { + if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '/')) + in_comment_ss = 1; + if ((!in_quote) && (*p == '#')) + in_comment_cpp = 1; + if ((!in_quote) && (*p == '/') && (p < (end - 1)) && (*(p + 1) == '*')) + { + in_comment_sa = 1; + sa_start = p; + } + } + if ((in_comment_cpp) && (*p == '#')) + { + char *pp, fl[4096]; + char *tmpstr = NULL; + int l, nm; + + /* handle cpp comments */ + /* their line format is + * #line [??] + */ + + pp = p; + while ((pp < end) && (*pp != '\n')) + { + pp++; + } + l = pp - p; + tmpstr = alloca(l + 1); + if (!tmpstr) + { + ERR("%s:%i malloc %i bytes failed", + file_in, line - 1, l + 1); + exit(-1); + } + strncpy(tmpstr, p, l); + tmpstr[l] = 0; + l = sscanf(tmpstr, "%*s %i \"%[^\"]\"", &nm, fl); + if (l == 2) + { + strcpy(file_buf, fl); + line = nm; + file_in = file_buf; + } + } + else if ((!in_comment_ss) && (!in_comment_sa) && (!in_comment_cpp)) + { + if (!in_tok) + { + if (!in_quote) + { + if (!isspace(*p)) + { + if (*p == '"') + { + in_quote = 1; + had_quote = 1; + } + else if (*p == '(') + in_parens++; + + in_tok = 1; + tok_start = p; + if (isdelim(*p)) *delim = 1; + } + } + } + else + { + if (in_quote) + { + if ((*p) == '\\') + is_escaped = !is_escaped; + else if (((*p) == '"') && (!is_escaped)) + { + in_quote = 0; + had_quote = 1; + } + else if (is_escaped) + is_escaped = 0; + } + else if (in_parens) + { + if (((*p) == ')') && (!is_escaped)) + in_parens--; + } + else + { + if (*p == '"') + { + in_quote = 1; + had_quote = 1; + } + else if (*p == '(') + in_parens++; + + /* check for end-of-token */ + if ( + (isspace(*p)) || + ((*delim) && (!isdelim(*p))) || + (isdelim(*p)) + ) + {/*the line below this is never used because it skips to + * the 'done' label which is after the return call for + * in_tok being 0. is this intentional? + */ + in_tok = 0; + + tok_end = p - 1; + if (*p == '\n') line--; + goto done; + } + } + } + } + if (in_comment_sa) + { + if ((*p == '/') && (*(p - 1) == '*') && ((p - sa_start) > 2)) + in_comment_sa = 0; + } + p++; + } + if (!in_tok) return NULL; + tok_end = p - 1; + + done: + *new_p = p; + + tok = mem_alloc(tok_end - tok_start + 2); + strncpy(tok, tok_start, tok_end - tok_start + 1); + tok[tok_end - tok_start + 1] = 0; + + if (had_quote) + { + is_escaped = 0; + p = tok; + + while (*p) + { + if ((*p == '\"') && (!is_escaped)) + { + memmove(p, p + 1, strlen(p)); + } + else if ((*p == '\\') && (*(p + 1) == 'n')) + { + memmove(p, p + 1, strlen(p)); + *p = '\n'; + } + else if ((*p == '\\') && (*(p + 1) == 't')) + { + memmove(p, p + 1, strlen(p)); + *p = '\t'; + } + else if (*p == '\\') + { + memmove(p, p + 1, strlen(p)); + if (*p == '\\') p++; + else is_escaped = 1; + } + else + { + if (is_escaped) is_escaped = 0; + p++; + } + } + } + else if ((tok) && (*tok == '(')) + { + char *tmp; + tmp = tok; + tok = perform_math(tok); + free(tmp); + } + + return tok; +} + +static char * +stack_id(void) +{ + char *id; + int len; + Eina_List *l; + char *data; + + len = 0; + EINA_LIST_FOREACH(stack, l, data) + len += strlen(data) + 1; + id = mem_alloc(len); + id[0] = 0; + EINA_LIST_FOREACH(stack, l, data) + { + strcat(id, data); + if (eina_list_next(l)) strcat(id, "."); + } + return id; +} + +static void +stack_chop_top(void) +{ + char *top; + + /* remove top from stack */ + top = eina_list_data_get(eina_list_last(stack)); + if (top) + { + free(top); + stack = eina_list_remove(stack, top); + } + else + { + ERR("parse error %s:%i. } marker without matching { marker", + file_in, line - 1); + err_show(); + exit(-1); + } +} + +static void +parse(char *data, off_t size) +{ + char *p, *end, *token; + int delim = 0; + int do_params = 0; + + DBG("Parsing input file"); + + p = data; + end = data + size; + line = 1; + while ((token = next_token(p, end, &p, &delim))) + { + /* if we are in param mode, the only delimiter + * we'll accept is the semicolon + */ + if (do_params && delim && *token != ';') + { + ERR("parse error %s:%i. %c marker before ; marker", + file_in, line - 1, *token); + err_show(); + exit(-1); + } + else if (delim) + { + if (*token == ',' || *token == ':') do_params = 1; + else if (*token == '}') + { + if (do_params) + { + ERR("Parse error %s:%i. } marker before ; marker", + file_in, line - 1); + err_show(); + exit(-1); + } + else + stack_chop_top(); + } + else if (*token == ';') + { + if (do_params) + { + do_params = 0; + new_statement(); + /* clear out params */ + while (params) + { + free(eina_list_data_get(params)); + params = eina_list_remove(params, eina_list_data_get(params)); + } + /* remove top from stack */ + stack_chop_top(); + } + } + else if (*token == '{') + { + if (do_params) + { + ERR("parse error %s:%i. { marker before ; marker", + file_in, line - 1); + err_show(); + exit(-1); + } + } + free(token); + } + else + { + if (do_params) + params = eina_list_append(params, token); + else + { + stack = eina_list_append(stack, token); + new_object(); + if ((verbatim == 1) && (p < (end - 2))) + { + int escaped = 0; + int inquotes = 0; + int insquotes = 0; + int squigglie = 1; + int l1 = 0, l2 = 0; + char *verbatim_1; + char *verbatim_2; + + l1 = line; + while ((p[0] != '{') && (p < end)) + { + if (*p == '\n') line++; + p++; + } + p++; + verbatim_1 = p; + verbatim_2 = NULL; + for (; p < end; p++) + { + if (*p == '\n') line++; + if (escaped) escaped = 0; + if (!escaped) + { + if (p[0] == '\\') escaped = 1; + else if (p[0] == '\"') + { + if (!insquotes) + { + if (inquotes) inquotes = 0; + else inquotes = 1; + } + } + else if (p[0] == '\'') + { + if (!inquotes) + { + if (insquotes) insquotes = 0; + else insquotes = 1; + } + } + else if ((!inquotes) && (!insquotes)) + { + if (p[0] == '{') squigglie++; + else if (p[0] == '}') squigglie--; + if (squigglie == 0) + { + verbatim_2 = p - 1; + l2 = line; + break; + } + } + } + } + if (verbatim_2 > verbatim_1) + { + int l; + char *v; + + l = verbatim_2 - verbatim_1 + 1; + v = malloc(l + 1); + strncpy(v, verbatim_1, l); + v[l] = 0; + set_verbatim(v, l1, l2); + } + else + { + ERR("Parse error %s:%i. { marker does not have matching } marker", + file_in, line - 1); + err_show(); + exit(-1); + } + new_object(); + verbatim = 0; + } + } + } + } + + DBG("Parsing done"); +} + +static char *clean_file = NULL; +static void +clean_tmp_file(void) +{ + if (clean_file) unlink(clean_file); +} + +int +is_verbatim(void) +{ + return verbatim; +} + +void +track_verbatim(int on) +{ + verbatim = on; +} + +void +set_verbatim(char *s, int l1, int l2) +{ + verbatim_line1 = l1; + verbatim_line2 = l2; + verbatim_str = s; +} + +char * +get_verbatim(void) +{ + return verbatim_str; +} + +int +get_verbatim_line1(void) +{ + return verbatim_line1; +} + +int +get_verbatim_line2(void) +{ + return verbatim_line2; +} + +void +compile(void) +{ + char buf[4096], buf2[4096]; + char inc[4096]; + static char tmpn[4096]; + int fd; + off_t size; + char *data, *p; + Eina_List *l; + Edje_Style *stl; + + if (!tmp_dir) +#ifdef HAVE_EVIL + tmp_dir = (char *)evil_tmpdir_get(); +#else + tmp_dir = "/tmp"; +#endif + + strncpy(inc, file_in, 4000); + inc[4001] = 0; + p = strrchr(inc, '/'); + if (!p) strcpy(inc, "./"); + else *p = 0; + snprintf(tmpn, PATH_MAX, "%s/edje_cc.edc-tmp-XXXXXX", tmp_dir); + fd = mkstemp(tmpn); + if (fd >= 0) + { + int ret; + char *def; + + clean_file = tmpn; + close(fd); + atexit(clean_tmp_file); + if (!defines) + def = mem_strdup(""); + else + { + int len; + char *define; + + len = 0; + EINA_LIST_FOREACH(defines, l, define) + len += strlen(define) + 1; + def = mem_alloc(len + 1); + def[0] = 0; + EINA_LIST_FOREACH(defines, l, define) + { + strcat(def, define); + strcat(def, " "); + } + } + + /* + * Run the input through the C pre-processor. + */ + ret = -1; + snprintf(buf2, sizeof(buf2), "%s/edje/utils/epp" EPP_EXT, + eina_prefix_lib_get(pfx)); + if (ecore_file_exists(buf2)) + { + snprintf(buf, sizeof(buf), "%s -a %s %s -I%s %s -o %s", + buf2, watchfile ? watchfile : "/dev/null", file_in, inc, def, tmpn); + ret = system(buf); + } + else + { + ERR("Cannot run epp: %s", buf2); + exit(-1); + } + if (ret == EXIT_SUCCESS) + file_in = tmpn; + else + { + ERR("Exit code of epp not clean: %i", ret); + exit(-1); + } + free(def); + } + fd = open(file_in, O_RDONLY | O_BINARY, S_IRUSR | S_IWUSR); + if (fd < 0) + { + ERR("Cannot open file \"%s\" for input. %s", + file_in, strerror(errno)); + exit(-1); + } + DBG("Opening \"%s\" for input", file_in); + + size = lseek(fd, 0, SEEK_END); + lseek(fd, 0, SEEK_SET); + data = malloc(size); + if (data && (read(fd, data, size) == size)) + parse(data, size); + else + { + ERR("Cannot read file \"%s\". %s", file_in, strerror(errno)); + exit(-1); + } + free(data); + close(fd); + + EINA_LIST_FOREACH(edje_file->styles, l, stl) + { + if (!stl->name) + { + ERR("style must have a name."); + exit(-1); + } + } +} + +int +is_param(int n) +{ + char *str; + + str = eina_list_nth(params, n); + if (str) return 1; + return 0; +} + +int +is_num(int n) +{ + char *str; + char *end; + long int ret; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + if (str[0] == 0) return 0; + end = str; + ret = strtol(str, &end, 0); + if ((ret == LONG_MIN) || (ret == LONG_MAX)) + { + n = 0; // do nothing. shut gcc warnings up + } + if ((end != str) && (end[0] == 0)) return 1; + return 0; +} + +char * +parse_str(int n) +{ + char *str; + char *s; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + s = mem_strdup(str); + return s; +} + +static int +_parse_enum(char *str, va_list va) +{ + va_list va2; + va_copy(va2, va); /* iterator for the error message */ + + for (;;) + { + char *s; + int v; + + s = va_arg(va, char *); + + /* End of the list, nothing matched. */ + if (!s) + { + ERR("%s:%i token %s not one of:", file_in, line - 1, str); + s = va_arg(va2, char *); + while (s) + { + va_arg(va2, int); + fprintf(stderr, " %s", s); + s = va_arg(va2, char *); + if (!s) break; + } + fprintf(stderr, "\n"); + va_end(va2); + va_end(va); + err_show(); + exit(-1); + } + + v = va_arg(va, int); + if (!strcmp(s, str)) + { + va_end(va2); + va_end(va); + return v; + } + } + va_end(va2); + va_end(va); + return 0; +} + +int +parse_enum(int n, ...) +{ + char *str; + int result; + va_list va; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + + va_start(va, n); + result = _parse_enum(str, va); + va_end(va); + + return result; +} + +int +parse_flags(int n, ...) +{ + Eina_List *lst; + int result = 0; + va_list va; + char *data; + + va_start(va, n); + EINA_LIST_FOREACH(eina_list_nth_list(params, n), lst, data) + result |= _parse_enum(data, va); + va_end(va); + + return result; +} + +int +parse_int(int n) +{ + char *str; + int i; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + i = my_atoi(str); + return i; +} + +int +parse_int_range(int n, int f, int t) +{ + char *str; + int i; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + i = my_atoi(str); + if ((i < f) || (i > t)) + { + ERR("%s:%i integer %i out of range of %i to %i inclusive", + file_in, line - 1, i, f, t); + err_show(); + exit(-1); + } + return i; +} + +int +parse_bool(int n) +{ + char *str, buf[4096]; + int i; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + + if (!strstrip(str, buf, sizeof (buf))) + { + ERR("%s:%i expression is too long", + file_in, line - 1); + return 0; + } + + if (!strcasecmp(buf, "false") || !strcasecmp(buf, "off")) + return 0; + if (!strcasecmp(buf, "true") || !strcasecmp(buf, "on")) + return 1; + + i = my_atoi(str); + if ((i < 0) || (i > 1)) + { + ERR("%s:%i integer %i out of range of 0 to 1 inclusive", + file_in, line - 1, i); + err_show(); + exit(-1); + } + return i; +} + +double +parse_float(int n) +{ + char *str; + double i; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + i = my_atof(str); + return i; +} + +double +parse_float_range(int n, double f, double t) +{ + char *str; + double i; + + str = eina_list_nth(params, n); + if (!str) + { + ERR("%s:%i no parameter supplied as argument %i", + file_in, line - 1, n + 1); + err_show(); + exit(-1); + } + i = my_atof(str); + if ((i < f) || (i > t)) + { + ERR("%s:%i float %3.3f out of range of %3.3f to %3.3f inclusive", + file_in, line - 1, i, f, t); + err_show(); + exit(-1); + } + return i; +} + +int +get_arg_count(void) +{ + return eina_list_count (params); +} + +void +check_arg_count(int required_args) +{ + int num_args = eina_list_count (params); + + if (num_args != required_args) + { + ERR("%s:%i got %i arguments, but expected %i", + file_in, line - 1, num_args, required_args); + err_show(); + exit(-1); + } +} + +void +check_min_arg_count(int min_required_args) +{ + int num_args = eina_list_count (params); + + if (num_args < min_required_args) + { + ERR("%s:%i got %i arguments, but expected at least %i", + file_in, line - 1, num_args, min_required_args); + err_show(); + exit(-1); + } +} + +/* simple expression parsing stuff */ + +/* + * alpha ::= beta + beta || beta + * beta ::= gamma + gamma || gamma + * gamma ::= num || delta + * delta ::= '(' alpha ')' + * + */ + +/* int set of function */ + +static int +my_atoi(const char *s) +{ + int res = 0; + char buf[4096]; + + if (!s) return 0; + if (!strstrip(s, buf, sizeof(buf))) + { + ERR("%s:%i expression is too long", + file_in, line - 1); + return 0; + } + _alphai(buf, &res); + return res; +} + +static char * +_deltai(char *s, int *val) +{ + if (!val) return NULL; + if ('(' != s[0]) + { + ERR("%s:%i unexpected character at %s", + file_in, line - 1, s); + return s; + } + else + { + s++; + s = _alphai(s, val); + s++; + return s; + } + return s; +} + +static char * +_funci(char *s, int *val) +{ + if (!strncmp(s, "floor(", 6)) + { + s += 5; + s = _deltai(s, val); + *val = *val; + } + else if (!strncmp(s, "ceil(", 5)) + { + s += 4; + s = _deltai(s, val); + *val = *val; + } + else + { + ERR("%s:%i unexpected character at %s", + file_in, line - 1, s); + } + return s; +} + +static char * +_gammai(char *s, int *val) +{ + if (!val) return NULL; + if (_is_numi(s[0])) + { + s = _get_numi(s, val); + return s; + } + else if ('(' == s[0]) + { + s = _deltai(s, val); + return s; + } + else + { + s = _funci(s, val); +// ERR("%s:%i unexpected character at %s", +// progname, file_in, line - 1, s); + } + return s; +} + +static char * +_betai(char *s, int *val) +{ + int a1, a2; + char op; + + if (!val) return NULL; + s = _gammai(s, &a1); + while (_is_op1i(s[0])) + { + op = s[0]; + s++; + s = _gammai(s, &a2); + a1 = _calci(op, a1, a2); + } + (*val) = a1; + return s; +} + +static char * +_alphai(char *s, int *val) +{ + int a1, a2; + char op; + + if (!val) return NULL; + s = _betai(s, &a1); + while (_is_op2i(s[0])) + { + op = s[0]; + s++; + s = _betai(s, &a2); + a1 = _calci(op, a1, a2); + } + (*val) = a1; + return s; +} + +char * +_get_numi(char *s, int *val) +{ + char buf[4096]; + int pos = 0; + + if (!val) return s; + while ((('0' <= s[pos]) && ('9' >= s[pos])) || + ((0 == pos) && ('-' == s[pos]))) + { + buf[pos] = s[pos]; + pos++; + } + buf[pos] = '\0'; + (*val) = atoi(buf); + return (s + pos); +} + +int +_is_numi(char c) +{ + if (((c >= '0') && (c <= '9')) || ('-' == c) || ('+' == c)) + return 1; + else + return 0; +} + +int +_is_op1i(char c) +{ + switch (c) + { + case '*':; + case '%':; + case '/': return 1; + default: break; + } + return 0; +} + +int +_is_op2i(char c) +{ + switch (c) + { + case '+':; + case '-': return 1; + default: break; + } + return 0; +} + +int +_calci(char op, int a, int b) +{ + switch(op) + { + case '+': + a += b; + return a; + case '-': + a -= b; + return a; + case '/': + if (0 != b) a /= b; + else + ERR("%s:%i divide by zero", file_in, line - 1); + return a; + case '*': + a *= b; + return a; + case '%': + if (0 != b) a = a % b; + else + ERR("%s:%i modula by zero", file_in, line - 1); + return a; + default: + ERR("%s:%i unexpected character '%c'", file_in, line - 1, op); + } + return a; +} + +/* float set of functoins */ + +double +my_atof(const char *s) +{ + double res = 0; + char buf[4096]; + + if (!s) return 0; + + if (!strstrip(s, buf, sizeof (buf))) + { + ERR("%s:%i expression is too long", file_in, line - 1); + return 0; + } + _alphaf(buf, &res); + return res; +} + +static char * +_deltaf(char *s, double *val) +{ + if (!val) return NULL; + if ('(' != s[0]) + { + ERR("%s:%i unexpected character at %s", file_in, line - 1, s); + return s; + } + else + { + s++; + s = _alphaf(s, val); + s++; + } + return s; +} + +static char * +_funcf(char *s, double *val) +{ + if (!strncmp(s, "floor(", 6)) + { + s += 5; + s = _deltaf(s, val); + *val = floor(*val); + } + else if (!strncmp(s, "ceil(", 5)) + { + s += 4; + s = _deltaf(s, val); + *val = ceil(*val); + } + else + { + ERR("%s:%i unexpected character at %s", file_in, line - 1, s); + } + return s; +} + +static char * +_gammaf(char *s, double *val) +{ + if (!val) return NULL; + + if (_is_numf(s[0])) + { + s = _get_numf(s, val); + return s; + } + else if ('(' == s[0]) + { + s = _deltaf(s, val); + return s; + } + else + { + s = _funcf(s, val); +// ERR("%s:%i unexpected character at %s", +// progname, file_in, line - 1, s); + } + return s; +} + +static char * +_betaf(char *s, double *val) +{ + double a1=0, a2=0; + char op; + + if (!val) return NULL; + s = _gammaf(s, &a1); + while (_is_op1f(s[0])) + { + op = s[0]; + s++; + s = _gammaf(s, &a2); + a1 = _calcf(op, a1, a2); + } + (*val) = a1; + return s; +} + +static char * +_alphaf(char *s, double *val) +{ + double a1=0, a2=0; + char op; + + if (!val) return NULL; + s = _betaf(s, &a1); + while (_is_op2f(s[0])) + { + op = s[0]; + s++; + s = _betaf(s, &a2); + a1 = _calcf(op, a1, a2); + } + (*val) = a1; + return s; +} + +static char * +_get_numf(char *s, double *val) +{ + char buf[4096]; + int pos = 0; + + if (!val) return s; + + while ((('0' <= s[pos]) && ('9' >= s[pos])) || + ('.' == s[pos]) || + ((0 == pos) && ('-' == s[pos]))) + { + buf[pos] = s[pos]; + pos++; + } + buf[pos] = '\0'; + (*val) = atof(buf); + return (s+pos); +} + +static int +_is_numf(char c) +{ + if (((c >= '0') && (c <= '9')) + || ('-' == c) + || ('.' == c) + || ('+' == c)) + return 1; + return 0; +} + +static int +_is_op1f(char c) +{ + switch(c) + { + case '*':; + case '%':; + case '/': return 1; + default: break; + } + return 0; +} + +static int +_is_op2f(char c) +{ + switch(c) + { + case '+':; + case '-': return 1; + default: break; + } + return 0; +} + +static double +_calcf(char op, double a, double b) +{ + switch(op) + { + case '+': + a += b; + return a; + case '-': + a -= b; + return a; + case '/': + if (b != 0) a /= b; + else + ERR("%s:%i divide by zero", file_in, line - 1); + return a; + case '*': + a *= b; + return a; + case '%': + if (0 != b) a = (double)((int)a % (int)b); + else + ERR("%s:%i modula by zero", file_in, line - 1); + return a; + default: + ERR("%s:%i unexpected character '%c'", file_in, line - 1, op); + } + return a; +} + +static int +strstrip(const char *in, char *out, size_t size) +{ + if ((size -1 ) < strlen(in)) + { + ERR("%s:%i expression is too long", file_in, line - 1); + return 0; + } + /* remove spaces and tabs */ + while (*in) + { + if ((0x20 != *in) && (0x09 != *in)) + { + *out = *in; + out++; + } + in++; + } + *out = '\0'; + return 1; +} diff --git a/src/bin/edje_cc_sources.c b/src/bin/edje_cc_sources.c new file mode 100644 index 0000000..4a6be70 --- /dev/null +++ b/src/bin/edje_cc_sources.c @@ -0,0 +1,259 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#include "edje_cc.h" + +static Eet_Data_Descriptor *_srcfile_edd = NULL; +static Eet_Data_Descriptor *_srcfile_list_edd = NULL; + +static Eet_Data_Descriptor *_external_edd = NULL; +static Eet_Data_Descriptor *_external_list_edd = NULL; + +static Eet_Data_Descriptor *_font_edd = NULL; +static Eet_Data_Descriptor *_font_list_edd = NULL; + +static SrcFile_List srcfiles = {NULL}; + +void +source_edd(void) +{ + Eet_Data_Descriptor_Class eddc; + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile", sizeof (SrcFile)); + _srcfile_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "name", name, EET_T_INLINED_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "file", file, EET_T_INLINED_STRING); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile_list", sizeof (SrcFile_List)); + _srcfile_list_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_srcfile_list_edd, SrcFile_List, "list", list, _srcfile_edd); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "external", sizeof (External)); + _external_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_external_edd, External, "name", name, EET_T_INLINED_STRING); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "external_list", sizeof (External_List)); + _external_list_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_external_list_edd, External_List, "list", list, _external_edd); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font", sizeof (Font)); + _font_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "file", file, EET_T_INLINED_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "name", name, EET_T_INLINED_STRING); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font_list", sizeof (Font_List)); + _font_list_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_font_list_edd, Font_List, "list", list, _font_edd); +} + +static void source_fetch_file(const char *fil, const char *filname); + +static void +source_fetch_file(const char *fil, const char *filname) +{ + FILE *f; + char buf[16 * 1024], *dir = NULL; + long sz; + size_t tmp; + ssize_t dir_len = 0; + SrcFile *sf; + + f = fopen(fil, "rb"); + if (!f) + { + ERR("Cannot open file '%s'", fil); + exit(-1); + } + + fseek(f, 0, SEEK_END); + sz = ftell(f); + fseek(f, 0, SEEK_SET); + sf = mem_alloc(SZ(SrcFile)); + sf->name = mem_strdup(filname); + sf->file = mem_alloc(sz + 1); + if (sz > 0) + { + tmp = fread(sf->file, sz, 1, f); + if (tmp != 1) + { + ERR("file length for (%s) doesn't match!", filname); + exit(-1); + } + } + + sf->file[sz] = '\0'; + fseek(f, 0, SEEK_SET); + srcfiles.list = eina_list_append(srcfiles.list, sf); + + while (fgets(buf, sizeof(buf), f)) + { + char *p, *pp; + int got_hash = 0; + int forgetit = 0; + int haveinclude = 0; + char *file = NULL, *fname = NULL; + + p = buf; + while ((!forgetit) && (*p)) + { + if (!got_hash) + { + if (!isspace(*p)) + { + if (*p == '#') + got_hash = 1; + else + forgetit = 1; + } + p++; + } + + if (!haveinclude) + { + if (!isspace(*p)) + { + if (!strncmp(p, "include", 7)) + { + haveinclude = 1; + p += 7; + } + /* HACK! the logic above should be fixed so + * preprocessor statements don't have to begin + * in column 0. + * otoh, edje_cc should print a warning in that case, + * since according to the standard, preprocessor + * statements need to be put in column 0. + */ + else if (!strncmp(p, "#include", 8)) + { + haveinclude = 1; + p += 8; + } + else + forgetit = 1; + } + } + else + { + if (!isspace(*p)) + { + char end = '\0'; + + if (*p == '"') end = '"'; + else if (*p == '<') end = '>'; + + if (end) + { + pp = strchr(p + 1, end); + if (!pp) + forgetit = 1; + else + { + char *slash; + ssize_t l = 0; + + /* get the directory of the current file + * if we haven't already done so + */ + if ((!dir) && (strrchr(fil, '/'))) + { + dir = mem_strdup(fil); + slash = strrchr(dir, '/'); + *slash = '\0'; + dir_len = strlen(dir); + } + + l = pp - p + dir_len + 1; + file = mem_alloc(l); + + if (!dir_len) + { + snprintf(file, l - 1, "%s", p + 1); + file[l - 2] = 0; + } + else + { + snprintf(file, l, "%s/%s", dir, p + 1); + file[l - 1] = 0; + } + + + fname = strdup(p + 1); + pp = strrchr(fname, end); + if (pp) *pp = 0; + forgetit = 1; + } + } + else + forgetit = 1; + } + else + p++; + } + + got_hash = 0; + } + if ((file) && (fname)) + { + source_fetch_file(file, fname); + free(file); + free(fname); + } + } + free(dir); + fclose(f); +} + +void +source_fetch(void) +{ + char buf[PATH_MAX] = {0}, *ptr; + + ptr = strrchr(file_in, '/'); + if (ptr) + { + snprintf(buf, sizeof (buf), "%s", ptr + 1); + } + + source_fetch_file(file_in, buf[0] ? buf : file_in); +} + +int +source_append(Eet_File *ef) +{ + return eet_data_write(ef, _srcfile_list_edd, "edje_sources", &srcfiles, + compress_mode); +} + +SrcFile_List * +source_load(Eet_File *ef) +{ + SrcFile_List *s; + + s = eet_data_read(ef, _srcfile_list_edd, "edje_sources"); + return s; +} + +int +source_fontmap_save(Eet_File *ef, Eina_List *font_list) +{ + Font_List fl; + + fl.list = font_list; + return eet_data_write(ef, _font_list_edd, "edje_source_fontmap", &fl, + compress_mode); +} + +Font_List * +source_fontmap_load(Eet_File *ef) +{ + Font_List *fl; + + fl = eet_data_read(ef, _font_list_edd, "edje_source_fontmap"); + return fl; +} diff --git a/src/bin/edje_convert.c b/src/bin/edje_convert.c new file mode 100644 index 0000000..bd6cf31 --- /dev/null +++ b/src/bin/edje_convert.c @@ -0,0 +1,459 @@ +#include "edje_private.h" + +#include "edje_cc.h" +#include "edje_convert.h" + +static const Edje_File *_current_edje_file = NULL; + +const Edje_File * +_edje_file_get(void) +{ + return _current_edje_file; +} + +void +_edje_file_set(const Edje_File *edf) +{ + _current_edje_file = edf; +} + +static Eina_Bool +_edje_file_convert_external(Edje_File *edf, Old_Edje_File *oedf) +{ + Edje_External_Directory_Entry *ede; + unsigned int max; + unsigned int i = 0; + + edf->external_dir = calloc(1, sizeof (Edje_External_Directory)); + if (!edf->external_dir) return EINA_FALSE; + if (!oedf->external_dir) return EINA_TRUE; + + max = eina_list_count(oedf->external_dir->entries); + edf->external_dir->entries = calloc(1, sizeof (Edje_External_Directory_Entry) * max); + edf->external_dir->entries_count = max; + + if (!edf->external_dir->entries && max) + return EINA_FALSE; + + EINA_LIST_FREE(oedf->external_dir->entries, ede) + { + edf->external_dir->entries[i++].entry = ede->entry; + free(ede); + } + + free(oedf->external_dir); + oedf->external_dir = NULL; + + return EINA_TRUE; +} + +static Eina_Bool +_edje_file_convert_images(Edje_File *edf, Old_Edje_File *oedf) +{ + Edje_Image_Directory_Entry *de; + Edje_Image_Directory_Set *ds; + Eina_List *l; + int max; + + edf->image_dir = calloc(1, sizeof (Edje_Image_Directory)); + if (!edf->image_dir) return EINA_FALSE; + if (!oedf->image_dir) return EINA_TRUE; + + max = -1; + EINA_LIST_FOREACH(oedf->image_dir->entries, l, de) + if (max < de->id) + max = de->id; + + edf->image_dir->entries = calloc(1, sizeof (Edje_Image_Directory_Entry) * (max + 1)); + edf->image_dir->entries_count = max + 1; + + if (!edf->image_dir->entries && edf->image_dir->entries_count) + return EINA_FALSE; + + EINA_LIST_FREE(oedf->image_dir->entries, de) + { + memcpy(edf->image_dir->entries + de->id, + de, + sizeof (Edje_Image_Directory_Entry)); + free(de); + } + + max = -1; + EINA_LIST_FOREACH(oedf->image_dir->sets, l, ds) + if (max < ds->id) + max = ds->id; + + edf->image_dir->sets = calloc(1, sizeof (Edje_Image_Directory_Set) * (max + 1)); + edf->image_dir->sets_count = max + 1; + + if (!edf->image_dir->sets && edf->image_dir->sets_count) + { + free(edf->image_dir->entries); + edf->image_dir->entries = NULL; + return EINA_FALSE; + } + + EINA_LIST_FREE(oedf->image_dir->sets, ds) + { + memcpy(edf->image_dir->sets + ds->id, + ds, + sizeof (Edje_Image_Directory_Set)); + free(ds); + } + + return EINA_TRUE; +} + +Edje_File * +_edje_file_convert(Eet_File *ef, Old_Edje_File *oedf) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Font_Directory_Entry *fnt; + Edje_File *edf; + Eina_List *l; + Old_Edje_Data *ed; + + if (oedf->version < 2) return NULL; + + edf = calloc(1, sizeof (Edje_File)); + if (!edf) return NULL; + + edf->free_strings = 0; + + edf->fonts = eina_hash_string_small_new(free); + edf->collection = eina_hash_string_small_new(free); + edf->data = eina_hash_string_small_new(free); + + if (!edf->fonts || !edf->collection || !edf->data) + goto on_error; + + EINA_LIST_FREE(oedf->data, ed) + { + Edje_String *es; + + es = calloc(1, sizeof (Edje_String)); + if (!es) continue; + + es->str = ed->value; + + eina_hash_direct_add(edf->data, ed->key, es); + free(ed); + } + + EINA_LIST_FOREACH(oedf->collection_dir->entries, l, ce) + if (ce->entry) + eina_hash_direct_add(edf->collection, ce->entry, ce); + else + error_and_abort(ef, "Collection %i: name missing.\n", ce->id); + + if (oedf->font_dir) + EINA_LIST_FOREACH(oedf->font_dir->entries, l, fnt) + eina_hash_direct_add(edf->fonts, fnt->entry, fnt); + + if (!_edje_file_convert_images(edf, oedf)) + goto on_error; + + if (!_edje_file_convert_external(edf, oedf)) + goto on_error; + + edf->styles = oedf->styles; + edf->color_classes = oedf->color_classes; + edf->version = EDJE_FILE_VERSION; + edf->feature_ver = oedf->feature_ver; + edf->compiler = oedf->compiler; + + edf->dangling = EINA_FALSE; + edf->warning = EINA_FALSE; + + /* Below you will find all memory structure that could be cleaned when under + memory pressure */ + edf->collection_cache = NULL; + edf->collection_patterns = NULL; + + return edf; + + on_error: + eina_hash_free(edf->fonts); + eina_hash_free(edf->collection); + eina_hash_free(edf->data); + free(edf->image_dir); + free(edf->external_dir); + free(edf); + return NULL; +} + +static void +_edje_collection_program_add(Edje_Program ***array, + unsigned int *count, + Edje_Program *add) +{ + Edje_Program **tmp; + + tmp = realloc(*array, sizeof (Edje_Program*) * (*count + 1)); + if (!tmp) return ; + + tmp[(*count)++] = add; + *array = tmp; +} + +Edje_Part_Collection * +_edje_collection_convert(Eet_File *ef, Edje_Part_Collection_Directory_Entry *ce, Old_Edje_Part_Collection *oedc) +{ + Edje_Part_Collection *edc; + Old_Edje_Part *part; + Edje_Program *pg; + Old_Edje_Data *di; + Eina_List *l; + char *buffer; + unsigned int k; + + oedc->part = ce->entry; + + /* Count each type part and their respective state */ + EINA_LIST_FOREACH(oedc->parts, l, part) + { + int *count; + int dummy = 0; + + + switch (part->type) + { +#define CSP(Tp, Ce) \ + case EDJE_PART_TYPE_##Tp : \ + count = &Ce->count.Tp; \ + break; + + CSP(RECTANGLE, ce); + CSP(TEXT, ce); + CSP(IMAGE, ce); + CSP(SWALLOW, ce); + CSP(TEXTBLOCK, ce); + CSP(GROUP, ce); + CSP(BOX, ce); + CSP(TABLE, ce); + CSP(EXTERNAL, ce); + default: + count = &dummy; + break; + } + + *count += eina_list_count(part->other_desc) + 1; + } + ce->count.part = eina_list_count(oedc->parts); + +#define CONVERT_EMN(Tp, Sz, Ce) \ + buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \ + sprintf(buffer, "%s/%s", ce->entry, #Tp); \ + Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); + + CONVERT_EMN(RECTANGLE, Edje_Part_Description_Common, ce); + CONVERT_EMN(TEXT, Edje_Part_Description_Text, ce); + CONVERT_EMN(IMAGE, Edje_Part_Description_Image, ce); + CONVERT_EMN(SWALLOW, Edje_Part_Description_Common, ce); + CONVERT_EMN(TEXTBLOCK, Edje_Part_Description_Text, ce); + CONVERT_EMN(GROUP, Edje_Part_Description_Common, ce); + CONVERT_EMN(BOX, Edje_Part_Description_Box, ce); + CONVERT_EMN(TABLE, Edje_Part_Description_Table, ce); + CONVERT_EMN(EXTERNAL, Edje_Part_Description_External, ce); + CONVERT_EMN(part, Edje_Part, ce); + + /* Change structure layout */ + edc = calloc(1, sizeof (Edje_Part_Collection)); + if (!edc) error_and_abort(ef, "Not enough memory"); + ce->ref = edc; + + EINA_LIST_FREE(oedc->programs, pg) + { + if (!pg->signal && !pg->source) + _edje_collection_program_add(&edc->programs.nocmp, + &edc->programs.nocmp_count, + pg); + else if (pg->signal && !strpbrk(pg->signal, "*?[\\") + && pg->source && !strpbrk(pg->source, "*?[\\")) + _edje_collection_program_add(&edc->programs.strcmp, + &edc->programs.strcmp_count, + pg); + else if (pg->signal && edje_program_is_strncmp(pg->signal) + && pg->source && edje_program_is_strncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strncmp, + &edc->programs.strncmp_count, + pg); + else if (pg->signal && edje_program_is_strrncmp(pg->signal) + && pg->source && edje_program_is_strrncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strrncmp, + &edc->programs.strrncmp_count, + pg); + else + _edje_collection_program_add(&edc->programs.fnmatch, + &edc->programs.fnmatch_count, + pg); + } + + edc->data = eina_hash_string_small_new(NULL); + EINA_LIST_FREE(oedc->data, di) + { + Edje_String *es; + + es = calloc(1, sizeof (Edje_String)); + if (!es) continue ; + + es->str = di->value; + + eina_hash_direct_add(edc->data, di->key, es); + free(di); + } + + edc->parts_count = eina_list_count(oedc->parts); + edc->parts = calloc(edc->parts_count, sizeof (Edje_Part *)); + if (edc->parts_count && !edc->parts) + error_and_abort(ef, "Not enough memory"); + k = 0; + + EINA_LIST_FREE(oedc->parts, part) + { + Old_Edje_Part_Description *oepd; + Edje_Pack_Element *elm; + Edje_Part *replacement; + unsigned int i; + + replacement = eina_mempool_malloc(ce->mp.part, sizeof (Edje_Part)); + if (!replacement) + error_and_abort(ef, "Not enough memory"); + + replacement->name = part->name; + replacement->default_desc = _edje_description_convert(part->type, ce, part->default_desc); + + replacement->other.desc_count = eina_list_count(part->other_desc); + replacement->other.desc = calloc(replacement->other.desc_count, sizeof (Edje_Part_Description_Common*)); + + i = 0; + EINA_LIST_FREE(part->other_desc, oepd) + replacement->other.desc[i++] = _edje_description_convert(part->type, ce, oepd); + + replacement->source = part->source; + replacement->source2 = part->source2; + replacement->source3 = part->source3; + replacement->source4 = part->source4; + replacement->source5 = part->source5; + replacement->source6 = part->source6; + replacement->id = part->id; + replacement->clip_to_id = part->clip_to_id; + replacement->dragable = part->dragable; + replacement->items_count = eina_list_count(part->items); + replacement->items = calloc(replacement->items_count, sizeof (Edje_Pack_Element*)); + + i = 0; + EINA_LIST_FREE(part->items, elm) + replacement->items[i++] = elm; + + replacement->type = part->type; + replacement->effect = part->effect; + replacement->mouse_events = part->mouse_events; + replacement->repeat_events = part->repeat_events; + replacement->ignore_flags = part->ignore_flags; + replacement->scale = part->scale; + replacement->precise_is_inside = part->precise_is_inside; + replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; + replacement->pointer_mode = part->pointer_mode; + replacement->entry_mode = part->entry_mode; + replacement->select_mode = part->select_mode; + replacement->multiline = part->multiline; + replacement->api = part->api; + + edc->parts[k++] = replacement; + + free(part); + } + + edc->id = oedc->id; + edc->alias = oedc->alias; + edc->prop.min = oedc->prop.min; + edc->prop.max = oedc->prop.max; + edc->script = oedc->script; + edc->part = oedc->part; + edc->script_only = oedc->script_only; + edc->lua_script_only = oedc->lua_script_only; + edc->checked = oedc->checked; + + free(oedc); + + return edc; +} + +Edje_Part_Description_Common* +_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed) +{ + Edje_Part_Description_Common *result = NULL; + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + result = eina_mempool_malloc(ce->mp.RECTANGLE, + sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_SWALLOW: + result = eina_mempool_malloc(ce->mp.SWALLOW, + sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_GROUP: + result = eina_mempool_malloc(ce->mp.GROUP, + sizeof (Edje_Part_Description_Common)); + break; + + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img; + Edje_Part_Image_Id *id; + unsigned int i = 0; + + img = eina_mempool_malloc(ce->mp.IMAGE, sizeof (Edje_Part_Description_Image)); + + img->image.tweens_count = eina_list_count(oed->image.tween_list); + img->image.tweens = calloc(img->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + if (img->image.tweens_count > 0 && !img->image.tweens) + { + eina_mempool_free(ce->mp.IMAGE, img); + return NULL; + } + + EINA_LIST_FREE(oed->image.tween_list, id) + img->image.tweens[i++] = id; + + img->image.id = oed->image.id; + img->image.scale_hint = oed->image.scale_hint; + img->image.set = oed->image.set; + + img->image.border = oed->image.border; + img->image.fill = oed->image.fill; + + result = &img->common; + break; + } + +#define CONVERT_ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + \ + Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ + Name->Name = oed->Name; \ + result = &Name->common; \ + break; \ + } + + CONVERT_ALLOC_POOL(TEXT, Text, text); + CONVERT_ALLOC_POOL(TEXTBLOCK, Text, text); + CONVERT_ALLOC_POOL(BOX, Box, box); + CONVERT_ALLOC_POOL(TABLE, Table, table); + CONVERT_ALLOC_POOL(EXTERNAL, External, external_params); + } + + if (result) + *result = oed->common; + + free(oed); + return result; +} diff --git a/src/bin/edje_convert.h b/src/bin/edje_convert.h new file mode 100644 index 0000000..0bbb38e --- /dev/null +++ b/src/bin/edje_convert.h @@ -0,0 +1,154 @@ +#ifndef EDJE_CONVERT_H__ +# define EDJE_CONVERT_H__ + + +typedef struct _Old_Edje_File Old_Edje_File; +typedef struct _Old_Edje_Image_Directory Old_Edje_Image_Directory; +typedef struct _Old_Edje_Font_Directory Old_Edje_Font_Directory; +typedef struct _Old_Edje_External_Directory Old_Edje_External_Directory; +typedef struct _Old_Edje_Part Old_Edje_Part; +typedef struct _Old_Edje_Part_Collection Old_Edje_Part_Collection; +typedef struct _Old_Edje_Part_Collection_Directory Old_Edje_Part_Collection_Directory; +typedef struct _Old_Edje_Part_Description Old_Edje_Part_Description; +typedef struct _Old_Edje_Part_Description_Spec_Image Old_Edje_Part_Description_Spec_Image; +typedef struct _Old_Edje_Data Old_Edje_Data; + +struct _Old_Edje_Data +{ + const char *key; + char *value; +}; + +/*----------*/ + +struct _Old_Edje_Font_Directory +{ + Eina_List *entries; /* a list of Edje_Font_Directory_Entry */ +}; + +struct _Old_Edje_Image_Directory +{ + Eina_List *entries; /* a list of Edje_Image_Directory_Entry */ + Eina_List *sets; /* a list of Edje_Image_Directory_Set */ +}; + +struct _Old_Edje_External_Directory +{ + Eina_List *entries; /* a list of Edje_External_Directory_Entry */ +}; + +struct _Old_Edje_File +{ + const char *path; + time_t mtime; + + Old_Edje_External_Directory *external_dir; + Old_Edje_Font_Directory *font_dir; + Old_Edje_Image_Directory *image_dir; + Old_Edje_Part_Collection_Directory *collection_dir; + Eina_List *data; + Eina_List *styles; + Eina_List *color_classes; + + const char *compiler; + int version; + int feature_ver; +}; + +struct _Old_Edje_Part_Collection +{ + Eina_List *programs; /* a list of Edje_Program */ + Eina_List *parts; /* a list of Edje_Part */ + Eina_List *data; + + int id; /* the collection id */ + + Eina_Hash *alias; /* aliasing part*/ + + struct { + Edje_Size min, max; + } prop; + + int references; +#ifdef EDJE_PROGRAM_CACHE + struct { + Eina_Hash *no_matches; + Eina_Hash *matches; + } prog_cache; +#endif + + Embryo_Program *script; /* all the embryo script code for this group */ + const char *part; + + unsigned char script_only; + + unsigned char lua_script_only; + + unsigned char checked : 1; +}; + +struct _Old_Edje_Part +{ + const char *name; /* the name if any of the part */ + Old_Edje_Part_Description *default_desc; /* the part descriptor for default */ + Eina_List *other_desc; /* other possible descriptors */ + const char *source, *source2, *source3, *source4, *source5, *source6; + int id; /* its id number */ + int clip_to_id; /* the part id to clip this one to */ + Edje_Part_Dragable dragable; + Eina_List *items; /* packed items for box and table */ + unsigned char type; /* what type (image, rect, text) */ + unsigned char effect; /* 0 = plain... */ + unsigned char mouse_events; /* it will affect/respond to mouse events */ + unsigned char repeat_events; /* it will repeat events to objects below */ + Evas_Event_Flags ignore_flags; + unsigned char scale; /* should certain properties scale with edje scale factor? */ + unsigned char precise_is_inside; + unsigned char use_alternate_font_metrics; + unsigned char pointer_mode; + unsigned char entry_mode; + unsigned char select_mode; + unsigned char multiline; + Edje_Part_Api api; +}; + +struct _Old_Edje_Part_Description_Spec_Image +{ + Eina_List *tween_list; /* list of Edje_Part_Image_Id */ + int id; /* the image id to use */ + int scale_hint; /* evas scale hint */ + Eina_Bool set; /* if image condition it's content */ + + Edje_Part_Description_Spec_Border border; + Edje_Part_Description_Spec_Fill fill; +}; + +struct _Old_Edje_Part_Description +{ + Edje_Part_Description_Common common; + Old_Edje_Part_Description_Spec_Image image; + Edje_Part_Description_Spec_Text text; + Edje_Part_Description_Spec_Box box; + Edje_Part_Description_Spec_Table table; + + Eina_List *external_params; /* parameters for external objects */ +}; + +struct _Old_Edje_Part_Collection_Directory +{ + Eina_List *entries; /* a list of Edje_Part_Collection_Directory_Entry */ + + int references; +}; + +Edje_File *_edje_file_convert(Eet_File *ef, Old_Edje_File *oedf); +Edje_Part_Collection *_edje_collection_convert(Eet_File *ef, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Collection *oedc); +Edje_Part_Description_Common *_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed); +const Edje_File *_edje_file_get(void); +void _edje_file_set(const Edje_File *edf); + +#endif diff --git a/src/bin/edje_convert_main.c b/src/bin/edje_convert_main.c new file mode 100644 index 0000000..e17d412 --- /dev/null +++ b/src/bin/edje_convert_main.c @@ -0,0 +1,205 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#include + +#include "edje_cc.h" +#include "edje_convert.h" + +extern Eet_Data_Descriptor *_edje_edd_old_edje_file; +extern Eet_Data_Descriptor *_edje_edd_old_edje_part_collection; + +void _edje_edd_old_shutdown(void); +void _edje_edd_old_init(void); + +char *progname = NULL; +int _edje_cc_log_dom = -1; + +void +error_and_abort(Eet_File *ef, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + eina_log_vprint(_edje_cc_log_dom, EINA_LOG_LEVEL_CRITICAL, + "unknown", "unknown", 0, fmt, ap); + va_end(ap); + eet_close(ef); + exit(-1); +} + +static void +main_help(void) +{ + printf + ("Usage:\n" + "\t%s file.edj\n" + "\n" + ,progname); +} + +static void +_edje_alias_int(const char *target, Eet_File *ef, const char *base, const char *to) +{ + char buf[1024]; + char **match; + int count; + int i; + + snprintf(buf, sizeof (buf), "%s/*", base); + match = eet_list(ef, buf, &count); + + snprintf(buf, sizeof (buf), "%s/", base); + strcat(buf, "%i"); + for (i = 0; i < count && match; ++i) + { + char name[1024]; + int id; + + if (sscanf(match[i], buf, &id) != 1) + { + EINA_LOG_ERR("Wrong fonts section `%s' in `%s'. Discarding it.", match[i], target); + continue ; + } + + snprintf(name, sizeof (name), "%s/%i", to, id); + eet_alias(ef, name, match[i], 1); + } + free(match); +} + +static void +_edje_alias_string(const char *target, Eet_File *ef, const char *base, const char *to) +{ + char buf[1024]; + char **match; + int count; + int i; + + snprintf(buf, sizeof (buf), "%s/*", base); + match = eet_list(ef, buf, &count); + + snprintf(buf, sizeof (buf), "%s/", base); + strcat(buf, "%s"); + for (i = 0; i < count && match; ++i) + { + char name[1024]; + char id[1024]; + + if (sscanf(match[i], buf, &id) != 1) + { + EINA_LOG_ERR("Wrong fonts section `%s' in `%s'. Discarding it.", match[i], target); + continue ; + } + + snprintf(name, sizeof (name), "%s/%s", to, id); + eet_alias(ef, name, match[i], 1); + } + free(match); +} + +int +main(int argc, char **argv) +{ + Edje_Part_Collection_Directory_Entry *ce; + Old_Edje_File *oef; + Edje_File *nef; + Eina_Iterator *it; + Eet_File *ef; + + setlocale(LC_NUMERIC, "C"); + + if (!eina_init()) + return -1; + + _edje_cc_log_dom = eina_log_domain_register + ("edje_convert", EDJE_CC_DEFAULT_LOG_COLOR); + if (_edje_cc_log_dom < 0) + { + EINA_LOG_ERR("Enable to create a log domain."); + exit(-1); + } + + eet_init(); + + progname = argv[0]; + if (argc > 2 || argc < 2 || !strcmp(argv[1], "-h")) + { + main_help(); + return 0; + } + + _edje_edd_old_init(); + _edje_edd_init(); + + ef = eet_open(argv[1], EET_FILE_MODE_READ_WRITE); + if (!ef) + { + EINA_LOG_ERR("Unable to open `%s'.", argv[1]); + return -1; + } + + oef = eet_data_read(ef, _edje_edd_old_edje_file, "edje_file"); + if (!oef) + { + EINA_LOG_ERR("Unable to get edje_file section from old file format, are you sure it's an old file ?"); + return -1; + } + + nef = _edje_file_convert(ef, oef); + _edje_file_set(nef); + + /* convert old structure to new one */ + it = eina_hash_iterator_data_new(nef->collection); + + EINA_ITERATOR_FOREACH(it, ce) + { + Old_Edje_Part_Collection *opc; + Edje_Part_Collection *npc; + char buf[1024]; + int bytes = 0; + + snprintf(buf, sizeof (buf), "collections/%i", ce->id); + opc = eet_data_read(ef, _edje_edd_old_edje_part_collection, buf); + if (!opc) + { + EINA_LOG_ERR("Unable to find collection `%s'[%i] in `%s'.", ce->entry, ce->id, argv[1]); + return -1; + } + + npc = _edje_collection_convert(ef, ce, opc); + + snprintf(buf, sizeof (buf), "edje/collections/%i", ce->id); + bytes = eet_data_write(ef, _edje_edd_edje_part_collection, buf, npc, 1); + if (bytes <= 0) + { + EINA_LOG_ERR("Unable to save `%s' in section `%s' of `%s'.", ce->entry, buf, argv[1]); + return -1; + } + } + + if (eet_data_write(ef, _edje_edd_edje_file, "edje/file", nef, 1) <= 0) + { + EINA_LOG_ERR("Unable to save main section of `%s'.", argv[1]); + return -1; + } + + _edje_alias_string(argv[1], ef, "fonts", "edje/fonts"); + _edje_alias_int(argv[1], ef, "images", "edje/images"); + _edje_alias_int(argv[1], ef, "scripts", "edje/scripts/embryo/compiled"); + _edje_alias_int(argv[1], ef, "lua_script", "edje/scripts/lua"); + + eet_close(ef); + + _edje_edd_shutdown(); + _edje_edd_old_shutdown(); + + eet_shutdown(); + eina_shutdown(); + + return 0; +} diff --git a/src/bin/edje_data_convert.c b/src/bin/edje_data_convert.c new file mode 100644 index 0000000..5fb129e --- /dev/null +++ b/src/bin/edje_data_convert.c @@ -0,0 +1,451 @@ +#include "edje_private.h" +#include "edje_convert.h" + +Eet_Data_Descriptor *_edje_edd_old_edje_file = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_style = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_style_tag = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_color_class = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_data = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_external_directory = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_external_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_font_directory = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_font_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_image_directory = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_image_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_image_directory_set = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_image_directory_set_entry = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_program = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_program_target = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_program_after = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part_collection_directory = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part_collection_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_pack_element = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part_collection = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part_description = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_part_image_id = NULL; +Eet_Data_Descriptor *_edje_edd_old_edje_external_param = NULL; + +#define FREED(eed) \ + if (eed) \ + { \ + eet_data_descriptor_free((eed)); \ + (eed) = NULL; \ + } + +void +_edje_edd_old_shutdown(void) +{ + FREED(_edje_edd_old_edje_file); + FREED(_edje_edd_old_edje_style); + FREED(_edje_edd_old_edje_style_tag); + FREED(_edje_edd_old_edje_color_class); + FREED(_edje_edd_old_edje_data); + FREED(_edje_edd_old_edje_external_directory); + FREED(_edje_edd_old_edje_external_directory_entry); + FREED(_edje_edd_old_edje_font_directory); + FREED(_edje_edd_old_edje_font_directory_entry); + FREED(_edje_edd_old_edje_image_directory); + FREED(_edje_edd_old_edje_image_directory_entry); + FREED(_edje_edd_old_edje_program); + FREED(_edje_edd_old_edje_program_target); + FREED(_edje_edd_old_edje_program_after); + FREED(_edje_edd_old_edje_part_collection_directory); + FREED(_edje_edd_old_edje_part_collection_directory_entry); + FREED(_edje_edd_old_edje_pack_element); + FREED(_edje_edd_old_edje_part_collection); + FREED(_edje_edd_old_edje_part); + FREED(_edje_edd_old_edje_part_description); + FREED(_edje_edd_old_edje_part_image_id); + FREED(_edje_edd_old_edje_external_param); + FREED(_edje_edd_old_edje_image_directory_set); + FREED(_edje_edd_old_edje_image_directory_set_entry); +} + +void +_edje_edd_old_init(void) +{ + Eet_Data_Descriptor_Class eddc; + + /* external directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Directory_Entry); + _edje_edd_old_edje_external_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_directory_entry, Edje_External_Directory_Entry, "entry", entry, EET_T_STRING); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_External_Directory", + sizeof (Old_Edje_External_Directory)); + _edje_edd_old_edje_external_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_external_directory, Edje_External_Directory, "entries", entries, _edje_edd_old_edje_external_directory_entry); + + /* font directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Font_Directory_Entry); + _edje_edd_old_edje_font_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_font_directory_entry, Edje_Font_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_font_directory_entry, Edje_Font_Directory_Entry, "file", file, EET_T_STRING); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_Font_Directory", + sizeof (Old_Edje_Font_Directory)); + _edje_edd_old_edje_font_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_font_directory, Old_Edje_Font_Directory, "entries", entries, _edje_edd_old_edje_font_directory_entry); + + /* image directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Entry); + _edje_edd_old_edje_image_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_entry, Edje_Image_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_type", source_type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_param", source_param, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_entry, Edje_Image_Directory_Entry, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Set_Entry); + _edje_edd_old_edje_image_directory_set_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "min.w", size.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "min.h", size.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "max.w", size.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "max.h", size.max.h, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Set); + _edje_edd_old_edje_image_directory_set = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set, Edje_Image_Directory_Set, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_image_directory_set, Edje_Image_Directory_Set, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_image_directory_set, Edje_Image_Directory_Set, "entries", entries, _edje_edd_old_edje_image_directory_set_entry); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_Image_Directory", + sizeof (Old_Edje_Image_Directory)); + _edje_edd_old_edje_image_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_image_directory, Old_Edje_Image_Directory, "entries", entries, _edje_edd_old_edje_image_directory_entry); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_image_directory, Old_Edje_Image_Directory, "sets", sets, _edje_edd_old_edje_image_directory_set); + + /* collection directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection_Directory_Entry); + _edje_edd_old_edje_part_collection_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "id", id, EET_T_INT); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_Part_Collection_Directory", + sizeof (Old_Edje_Part_Collection_Directory)); + _edje_edd_old_edje_part_collection_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_collection_directory, Old_Edje_Part_Collection_Directory, "entries", entries, _edje_edd_old_edje_part_collection_directory_entry); + + /* generic data attachment */ + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_Data", sizeof (Old_Edje_Data)); + _edje_edd_old_edje_data = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_data, Old_Edje_Data, "key", key, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_data, Old_Edje_Data, "value", value, EET_T_STRING); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style_Tag); + _edje_edd_old_edje_style_tag = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_style_tag, Edje_Style_Tag, "key", key, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_style_tag, Edje_Style_Tag, "value", value, EET_T_STRING); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style); + _edje_edd_old_edje_style = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_style, Edje_Style, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_style, Edje_Style, "tags", tags, _edje_edd_old_edje_style_tag); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Color_Class); + _edje_edd_old_edje_color_class = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "r", r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "g", g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "b", b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "a", a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "r2", r2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "g2", g2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "b2", b2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "a2", a2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "r3", r3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "g3", g3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "b3", b3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_color_class, Edje_Color_Class, "a3", a3, EET_T_UCHAR); + + /* the main file directory */ + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), + "Edje_File", sizeof (Old_Edje_File)); + _edje_edd_old_edje_file = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_file, Old_Edje_File, "compiler", compiler, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_file, Old_Edje_File, "version", version, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_file, Old_Edje_File, "feature_ver", feature_ver, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_old_edje_file, Old_Edje_File, "external_dir", external_dir, _edje_edd_old_edje_external_directory); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_old_edje_file, Old_Edje_File, "font_dir", font_dir, _edje_edd_old_edje_font_directory); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_old_edje_file, Old_Edje_File, "image_dir", image_dir, _edje_edd_old_edje_image_directory); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_old_edje_file, Old_Edje_File, "collection_dir", collection_dir, _edje_edd_old_edje_part_collection_directory); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_file, Old_Edje_File, "data", data, _edje_edd_old_edje_data); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_file, Old_Edje_File, "styles", styles, _edje_edd_old_edje_style); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_file, Old_Edje_File, "color_classes", color_classes, _edje_edd_old_edje_color_class); + + /* parts & programs - loaded induvidually */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program_Target); + _edje_edd_old_edje_program_target = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program_target, Edje_Program_Target, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program_After); + _edje_edd_old_edje_program_after = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program_after, + Edje_Program_After, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program); + _edje_edd_old_edje_program = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "signal", signal, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "filter_part", filter.part, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "filter_state", filter.state, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "in.from", in.from, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "in.range", in.range, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "action", action, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "state", state, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "state2", state2, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "value", value, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "value2", value2, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "tween.mode", tween.mode, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "tween.time", tween.time, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_program, Edje_Program, "targets", targets, _edje_edd_old_edje_program_target); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_program, Edje_Program, "after", after, _edje_edd_old_edje_program_after); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "api.name", api.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "api.description", api.description, EET_T_STRING); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "param.src", param.src, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_program, Edje_Program, "param.dst", param.dst, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Image_Id); + _edje_edd_old_edje_part_image_id = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_image_id, Edje_Part_Image_Id, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_image_id, Edje_Part_Image_Id, "set", set, EET_T_UCHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Param); + _edje_edd_old_edje_external_param = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_param, Edje_External_Param, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_param, Edje_External_Param, "type", type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_param, Edje_External_Param, "i", i, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_param, Edje_External_Param, "d", d, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_external_param, Edje_External_Param, "s", s, EET_T_STRING); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Edje_Part_Description", sizeof (Old_Edje_Part_Description)); + _edje_edd_old_edje_part_description = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "state.name", common.state.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "state.value", common.state.value, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "visible", common.visible, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "align.x", common.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "align.y", common.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fixed.w", common.fixed.w, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fixed.h", common.fixed.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "min.w", common.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "min.h", common.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "max.w", common.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "max.h", common.max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "step.x", common.step.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "step.y", common.step.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "aspect.min", common.aspect.min, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "aspect.max", common.aspect.max, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "aspect.prefer", common.aspect.prefer, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.relative_x", common.rel1.relative_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.relative_y", common.rel1.relative_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.offset_x", common.rel1.offset_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.offset_y", common.rel1.offset_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.id_x", common.rel1.id_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel1.id_y", common.rel1.id_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.relative_x", common.rel2.relative_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.relative_y", common.rel2.relative_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.offset_x", common.rel2.offset_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.offset_y", common.rel2.offset_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.id_x", common.rel2.id_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "rel2.id_y", common.rel2.id_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "image.id", image.id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "image.set", image.set, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "image.tween_list", image.tween_list, _edje_edd_old_edje_part_image_id); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.l", image.border.l, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.r", image.border.r, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.t", image.border.t, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.b", image.border.b, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.no_fill", image.border.no_fill, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "border.scale", image.border.scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.smooth", image.fill.smooth, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.pos_rel_x", image.fill.pos_rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.pos_abs_x", image.fill.pos_abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.rel_x", image.fill.rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.abs_x", image.fill.abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.pos_rel_y", image.fill.pos_rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.pos_abs_y", image.fill.pos_abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.rel_y", image.fill.rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.abs_y", image.fill.abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.angle", image.fill.angle, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.spread", image.fill.spread, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "fill.type", image.fill.type, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color_class", common.color_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color.r", common.color.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color.g", common.color.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color.b", common.color.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color.a", common.color.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color2.r", common.color2.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color2.g", common.color2.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color2.b", common.color2.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color2.a", common.color2.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.r", text.color3.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.g", text.color3.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.b", text.color3.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.a", text.color3.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.text", text.text.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.text_class", text.text_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.style", text.style.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.font", text.font.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.repch", text.repch.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.size", text.size, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.min_x", text.min_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.min_y", text.min_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.max_x", text.max_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.max_y", text.max_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.align.x", text.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.align.y", text.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.id_source", text.id_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.id_text_source", text.id_text_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.elipsis", text.elipsis, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.layout", box.layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.alt_layout", box.alt_layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.align.x", box.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.align.y", box.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.padding.x", box.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.padding.y", box.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.min.h", box.min.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "box.min.v", box.min.v, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "table.homogeneous", table.homogeneous, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "table.align.x", table.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "table.align.y", table.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "table.padding.x", table.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "table.padding.y", table.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.id_persp", common.map.id_persp, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.id_light", common.map.id_light, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.rot.id_center", common.map.rot.id_center, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.rot.x", common.map.rot.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.rot.y", common.map.rot.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.rot.z", common.map.rot.z, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.on", common.map.on, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.smooth", common.map.smooth, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.alpha", common.map.alpha, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.persp_on", common.map.persp_on, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "map.backcull", common.map.backcull, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "persp.zplane", common.persp.zplane, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "persp.focal", common.persp.focal, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "external_params", external_params, _edje_edd_old_edje_external_param); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Pack_Element); + _edje_edd_old_edje_pack_element = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "type", type, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "min.w", min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "min.h", min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "prefer.w", prefer.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "prefer.h", prefer.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "max.w", max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "max.h", max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "padding.l", padding.l, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "padding.r", padding.r, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "padding.t", padding.t, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "padding.b", padding.b, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "align.x", align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "align.y", align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "weight.x", weight.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "weight.y", weight.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "aspect.w", aspect.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "aspect.h", aspect.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "aspect.mode", aspect.mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "options", options, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "col", col, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "row", row, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "colspan", colspan, EET_T_USHORT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_pack_element, Edje_Pack_Element, "rowspan", rowspan, EET_T_USHORT); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Edje_Part", sizeof (Old_Edje_Part)); + _edje_edd_old_edje_part = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "type", type, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "effect", effect, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "mouse_events", mouse_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "scale", scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "clip_to_id", clip_to_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "use_alternate_font_metrics", use_alternate_font_metrics, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_old_edje_part, Old_Edje_Part, "default_desc", default_desc, _edje_edd_old_edje_part_description); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part, Old_Edje_Part, "other_desc", other_desc, _edje_edd_old_edje_part_description); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.x", dragable.x, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.step_x", dragable.step_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.count_x", dragable.count_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.y", dragable.y, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.step_y", dragable.step_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.count_y", dragable.count_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "dragable.events_id", dragable.event_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "entry_mode", entry_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "select_mode", select_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "multiline", multiline, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source2", source2, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source3", source3, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source4", source4, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source5", source5, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "source6", source6, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part, Old_Edje_Part, "items", items, _edje_edd_old_edje_pack_element); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "api.name", api.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part, Old_Edje_Part, "api.description", api.description, EET_T_STRING); + + eet_eina_file_data_descriptor_class_set(&eddc, sizeof (eddc), "Edje_Part_Collection", sizeof (Old_Edje_Part_Collection)); + _edje_edd_old_edje_part_collection = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "programs", programs, _edje_edd_old_edje_program); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "parts", parts, _edje_edd_old_edje_part); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "data", data, _edje_edd_old_edje_data); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "prop.max.h", prop.max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "script_only", script_only, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_collection, Old_Edje_Part_Collection, "lua_script_only", lua_script_only, EET_T_UCHAR); + + { + Old_Edje_Part_Collection epc; + + eet_data_descriptor_element_add(_edje_edd_old_edje_part_collection, + "alias", EET_T_STRING, EET_G_HASH, + (char *)(&(epc.alias)) - (char *)(&(epc)), + 0, /* 0, */NULL, NULL); + } +} diff --git a/src/bin/edje_decc.c b/src/bin/edje_decc.c new file mode 100644 index 0000000..01ece6a --- /dev/null +++ b/src/bin/edje_decc.c @@ -0,0 +1,558 @@ +/* ugly ugly. avert your eyes. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include +#include +#include +#include + + +#include +#include + +#include "edje_decc.h" + +int _edje_cc_log_dom = -1; +static const char *progname = NULL; +char *file_in = NULL; +char *file_out = NULL; +int compress_mode = EET_COMPRESSION_DEFAULT; + +Edje_File *edje_file = NULL; +SrcFile_List *srcfiles = NULL; +Font_List *fontlist = NULL; + +int line = 0; +int build_sh = 1; +int new_dir = 1; + +int decomp(void); +void output(void); +static int compiler_cmd_is_sane(); +static int root_filename_is_sane(); + + +static void +_edje_cc_log_cb(const Eina_Log_Domain *d, + Eina_Log_Level level, + const char *file, + const char *fnc, + int line, + const char *fmt, + __UNUSED__ void *data, + va_list args) +{ + if ((d->name) && (d->namelen == sizeof("edje_decc") - 1) && + (memcmp(d->name, "edje_decc", sizeof("edje_decc") - 1) == 0)) + { + const char *prefix; + Eina_Bool use_color = !eina_log_color_disable_get(); + + if (use_color) + { +#ifndef _WIN32 + fputs(eina_log_level_color_get(level), stderr); +#else + int color; + switch (level) + { + case EINA_LOG_LEVEL_CRITICAL: + color = FOREGROUND_RED | FOREGROUND_INTENSITY; + break; + case EINA_LOG_LEVEL_ERR: + color = FOREGROUND_RED; + break; + case EINA_LOG_LEVEL_WARN: + color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; + break; + case EINA_LOG_LEVEL_INFO: + color = FOREGROUND_GREEN | FOREGROUND_INTENSITY; + break; + case EINA_LOG_LEVEL_DBG: + color = FOREGROUND_BLUE | FOREGROUND_INTENSITY; + break; + default: + color = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; + } + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color); +#endif + } + + switch (level) + { + case EINA_LOG_LEVEL_CRITICAL: + prefix = "Critical. "; + break; + case EINA_LOG_LEVEL_ERR: + prefix = "Error. "; + break; + case EINA_LOG_LEVEL_WARN: + prefix = "Warning. "; + break; + default: + prefix = ""; + } + fprintf(stderr, "%s: %s", progname, prefix); + + if (use_color) + { +#ifndef _WIN32 + fputs(EINA_COLOR_RESET, stderr); +#else + SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), + FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); +#endif + } + + + vfprintf(stderr, fmt, args); + putc('\n', stderr); + } + else + eina_log_print_cb_stderr(d, level, file, fnc, line, fmt, NULL, args); +} + +static void +main_help(void) +{ + printf + ("Usage:\n" + "\t%s input_file.edj [-main-out file.edc] [-no-build-sh] [-current-dir]\n" + "\n" + " -main-out\tCreate a symbolic link to the main edc \n" + " -no-build-sh\tDon't output build.sh \n" + " -current-dir\tOutput to current directory \n" + " -quiet\t\tProduce less output\n" + "\n" + ,progname); +} + +Eet_File *ef; +Eet_Dictionary *ed; + +int +main(int argc, char **argv) +{ + int i; + + setlocale(LC_NUMERIC, "C"); + if (!eina_init()) + exit(-1); + _edje_cc_log_dom = eina_log_domain_register + ("edje_decc", EDJE_CC_DEFAULT_LOG_COLOR); + if (_edje_cc_log_dom < 0) + { + EINA_LOG_ERR("Impossible to create a log domain."); + eina_shutdown(); + exit(-1); + } + progname = ecore_file_file_get(argv[0]); + eina_log_print_cb_set(_edje_cc_log_cb, NULL); + eina_log_domain_level_set("edje_decc", EINA_LOG_LEVEL_INFO); + + for (i = 1; i < argc; i++) + { + if (!strcmp(argv[i], "-h")) + { + main_help(); + exit(0); + } + if (!file_in) + file_in = argv[i]; + else if ((!strcmp(argv[i], "-main-out")) && (i < (argc - 1))) + { + i++; + file_out = argv[i]; + } + else if (!strcmp(argv[i], "-no-build-sh")) + build_sh = 0; + else if (!strcmp(argv[i], "-current-dir")) + new_dir = 0; + else if (!strcmp(argv[i], "-quiet")) + eina_log_domain_level_set("edje_decc", EINA_LOG_LEVEL_WARN); + } + if (!file_in) + { + ERR("no input file specified."); + main_help(); + exit(-1); + } + + if (!edje_init()) + exit(-1); + source_edd(); + + if (!decomp()) return -1; + output(); + + WRN("If any Image or audio data was encoded in a LOSSY way, then " + "re-encoding will drop quality even more. " + "You need access to the original data to ensure no loss of quality."); + eet_close(ef); + edje_shutdown(); + eina_log_domain_unregister(_edje_cc_log_dom); + _edje_cc_log_dom = -1; + eina_shutdown(); + return 0; +} + +int +decomp(void) +{ + ef = eet_open(file_in, EET_FILE_MODE_READ); + if (!ef) + { + ERR("cannot open %s", file_in); + return 0; + } + + srcfiles = source_load(ef); + if (!srcfiles || !srcfiles->list) + { + ERR("%s has no decompile information", file_in); + eet_close(ef); + return 0; + } + if (!eina_list_data_get(srcfiles->list) || !root_filename_is_sane()) + { + ERR("Invalid root filename: '%s'", (char *) eina_list_data_get(srcfiles->list)); + eet_close(ef); + return 0; + } + edje_file = eet_data_read(ef, _edje_edd_edje_file, "edje/file"); + if (!edje_file) + { + ERR("%s does not appear to be an edje file", file_in); + eet_close(ef); + return 0; + } + /* force compiler to be edje_cc */ + edje_file->compiler = strdup("edje_cc"); + if (!edje_file->compiler) + { + edje_file->compiler = strdup("edje_cc"); + } + else if (!compiler_cmd_is_sane()) + { + ERR("invalid compiler executable: '%s'", edje_file->compiler); + eet_close(ef); + return 0; + } + fontlist = source_fontmap_load(ef); + return 1; +} + +void +output(void) +{ + Eina_List *l; + Eet_File *tef; + SrcFile *sf; + char *outdir, *p; + + if (!new_dir) + outdir = strdup("."); + else + { + p = strrchr(file_in, '/'); + if (p) + outdir = strdup(p + 1); + else + outdir = strdup(file_in); + p = strrchr(outdir, '.'); + if (p) *p = 0; + ecore_file_mkpath(outdir); + } + + + tef = eet_open(file_in, EET_FILE_MODE_READ); + + if (edje_file->image_dir) + { + Edje_Image_Directory_Entry *ei; + unsigned int i; + + for (i = 0; i < edje_file->image_dir->entries_count; ++i) + { + ei = &edje_file->image_dir->entries[i]; + + if ((ei->source_type > EDJE_IMAGE_SOURCE_TYPE_NONE) && + (ei->source_type < EDJE_IMAGE_SOURCE_TYPE_LAST) && + (ei->source_type != EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) && + (ei->entry)) + { + Ecore_Evas *ee; + Evas *evas; + Evas_Object *im; + char buf[4096]; + char out[4096]; + char *pp; + + ecore_init(); + ecore_evas_init(); + ee = ecore_evas_buffer_new(1, 1); + if (!ee) + { + ERR("Cannot create buffer engine canvas for image save."); + exit(-1); + } + evas = ecore_evas_get(ee); + im = evas_object_image_add(evas); + if (!im) + { + ERR("Cannot create image object for save."); + exit(-1); + } + snprintf(buf, sizeof(buf), "edje/images/%i", ei->id); + evas_object_image_file_set(im, file_in, buf); + snprintf(out, sizeof(out), "%s/%s", outdir, ei->entry); + INF("Output Image: %s", out); + pp = strdup(out); + p = strrchr(pp, '/'); + *p = 0; + if (strstr(pp, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit(-1); + } + ecore_file_mkpath(pp); + free(pp); + if (!evas_object_image_save(im, out, NULL, "quality=100 compress=9")) + { + ERR("Cannot write file %s. Perhaps missing JPEG or PNG saver modules for Evas.", out); + exit(-1); + } + evas_object_del(im); + ecore_evas_free(ee); + ecore_evas_shutdown(); + ecore_shutdown(); + } + } + } + + EINA_LIST_FOREACH(srcfiles->list, l, sf) + { + char out[4096]; + FILE *f; + char *pp; + + snprintf(out, sizeof(out), "%s/%s", outdir, sf->name); + INF("Output Source File: %s", out); + pp = strdup(out); + p = strrchr(pp, '/'); + *p = 0; + if (strstr(pp, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit (-1); + } + ecore_file_mkpath(pp); + free(pp); + if (strstr(out, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit (-1); + } + f = fopen(out, "wb"); + if (!f) + { + ERR("Unable to write file (%s).", out); + exit (-1); + } + + /* if the file is empty, sf->file will be NULL. + * note that that's not an error + */ + if (sf->file) fputs(sf->file, f); + fclose(f); + } + if (edje_file->fonts) + { + Edje_Font_Directory_Entry *fn; + Eina_Iterator *it; + + it = eina_hash_iterator_data_new(edje_file->fonts); + EINA_ITERATOR_FOREACH(it, fn) + { + void *font; + int fontsize; + char out[4096]; + /* FIXME!!!! */ + /* should be fn->entry -v */ + snprintf(out, sizeof(out), "edje/fonts/%s", fn->file); + font = eet_read(tef, out, &fontsize); + if (font) + { + FILE *f; + char *pp; + + /* should be fn->file -v */ + snprintf(out, sizeof(out), "%s/%s", outdir, fn->entry); + INF("Output Font: %s", out); + pp = strdup(out); + p = strrchr(pp, '/'); + *p = 0; + if (strstr(pp, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit (-1); + } + ecore_file_mkpath(pp); + free(pp); + if (strstr(out, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit (-1); + } + if (!(f = fopen(out, "wb"))) + { + ERR("Could not open file: %s", out); + exit (-1); + } + if (fwrite(font, fontsize, 1, f) != 1) + ERR("Could not write font: %s", strerror(errno)); + if (f) fclose(f); + free(font); + } + } + eina_iterator_free(it); + } + { + char out[4096]; + FILE *f; + sf = eina_list_data_get(srcfiles->list); + + + if (build_sh) + { + snprintf(out, sizeof(out), "%s/build.sh", outdir); + INF("Output Build Script: %s", out); + if (strstr(out, "../")) + { + ERR("potential security violation. attempt to write in parent dir."); + exit (-1); + } + f = fopen(out, "wb"); + fprintf(f, "#!/bin/sh\n"); + fprintf(f, "%s $@ -id . -fd . %s -o %s.edj\n", edje_file->compiler, sf->name, outdir); + fclose(f); + + WRN("*** CAUTION ***\n" + "Please check the build script for anything malicious " + "before running it!\n\n"); + } + + if (file_out) + { + snprintf(out, sizeof(out), "%s/%s", outdir, file_out); + if (ecore_file_symlink(sf->name, out) != EINA_TRUE) + { + ERR("symlink %s -> %s failed", sf->name, out); + } + } + + chmod(out, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP); + + } + + if (edje_file->sound_dir) + { + Edje_Sound_Sample *sample; + void *sound_data; + char out[PATH_MAX]; + char out1[PATH_MAX]; + char *pp; + int sound_data_size; + FILE *f; + int i; + + for (i = 0; i < (int)edje_file->sound_dir->samples_count; i++) + { + sample = &edje_file->sound_dir->samples[i]; + if ((!sample) || (!sample->name)) continue; + snprintf(out, sizeof(out), "edje/sounds/%i", sample->id); + sound_data = (void *)eet_read_direct(tef, out, &sound_data_size); + if (sound_data) + { + snprintf(out1, sizeof(out1), "%s/%s", outdir, sample->snd_src); + pp = strdup(out1); + p = strrchr(pp, '/'); + *p = 0; + if (strstr(pp, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit(-1); + } + ecore_file_mkpath(pp); + free(pp); + if (strstr(out, "../")) + { + ERR("Potential security violation. attempt to write in parent dir."); + exit(-1); + } + f = fopen(out1, "wb"); + if (fwrite(sound_data, sound_data_size, 1, f) != 1) + ERR("Could not write sound: %s", strerror(errno)); + fclose(f); + } + } + + } + eet_close(tef); +} + +static int +compiler_cmd_is_sane() +{ + const char *c = edje_file->compiler, *ptr; + + if ((!c) || (!*c)) + { + return 0; + } + + for (ptr = c; ptr && *ptr; ptr++) + { + /* only allow [a-z][A-Z][0-9]_- */ + if ((!isalnum(*ptr)) && (*ptr != '_') && (*ptr != '-')) + { + return 0; + } + } + + return 1; +} + +static int +root_filename_is_sane() +{ + SrcFile *sf = eina_list_data_get(srcfiles->list); + char *f = sf->name, *ptr; + + if (!f || !*f) + { + return 0; + } + + for (ptr = f; ptr && *ptr; ptr++) + { + /* only allow [a-z][A-Z][0-9]_-./ */ + switch (*ptr) + { + case '_': case '-': case '.': case '/': + break; + default: + if (!isalnum(*ptr)) + { + return 0; + } + } + } + return 1; +} diff --git a/src/bin/edje_decc.h b/src/bin/edje_decc.h new file mode 100644 index 0000000..c562715 --- /dev/null +++ b/src/bin/edje_decc.h @@ -0,0 +1,70 @@ +#ifndef EDJE_DECC_H +#define EDJE_DECC_H + +#include + +/* logging variables */ +extern int _edje_cc_log_dom ; +#define EDJE_CC_DEFAULT_LOG_COLOR EINA_COLOR_CYAN + +#ifdef ERR +# undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_edje_cc_log_dom, __VA_ARGS__) +#ifdef INF +# undef INF +#endif +#define INF(...) EINA_LOG_DOM_INFO(_edje_cc_log_dom, __VA_ARGS__) +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_edje_cc_log_dom, __VA_ARGS__) +#ifdef CRIT +# undef CRIT +#endif +#define CRIT(...) EINA_LOG_DOM_CRIT(_edje_cc_log_dom, __VA_ARGS__) +#ifdef DBG +# undef DBG +#endif +#define DBG(...) EINA_LOG_DOM_DBG(_edje_cc_log_dom, __VA_ARGS__) + +/* types */ +typedef struct _Font Font; +typedef struct _Font_List Font_List; +typedef struct _SrcFile SrcFile; +typedef struct _SrcFile_List SrcFile_List; + +struct _Font +{ + char *file; + char *name; +}; + +struct _Font_List +{ + Eina_List *list; +}; + +struct _SrcFile +{ + char *name; + char *file; +}; + +struct _SrcFile_List +{ + Eina_List *list; +}; + +void source_edd(void); +void source_fetch(void); +int source_append(Eet_File *ef); +SrcFile_List *source_load(Eet_File *ef); +int source_fontmap_save(Eet_File *ef, Eina_List *fonts); +Font_List *source_fontmap_load(Eet_File *ef); + +void *mem_alloc(size_t size); +char *mem_strdup(const char *s); +#define SZ sizeof + +#endif diff --git a/src/bin/edje_external_inspector.c b/src/bin/edje_external_inspector.c new file mode 100644 index 0000000..6bd9a35 --- /dev/null +++ b/src/bin/edje_external_inspector.c @@ -0,0 +1,663 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include +#include + +#include "Edje.h" + +static int _log_dom; +#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__) +#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__) +#define WRN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__) +#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__) +#define CRIT(...) EINA_LOG_DOM_CRIT(_log_dom, __VA_ARGS__) + +#define INDENT " " +#define INDENT2 INDENT INDENT +#define INDENT3 INDENT2 INDENT +#define INDENT4 INDENT3 INDENT + +static char *module_patterns_str = NULL; + +static int detail = 1; +static Eina_Bool machine = EINA_FALSE; +static char *type_glob = NULL; +static char * const *module_patterns; +static const Eina_List *modules; + + +static char * +_module_patterns_str_new(void) +{ + Eina_Strbuf *buf; + char * const *itr; + char *ret; + if (!module_patterns) return strdup("*"); + + buf = eina_strbuf_new(); + for (itr = module_patterns; *itr != NULL; itr++) + { + eina_strbuf_append(buf, *itr); + if (itr[1]) eina_strbuf_append(buf, ", "); + } + ret = eina_strbuf_string_steal(buf); + eina_strbuf_free(buf); + return ret; +} + +static Eina_Bool +module_matches(const char *name) +{ + char * const *itr; + if (!module_patterns) return EINA_TRUE; + + for (itr = module_patterns; *itr != NULL; itr++) + if (fnmatch(*itr, name, 0) == 0) return EINA_TRUE; + + return EINA_FALSE; +} + +static inline Eina_Bool +type_matches(const char *name) +{ + if (!type_glob) return EINA_TRUE; + return fnmatch(type_glob, name, 0) == 0; +} + +static int +_types_sort(const void *pa, const void *pb) +{ + const Eina_Hash_Tuple *ha = pa, *hb = pb; + const Edje_External_Type *ta = ha->data, *tb = hb->data; + const char *na = ha->key, *nb = hb->key; + int r; + + if (!ta->module) return -1; + if (!tb->module) return 1; + r = strcmp(ta->module, tb->module); + if (r != 0) return r; + + if (!na) return -1; + if (!nb) return 1; + return strcmp(na, nb); +} + +static const char * +_param_type_str_get(const Edje_External_Param_Info *param) +{ + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: return "int"; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: return "double"; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: return "string"; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: return "bool"; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: return "choice"; + default: + ERR("Unknown parameter type %d", param->type); + return "???"; + } +} + +static const char * +_param_value_str_get(const Edje_External_Type *type, const Edje_External_Param_Info *param, char *buf, size_t buflen) +{ + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + if (param->info.i.def == EDJE_EXTERNAL_INT_UNSET) return NULL; + snprintf(buf, buflen, "%d", param->info.i.def); + return buf; + + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (param->info.d.def == EDJE_EXTERNAL_DOUBLE_UNSET) return NULL; + snprintf(buf, buflen, "%g", param->info.d.def); + return buf; + + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + return param->info.s.def; + + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + if (param->info.b.def == 0) return "0"; + else if (param->info.b.def == 1) return "1"; + return NULL; + + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + { + char *def; + if (param->info.c.def) return param->info.c.def; + if (!param->info.c.def_get) return NULL; + def = param->info.c.def_get(type->data, param); + if (!def) return NULL; + eina_strlcpy(buf, def, buflen); + free(def); + return buf; + } + + default: + ERR("Unknown parameter type %d", param->type); + return NULL; + } +} + +static const char * +_param_flags_str_get(const Edje_External_Param_Info *param) +{ + static char buf[] = "GET|SET|STATE|CONSTRUCTOR"; + + if (param->flags == EDJE_EXTERNAL_PARAM_FLAGS_NONE) return "NONE"; + if (param->flags == EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) return "REGULAR"; + + buf[0] = '\0'; + + if (param->flags & EDJE_EXTERNAL_PARAM_FLAGS_GET) + strcat(buf, "GET"); + + if (param->flags & EDJE_EXTERNAL_PARAM_FLAGS_SET) + { + if (buf[0] != '\0') strcat(buf, "|"); + strcat(buf, "SET"); + } + + if (param->flags & EDJE_EXTERNAL_PARAM_FLAGS_STATE) + { + if (buf[0] != '\0') strcat(buf, "|"); + strcat(buf, "STATE"); + } + + if (param->flags & EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR) + { + if (buf[0] != '\0') strcat(buf, "|"); + strcat(buf, "CONSTRUCTOR"); + } + + return buf; +} + +static void +_param_choices_print(const char * const *choices) +{ + if (machine) puts("CHOICES-BEGIN"); + else fputs(", choices:", stdout); + for (; *choices != NULL; choices++) + { + if (machine) puts(*choices); + else printf(" \"%s\"", *choices); + } + if (machine) puts("CHOICES-END"); +} + +static void +_param_extra_details(const Edje_External_Type *type, const Edje_External_Param_Info *param) +{ + const char *str = _param_flags_str_get(param); + if (machine) printf("FLAGS: %s\n", str); + else printf(" /* flags: %s", str); + + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + if (param->info.i.min != EDJE_EXTERNAL_INT_UNSET) + { + if (machine) printf("MIN: %d\n", param->info.i.min); + else printf(", min: %d", param->info.i.min); + } + if (param->info.i.max != EDJE_EXTERNAL_INT_UNSET) + { + if (machine) printf("MAX: %d\n", param->info.i.max); + else printf(", max: %d", param->info.i.max); + } + if (param->info.i.step != EDJE_EXTERNAL_INT_UNSET) + { + if (machine) printf("STEP: %d\n", param->info.i.step); + else printf(", step: %d", param->info.i.step); + } + break; + + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (param->info.d.min != EDJE_EXTERNAL_DOUBLE_UNSET) + { + if (machine) printf("MIN: %g\n", param->info.d.min); + else printf(", min: %g", param->info.d.min); + } + if (param->info.d.max != EDJE_EXTERNAL_DOUBLE_UNSET) + { + if (machine) printf("MAX: %g\n", param->info.d.max); + else printf(", max: %g", param->info.d.max); + } + if (param->info.d.step != EDJE_EXTERNAL_DOUBLE_UNSET) + { + if (machine) printf("STEP: %g\n", param->info.d.step); + else printf(", step: %g", param->info.d.step); + } + break; + + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (param->info.s.accept_fmt) + { + if (machine) printf("ACCEPT_FMT: %s\n", param->info.s.accept_fmt); + else printf(", accept_fmt: \"%s\"", param->info.s.accept_fmt); + } + if (param->info.s.deny_fmt) + { + if (machine) printf("DENY_FMT: %s\n", param->info.s.deny_fmt); + else printf(", deny_fmt: \"%s\"", param->info.s.deny_fmt); + } + break; + + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + if (param->info.b.false_str) + { + if (machine) printf("FALSE_STR: %s\n", param->info.b.false_str); + else printf(", false_str: \"%s\"", param->info.b.false_str); + } + if (param->info.b.true_str) + { + if (machine) printf("TRUE_STR: %s\n", param->info.b.true_str); + else printf(", true_str: \"%s\"", param->info.b.true_str); + } + break; + + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + { + if (param->info.c.choices) + _param_choices_print(param->info.c.choices); + else if (param->info.c.query) + { + char **choices = param->info.c.query(type->data, param); + if (choices) + { + char **itr; + _param_choices_print((const char * const*)choices); + for (itr = choices; *itr; itr++) free(*itr); + free(choices); + } + } + } + break; + + default: + ERR("Unknown parameter type %d", param->type); + } + + if (!machine) fputs(" */", stdout); /* \n not desired */ +} + +static int +_info_list(void) +{ + Eina_Iterator *itr; + Eina_List *types; + const Eina_Hash_Tuple *tuple; + const Eina_List *l; + const char *name, *last_module; + Eina_Bool module_found = EINA_FALSE, type_found = EINA_FALSE; + Eina_Bool in_module = EINA_FALSE; + + EINA_LIST_FOREACH(modules, l, name) + { + if (!module_matches(name)) + { + DBG("filter out module '%s': does not match '%s'", + name, module_patterns_str); + continue; + } + + if (!edje_module_load(name)) + { + ERR("error loading external '%s'", name); + continue; + } + + module_found = EINA_TRUE; + } + + itr = edje_external_iterator_get(); + types = NULL; + EINA_ITERATOR_FOREACH(itr, tuple) + { + const Edje_External_Type *type = tuple->data; + name = tuple->key; + + if (!type) + { + ERR("no type value for '%s'", name); + continue; + } + else if (type->abi_version != edje_external_type_abi_version_get()) + { + ERR("type '%s' with incorrect abi_version %u (expected %u)", + name, type->abi_version, edje_external_type_abi_version_get()); + continue; + } + + if (!type_matches(name)) + { + DBG("filter out type '%s': does not match '%s'", name, type_glob); + continue; + } + + types = eina_list_append(types, tuple); + type_found = EINA_TRUE; + } + eina_iterator_free(itr); + + last_module = NULL; + types = eina_list_sort(types, 0, _types_sort); + EINA_LIST_FREE(types, tuple) + { + Eina_Bool changed_module = EINA_FALSE; + const Edje_External_Type *type = tuple->data; + const Edje_External_Param_Info *param; + name = tuple->key; + + if ((last_module) && (type->module)) + { + changed_module = ((last_module != type->module) && + (!strcmp(last_module, type->module))); + } + else if ((!last_module) && (type->module)) + changed_module = EINA_TRUE; + + if (changed_module) + { + if (in_module) + { + if (machine) puts("TYPES-END\nMODULE-END"); + else puts(INDENT "}\n}"); + } + + if (machine) + printf("MODULE-BEGIN\n" + "NAME: %s\n" + "FRIENDLY-NAME: %s\n" + "TYPES-BEGIN\n", + type->module, type->module_name); + else + printf("module {\n" + INDENT "name: \"%s\";\n" + INDENT "friendly_name: \"%s\";\n" + INDENT "types {\n", + type->module, type->module_name); + + in_module = EINA_TRUE; + } + + if (machine) printf("TYPE-BEGIN\nNAME: %s\n", name); + else printf(INDENT2 "type {\n" INDENT3 "name: \"%s\";\n", name); + + if (detail > 1) + { + const char *str; + + if (!type->label_get) str = NULL; + else str = type->label_get(type->data); + if (machine) printf("LABEL: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "label: \"%s\";\n", str); + + if (!type->description_get) str = NULL; + else str = type->description_get(type->data); + if (machine) printf("DESCRIPTION: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "description: \"%s\";\n", str); + } + + if (machine) puts("PARAMS-BEGIN"); + else puts(INDENT3 "params {"); + + for (param = type->parameters_info; param->name != NULL; param++) + { + const char *pt = _param_type_str_get(param); + char buf[128]; + + if (machine) + printf("PARAM-BEGIN\nNAME: %s\nTYPE: %s\n", param->name, pt); + else printf(INDENT4 "%s: \"%s\"", pt, param->name); + + if (detail > 0) + { + const char *str = _param_value_str_get + (type, param, buf, sizeof(buf)); + if (machine) printf("DEFAULT: %s\n", str ? str : ""); + else if (str) printf(" \"%s\"", str); + + if (detail > 1) + { + if (!machine) putchar(';'); + _param_extra_details(type, param); + } + } + + if (machine) puts("PARAM-END"); + else if (detail > 1) putchar('\n'); + else puts(";"); + } + + if (machine) puts("PARAMS-END\nTYPE-END"); + else puts(INDENT3 "}\n" INDENT2 "}"); + + last_module = type->module; + } + + if (in_module) + { + if (machine) puts("MODULE-END"); + else puts(INDENT "}\n}"); + } + + if (!module_found) WRN("no modules match '%s'", module_patterns_str); + if (!type_found) WRN("no types match '%s'", type_glob); + return (!module_found) || (!type_found); +} + +static int +_types_names_list(void) +{ + Eina_Iterator *itr; + Eina_List *types; + const Eina_Hash_Tuple *tuple; + const Eina_List *l; + const char *name; + Eina_Bool module_found = EINA_FALSE, type_found = EINA_FALSE; + + EINA_LIST_FOREACH(modules, l, name) + { + if (!module_matches(name)) + { + DBG("filter out module '%s': does not match '%s'", + name, module_patterns_str); + continue; + } + + if (!edje_module_load(name)) + { + ERR("error loading external '%s'", name); + continue; + } + + module_found = EINA_TRUE; + } + + itr = edje_external_iterator_get(); + types = NULL; + EINA_ITERATOR_FOREACH(itr, tuple) + { + const Edje_External_Type *type = tuple->data; + name = tuple->key; + + if (!type) + { + ERR("no type value for '%s'", name); + continue; + } + else if (type->abi_version != edje_external_type_abi_version_get()) + { + ERR("type '%s' with incorrect abi_version %u (expected %u)", + name, type->abi_version, edje_external_type_abi_version_get()); + continue; + } + + if (!type_matches(name)) + { + DBG("filter out type '%s': does not match '%s'", name, type_glob); + continue; + } + + types = eina_list_append(types, tuple); + type_found = EINA_TRUE; + } + eina_iterator_free(itr); + + types = eina_list_sort(types, 0, _types_sort); + EINA_LIST_FREE(types, tuple) + puts(tuple->key); + + if (!module_found) WRN("no modules match '%s'", module_patterns_str); + if (!type_found) WRN("no types match '%s'", type_glob); + return (!module_found) || (!type_found); +} + +static int +_modules_names_list(void) +{ + const Eina_List *l; + const char *name; + Eina_Bool found = EINA_FALSE; + + EINA_LIST_FOREACH(modules, l, name) + { + if (!module_matches(name)) + { + DBG("filter out module '%s': does not match '%s'", + name, module_patterns_str); + continue; + } + found = EINA_TRUE; + puts(name); + } + + if (!found) WRN("no modules match '%s'", module_patterns_str); + return !found; +} + +static const char *mode_choices[] = { + "info", + "modules-names", + "types-names", + NULL, +}; + +static const char *detail_choices[] = { + "none", + "terse", + "all", + NULL +}; + +const Ecore_Getopt optdesc = { + "edje_external_inspector", + "%prog [options] [module|module-glob] ... [module|module-glob]", + PACKAGE_VERSION, + "(C) 2010 - The Enlightenment Project", + "BSD", + "Edje external module inspector.", + 0, + { + ECORE_GETOPT_CHOICE('m', "mode", "Choose which mode to operate.", + mode_choices), + ECORE_GETOPT_STORE_STR('t', "type", "Limit output to type (or glob)."), + ECORE_GETOPT_CHOICE('d', "detail", "Choose detail level (default=terse)", + detail_choices), + ECORE_GETOPT_STORE_TRUE('M', "machine", "Produce machine readable output."), + ECORE_GETOPT_LICENSE('L', "license"), + ECORE_GETOPT_COPYRIGHT('C', "copyright"), + ECORE_GETOPT_VERSION('V', "version"), + ECORE_GETOPT_HELP('h', "help"), + ECORE_GETOPT_SENTINEL + } +}; + +int +main(int argc, char **argv) +{ + Eina_Bool quit_option = EINA_FALSE; + char *mode = NULL; + char *detail_name = NULL; + int arg_index; + int ret = 0; + Ecore_Getopt_Value values[] = { + ECORE_GETOPT_VALUE_STR(mode), + ECORE_GETOPT_VALUE_STR(type_glob), + ECORE_GETOPT_VALUE_STR(detail_name), + ECORE_GETOPT_VALUE_BOOL(machine), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_NONE + }; + + setlocale(LC_NUMERIC, "C"); + + ecore_init(); + eina_init(); + edje_init(); + + _log_dom = eina_log_domain_register + ("edje_external_inspector", EINA_COLOR_YELLOW); + if (_log_dom < 0) + { + EINA_LOG_CRIT + ("could not register log domain 'edje_external_inspector'"); + ret = 1; + goto error_log; + } + + arg_index = ecore_getopt_parse(&optdesc, values, argc, argv); + if (arg_index < 0) + { + ERR("could not parse arguments."); + ret = 1; + goto error_getopt; + } + else if (quit_option) goto error_getopt; + + if (!mode) mode = (char *)mode_choices[0]; + + if (detail_name) + { + if (!strcmp(detail_name, "none")) detail = 0; + else if (!strcmp(detail_name, "terse")) detail = 1; + else if (!strcmp(detail_name, "all")) detail = 2; + else ERR("Unknown detail level: '%s'", detail_name); + } + + if (arg_index < argc) module_patterns = argv + arg_index; + else module_patterns = NULL; + + modules = edje_available_modules_get(); + module_patterns_str = _module_patterns_str_new(); + + if (!strcmp(mode, "info")) ret = _info_list(); + else if (!strcmp(mode, "modules-names")) ret = _modules_names_list(); + else if (!strcmp(mode, "types-names")) ret = _types_names_list(); + else + { + ERR("Unknown mode: %s", mode); + ret = 1; + } + + free(module_patterns_str); + + error_getopt: + eina_log_domain_unregister(_log_dom); + error_log: + edje_shutdown(); + ecore_shutdown(); + eina_shutdown(); + + return ret; +} diff --git a/src/bin/edje_inspector.c b/src/bin/edje_inspector.c new file mode 100644 index 0000000..9106f95 --- /dev/null +++ b/src/bin/edje_inspector.c @@ -0,0 +1,1635 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "Edje.h" +#define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT 1 +#include "Edje_Edit.h" + +#include +#include +#include +#include +#include +#include + +static int _log_dom; +#define DBG(...) EINA_LOG_DOM_DBG(_log_dom, __VA_ARGS__) +#define INF(...) EINA_LOG_DOM_INFO(_log_dom, __VA_ARGS__) +#define WRN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__) +#define ERR(...) EINA_LOG_DOM_ERR(_log_dom, __VA_ARGS__) +#define CRIT(...) EINA_LOG_DOM_CRIT(_log_dom, __VA_ARGS__) + +#define INDENT " " +#define INDENT2 INDENT INDENT +#define INDENT3 INDENT2 INDENT +#define INDENT4 INDENT3 INDENT +#define INDENT5 INDENT4 INDENT +#define INDENT6 INDENT5 INDENT +#define INDENT7 INDENT6 INDENT + +#define FLOAT_PRECISION 0.0001 +#define FDIFF(a, b) (fabs((a) - (b)) > FLOAT_PRECISION) + +/* context */ +static Eina_List *groups; +static Ecore_Evas *ee; + +/* options */ +static const char *file; +static char *group = NULL; +static char *part = NULL; +static char *program = NULL; +static int detail = 1; +static Eina_Bool api_only = EINA_FALSE; +static Eina_Bool api_fix = EINA_FALSE; +static Eina_Bool machine = EINA_FALSE; + +static const char *mode_choices[] = { + "groups", + "parts", + "programs", + "groups-names", + "part-names", + "global-data", + "images", + "fonts", + "externals", + NULL, +}; + +static const char *detail_choices[] = { + "none", + "terse", + "all", + NULL +}; + +const Ecore_Getopt optdesc = { + "edje_inspector", + "%prog [options] ", + PACKAGE_VERSION, + "(C) 2010 - The Enlightenment Project", + "BSD", + "Edje file inspector, let one see groups, parts, programs and other details " + "of a compiled (binary) edje file.\n", + 0, + { + ECORE_GETOPT_CHOICE('m', "mode", "Choose which mode to operate on file.", + mode_choices), + ECORE_GETOPT_CHOICE('d', "detail", "Choose detail level (default=terse)", + detail_choices), + ECORE_GETOPT_STORE_STR('g', "group", "Limit output to group (or glob)."), + ECORE_GETOPT_STORE_STR('p', "part", "Limit output to part (or glob)."), + ECORE_GETOPT_STORE_STR('r', "program", + "Limit output to program (or glob)."), + ECORE_GETOPT_STORE_TRUE('a', "api-only", "Limit to just api parts or " + "programs."), + ECORE_GETOPT_STORE_TRUE('A', "api-fix", "Fix API names to be C compliant."), + ECORE_GETOPT_STORE_TRUE('M', "machine", "Produce machine readable output."), + ECORE_GETOPT_LICENSE('L', "license"), + ECORE_GETOPT_COPYRIGHT('C', "copyright"), + ECORE_GETOPT_VERSION('V', "version"), + ECORE_GETOPT_HELP('h', "help"), + ECORE_GETOPT_SENTINEL + } +}; + +static inline Eina_Bool +matches(const char *name, const char *pattern) +{ + if (!pattern) return EINA_TRUE; + return fnmatch(pattern, name, 0) == 0; +} + +static void +group_begin(const char *name) +{ + if (machine) printf("GROUP-BEGIN\nNAME: %s\n", name); + else printf("group { name: '%s';\n", name); +} + +static void +group_end(void) +{ + if (machine) puts("GROUP-END"); + else puts("}"); +} + +static void +group_details(Evas_Object *ed) +{ + int w, h; + + if (detail < 1) return; + + if (machine) puts("GROUP-DETAILS-BEGIN"); + + w = edje_edit_group_min_w_get(ed); + h = edje_edit_group_min_h_get(ed); + if (machine) printf("MIN-W: %d\nMIN-H: %d\n", w, h); + else if ((w > 0) || (h > 0)) printf(INDENT "min: %d %d;\n", w, h); + + w = edje_edit_group_max_w_get(ed); + h = edje_edit_group_max_h_get(ed); + if (machine) printf("MAX-W: %d\nMAX-H: %d\n", w, h); + else if ((w > 0) || (h > 0)) printf(INDENT "max: %d %d;\n", w, h); + + if (detail > 1) + { + Eina_List *dl; + dl = edje_edit_group_data_list_get(ed); + if (dl) + { + Eina_List *l; + const char *k; + if (machine) puts(INDENT "GROUP-DETAILS-DATA-BEGIN"); + else puts(INDENT "data {"); + + EINA_LIST_FOREACH(dl, l, k) + { + const char *v = edje_edit_group_data_value_get(ed, k); + if (machine) printf("ITEM: \"%s\" \"%s\"\n", k, v); + else printf(INDENT2 "item: \"%s\" \"%s\";\n", k, v); + } + + edje_edit_string_list_free(dl); + + if (machine) puts(INDENT "GROUP-DETAILS-DATA-END"); + else puts(INDENT "}"); + } + } + + if (machine) puts("GROUP-DETAILS-END"); +} + +static void +parts_begin(void) +{ + if (machine) puts("PARTS-BEGIN"); + else puts(INDENT "parts {"); +} + +static void +parts_end(void) +{ + if (machine) puts("PARTS-END"); + else puts(INDENT "}"); +} + +static const char * +part_type_name_get(Edje_Part_Type t) +{ + switch (t) + { + case EDJE_PART_TYPE_RECTANGLE: + return "RECT"; + case EDJE_PART_TYPE_TEXT: + return "TEXT"; + case EDJE_PART_TYPE_IMAGE: + return "IMAGE"; + case EDJE_PART_TYPE_PROXY: + return "PROXY"; + case EDJE_PART_TYPE_SWALLOW: + return "SWALLOW"; + case EDJE_PART_TYPE_TEXTBLOCK: + return "TEXTBLOCK"; + case EDJE_PART_TYPE_GRADIENT: + return "GRADIENT"; + case EDJE_PART_TYPE_GROUP: + return "GROUP"; + case EDJE_PART_TYPE_BOX: + return "BOX"; + case EDJE_PART_TYPE_TABLE: + return "TABLE"; + case EDJE_PART_TYPE_EXTERNAL: + return "EXTERNAL"; + case EDJE_PART_TYPE_SPACER: + return "SPACER"; + + case EDJE_PART_TYPE_NONE: + case EDJE_PART_TYPE_LAST: + ERR("Invalid part type %d", t); + return "???"; + default: + ERR("Unknown part type %d", t); + return "???"; + } +} + +static void +state_begin(const char *state, double value) +{ + if (machine) + printf("PART-STATE-BEGIN\nNAME: %s\nVALUE: %2.1f\n", state, value); + else + { + printf(INDENT3 "description { state: \"%s\" %2.1f;", state, value); + if (detail > 0) putchar('\n'); + } +} + +static const char * +aspect_pref_name_get(int id) +{ + switch (id) + { + case 0: return "NONE"; + case 1: return "VERTICAL"; + case 2: return "HORIZONTAL"; + case 3: return "BOTH"; + default: + ERR("Unknown aspect preference %d", id); + return "???"; + } +} + +static const char * +border_fill_name_get(int id) +{ + switch (id) + { + case 0: return "NONE"; + case 1: return "DEFAULT"; + case 2: return "SOLID"; + default: + ERR("Unknown border fill %d", id); + return "???"; + } +} + +static void +state_details(Evas_Object *ed, const char *ppart, const char *state, double value) +{ + Edje_Part_Type t = edje_edit_part_type_get(ed, ppart); + double dx, dy; + const char *str, *str2; + int x, y, r, g, b, a; + + if (detail < 1) return; + + b = edje_edit_state_visible_get(ed, ppart, state, value); + if (machine) printf("VISIBLE: %d\n", b); + else if (!b) puts(INDENT4 "visible: 0;"); + + edje_edit_state_color_get(ed, ppart, state, value, &r, &g, &b, &a); + if (machine) + printf("COLOR-R: %d\nCOLOR-G: %d\nCOLOR-B: %d\nCOLOR-A: %d\n", r, g, b, a); + else if ((r != 255) || (g != 255) || (b != 255) || (a != 255)) + printf(INDENT4 "color: %d %d %d %d;\n", r, g, b, a); + + if (detail > 1) + { + edje_edit_state_color2_get(ed, ppart, state, value, &r, &g, &b, &a); + if (machine) + printf("COLOR2-R: %d\nCOLOR2-G: %d\nCOLOR2-B: %d\nCOLOR2-A: %d\n", + r, g, b, a); + else if ((r != 255) || (g != 255) || (b != 255) || (a != 255)) + printf(INDENT4 "color2: %d %d %d %d;\n", r, g, b, a); + + edje_edit_state_color3_get(ed, ppart, state, value, &r, &g, &b, &a); + if (machine) + printf("COLOR3-R: %d\nCOLOR3-G: %d\nCOLOR3-B: %d\nCOLOR3-A: %d\n", + r, g, b, a); + else if ((r != 255) || (g != 255) || (b != 255) || (a != 255)) + printf(INDENT4 "color3: %d %d %d %d;\n", r, g, b, a); + } + + dx = edje_edit_state_align_x_get(ed, ppart, state, value); + dy = edje_edit_state_align_y_get(ed, ppart, state, value); + if (machine) printf("ALIGN-X: %g\nALIGN-Y: %g\n", dx, dy); + else if (FDIFF(dx, 0.5) || FDIFF(dy, 0.5)) + printf(INDENT4 "align: %g %g;\n", dx, dy); + + x = edje_edit_state_min_w_get(ed, ppart, state, value); + y = edje_edit_state_min_h_get(ed, ppart, state, value); + if (machine) printf("MIN-W: %d\nMIN-H: %d\n", x, y); + else if ((x) || (y)) printf(INDENT4 "min: %d %d;\n", x, y); + + x = edje_edit_state_max_w_get(ed, ppart, state, value); + y = edje_edit_state_max_h_get(ed, ppart, state, value); + if (machine) printf("MAX-W: %d\nMAX-H: %d\n", x, y); + else if ((x != -1) || (y != -1)) printf(INDENT4 "max: %d %d;\n", x, y); + + //TODO Support fixed + //TODO Support step + + if (detail > 1) + { + dx = edje_edit_state_aspect_min_get(ed, ppart, state, value); + dy = edje_edit_state_aspect_max_get(ed, ppart, state, value); + if (machine) printf("ASPECT-MIN: %g\nASPECT-MAX: %g\n", dx, dy); + else if (FDIFF(dx, 0.0) || FDIFF(dy, 0.0)) + printf(INDENT4 "aspect: %g %g;\n", dx, dy); + + x = edje_edit_state_aspect_pref_get(ed, ppart, state, value); + str = aspect_pref_name_get(x); + if (machine) printf("ASPECT-PREFERENCE: %s\n", str); + else if (x) printf(INDENT4 "aspect_preference: %s;\n", str); + /* do not free this str! */ + + str = edje_edit_state_color_class_get(ed, ppart, state, value); + if (machine) printf("COLOR_CLASS: %s\n", str ? str : ""); + else if (str) printf(INDENT4 "color_class: \"%s\";\n", str); + edje_edit_string_free(str); + } + + dx = edje_edit_state_rel1_relative_x_get(ed, ppart, state, value); + dy = edje_edit_state_rel1_relative_y_get(ed, ppart, state, value); + x = edje_edit_state_rel1_offset_x_get(ed, ppart, state, value); + y = edje_edit_state_rel1_offset_y_get(ed, ppart, state, value); + str = edje_edit_state_rel1_to_x_get(ed, ppart, state, value); + str2 = edje_edit_state_rel1_to_y_get(ed, ppart, state, value); + if (FDIFF(dx, 0.0) || FDIFF(dy, 0.0) || (x) || (y) || (str) || (str2)) + { + if (machine) puts("REL1-BEGIN"); + else puts(INDENT4 "rel1 {"); + + if (machine) printf("RELATIVE-X: %g\nRELATIVE-Y: %g\n", dx, dy); + else if (FDIFF(dx, 0.0) || FDIFF(dy, 0.0)) + printf(INDENT5 "relative: %g %g;\n", dx, dy); + + if (machine) printf("OFFSET-X: %d\nOFFSET-Y: %d\n", x, y); + else if ((x) || (y)) printf(INDENT5 "offset: %d %d;\n", x, y); + + if (machine) + printf("TO-X: %s\nTO-Y: %s\n", str ? str : "", str2 ? str2 : ""); + else if (((str) && (str2)) && (!strcmp(str, str2))) + printf(INDENT5 "to: \"%s\";\n", str); + else + { + if (str) printf(INDENT5 "to_x: \"%s\";\n", str); + if (str2) printf(INDENT5 "to_y: \"%s\";\n", str2); + } + + if (machine) puts("REL1-END"); + else puts(INDENT4 "}"); + } + edje_edit_string_free(str); + edje_edit_string_free(str2); + + dx = edje_edit_state_rel2_relative_x_get(ed, ppart, state, value); + dy = edje_edit_state_rel2_relative_y_get(ed, ppart, state, value); + x = edje_edit_state_rel2_offset_x_get(ed, ppart, state, value); + y = edje_edit_state_rel2_offset_y_get(ed, ppart, state, value); + str = edje_edit_state_rel2_to_x_get(ed, ppart, state, value); + str2 = edje_edit_state_rel2_to_y_get(ed, ppart, state, value); + if (FDIFF(dx, 1.0) || FDIFF(dy, 1.0) || (x != -1) || (y != -1) || + (str) || (str2)) + { + if (machine) puts("REL2-BEGIN"); + else puts(INDENT4 "rel2 {"); + + if (machine) printf("RELATIVE-X: %g\nRELATIVE-Y: %g\n", dx, dy); + else if (FDIFF(dx, 1.0) || FDIFF(dy, 1.0)) + printf(INDENT5 "relative: %g %g;\n", dx, dy); + + if (machine) printf("OFFSET-X: %d\nOFFSET-Y: %d\n", x, y); + else if ((x != -1) || (y != -1)) + printf(INDENT5 "offset: %d %d;\n", x, y); + + if (machine) + printf("TO-X: %s\nTO-Y: %s\n", str ? str : "", str2 ? str2 : ""); + else if (((str) && (str2)) && (!strcmp(str, str2))) + printf(INDENT5 "to: \"%s\";\n", str); + else + { + if (str) printf(INDENT5 "to_x: \"%s\";\n", str); + if (str2) printf(INDENT5 "to_y: \"%s\";\n", str2); + } + + if (machine) puts("REL2-END"); + else puts(INDENT4 "}"); + } + edje_edit_string_free(str); + edje_edit_string_free(str2); + + if (t == EDJE_PART_TYPE_IMAGE) + { + str = edje_edit_state_image_get(ed, ppart, state, value); + + if (machine) printf("IMAGE-BEGIN\nNORMAL: %s\n", str ? str : ""); + else if (detail > 1) + { + puts(INDENT4 "image {"); + if (str) printf(INDENT5 "normal: \"%s\";\n", str); + } + else if (str) printf(INDENT4 "image.normal: \"%s\";\n", str); + + edje_edit_string_free(str); + + if (detail > 1) + { + Eina_List *tweens, *l; + int bl, br, bt, bb, x2, y2; + double dx2, dy2; + Eina_Bool has_orgin, has_size; + + tweens = edje_edit_state_tweens_list_get(ed, ppart, state, value); + EINA_LIST_FOREACH(tweens, l, str) + { + if (machine) printf("TWEEN: %s\n", str); + else printf(INDENT5 "tween: \"%s\";\n", str); + } + edje_edit_string_list_free(tweens); + + edje_edit_state_image_border_get + (ed, ppart, state, value, &bl, &br, &bt, &bb); + if (machine) + printf("BORDER-LEFT: %d\nBORDER-RIGHT: %d\n" + "BORDER-TOP: %d\nBORDER-BOTTOM: %d\n", bl, br, bt, bb); + else if ((bl) || (br) || (bt) || (bb)) + printf(INDENT5 "border: %d %d %d %d;\n", bl, br, bt, bb); + + x = edje_edit_state_image_border_fill_get(ed, ppart, state, value); + str = border_fill_name_get(x); + if (machine) printf("BORDER-FILL: %s\n", str); + else if (x != 1) printf(INDENT5 "middle: %s;\n", str); + /* do not free str! */ + + // TODO support image.fill.smooth + + dx = edje_edit_state_fill_origin_relative_x_get + (ed, ppart, state, value); + dy = edje_edit_state_fill_origin_relative_y_get + (ed, ppart, state, value); + x = edje_edit_state_fill_origin_offset_x_get + (ed, ppart, state, value); + y = edje_edit_state_fill_origin_offset_y_get + (ed, ppart, state, value); + + dx2 = edje_edit_state_fill_size_relative_x_get + (ed, ppart, state, value); + dy2 = edje_edit_state_fill_size_relative_y_get + (ed, ppart, state, value); + x2 = edje_edit_state_fill_size_offset_x_get + (ed, ppart, state, value); + y2 = edje_edit_state_fill_size_offset_y_get + (ed, ppart, state, value); + + has_orgin = (FDIFF(dx, 0.0) || FDIFF(dy, 0.0) || (x) || (y)); + has_size = (FDIFF(dx2, 1.0) || FDIFF(dy2, 1.0) || (x2) || (y2)); + + if ((has_orgin) || (has_size)) + { + if (machine) puts("IMAGE-FILL-BEGIN"); + else puts(INDENT5 "fill {"); + + if (has_orgin) + { + if (machine) + printf("ORIGIN-RELATIVE-X: %g\n" + "ORIGIN-RELATIVE-Y: %g\n" + "ORIGIN-OFFSET-X: %d\n" + "ORIGIN-OFFSET-Y: %d\n", + dx, dy, x, y); + else + printf(INDENT6 "origin {\n" + INDENT7 "relative: %g %g;\n" + INDENT7 "offset: %d %d;\n" + INDENT6 "}\n", + dx, dy, x, y); + } + + if (has_size) + { + if (machine) + printf("SIZE-RELATIVE-X: %g\n" + "SIZE-RELATIVE-Y: %g\n" + "SIZE-OFFSET-X: %d\n" + "SIZE-OFFSET-Y: %d\n", + dx2, dy2, x2, y2); + else + printf(INDENT6 "size {\n" + INDENT7 "relative: %g %g;\n" + INDENT7 "offset: %d %d;\n" + INDENT6 "}\n", + dx2, dy2, x2, y2); + } + + if (machine) puts("IMAGE-FILL-END"); + else puts(INDENT5 "}"); + } + } + + if (machine) puts("IMAGE-END"); + else if (detail > 1) puts(INDENT4 "}"); + } + else if (t == EDJE_PART_TYPE_PROXY) + { + int x2, y2; + double dx2, dy2; + Eina_Bool has_orgin, has_size; + + if (machine) puts("PROXY-BEGIN"); + else puts(INDENT4 "proxy {"); + // TODO Support source + // TODO support proxy.fill.smooth + + dx = edje_edit_state_fill_origin_relative_x_get + (ed, ppart, state, value); + dy = edje_edit_state_fill_origin_relative_y_get + (ed, ppart, state, value); + x = edje_edit_state_fill_origin_offset_x_get + (ed, ppart, state, value); + y = edje_edit_state_fill_origin_offset_y_get + (ed, ppart, state, value); + + dx2 = edje_edit_state_fill_size_relative_x_get + (ed, ppart, state, value); + dy2 = edje_edit_state_fill_size_relative_y_get + (ed, ppart, state, value); + x2 = edje_edit_state_fill_size_offset_x_get + (ed, ppart, state, value); + y2 = edje_edit_state_fill_size_offset_y_get + (ed, ppart, state, value); + + has_orgin = (FDIFF(dx, 0.0) || FDIFF(dy, 0.0) || (x) || (y)); + has_size = (FDIFF(dx2, 1.0) || FDIFF(dy2, 1.0) || (x2) || (y2)); + + if ((has_orgin) || (has_size)) + { + if (machine) puts("PROXY-FILL-BEGIN"); + else puts(INDENT5 "fill {"); + + if (has_orgin) + { + if (machine) + printf("ORIGIN-RELATIVE-X: %g\n" + "ORIGIN-RELATIVE-Y: %g\n" + "ORIGIN-OFFSET-X: %d\n" + "ORIGIN-OFFSET-Y: %d\n", + dx, dy, x, y); + else + printf(INDENT6 "origin {\n" + INDENT7 "relative: %g %g;\n" + INDENT7 "offset: %d %d;\n" + INDENT6 "}\n", + dx, dy, x, y); + } + + if (has_size) + { + if (machine) + printf("SIZE-RELATIVE-X: %g\n" + "SIZE-RELATIVE-Y: %g\n" + "SIZE-OFFSET-X: %d\n" + "SIZE-OFFSET-Y: %d\n", + dx2, dy2, x2, y2); + else + printf(INDENT6 "size {\n" + INDENT7 "relative: %g %g;\n" + INDENT7 "offset: %d %d;\n" + INDENT6 "}\n", + dx2, dy2, x2, y2); + } + + if (machine) puts("PROXY-FILL-END"); + else puts(INDENT5 "}"); + } + + if (machine) puts("PROXY-END"); + else puts(INDENT4 "}"); + } + else if ((t == EDJE_PART_TYPE_TEXTBLOCK) || (t == EDJE_PART_TYPE_TEXT)) + { + if (machine) puts("TEXT-BEGIN"); + else puts(INDENT4 "text {"); + + str = edje_edit_state_text_get(ed, ppart, state, value); + if (machine) printf("TEXT: %s\n", str ? str : ""); + else if (str) printf(INDENT5 "text: \"%s\";\n", str); + edje_edit_string_free(str); + + str = edje_edit_state_font_get(ed, ppart, state, value); + if (machine) printf("FONT: %s\n", str ? str : ""); + else if (str) printf(INDENT5 "font: \"%s\";\n", str); + edje_edit_string_free(str); + + x = edje_edit_state_text_size_get(ed, ppart, state, value); + if (machine) printf("SIZE: %d\n", x); + else if (x > 0) printf(INDENT5 "size: %d;\n", x); + + // TODO text_class + + dx = edje_edit_state_text_align_x_get(ed, ppart, state, value); + dy = edje_edit_state_text_align_y_get(ed, ppart, state, value); + if (machine) printf("TEXT-ALIGN-X: %g\nTEXT-ALIGN-Y: %g\n", dx, dy); + else if (FDIFF(dx, 0.5) || FDIFF(dy, 0.5)) + printf(INDENT5 "align: %g %g;\n", dx, dy); + + x = edje_edit_state_text_fit_x_get(ed, ppart, state, value); + y = edje_edit_state_text_fit_y_get(ed, ppart, state, value); + if (machine) printf("TEXT-FIT-X: %d\nTEXT-FIT-Y: %d\n", x, y); + else if ((x) || (y)) printf(INDENT5 "fit: %d %d;\n", x, y); + + dx = edje_edit_state_text_elipsis_get(ed, ppart, state, value); + if (machine) printf("TEXT-ELIPSIS: %g\n", dx); + else if (FDIFF(dx, 0.5)) printf(INDENT5 "elipsis: %g;\n", dx); + + if (machine) puts("TEXT-END"); + else puts(INDENT4 "}"); + } + else if (t == EDJE_PART_TYPE_EXTERNAL) + { + const Eina_List *params, *l; + const Edje_External_Param *p; + + params = edje_edit_state_external_params_list_get + (ed, ppart, state, value); + + if (params) + { + if (machine) puts("PARAMS-BEGIN"); + else puts(INDENT4 "params {"); + + EINA_LIST_FOREACH(params, l, p) + switch (p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + printf(INDENT5 "int: \"%s\" \"%d\";\n", p->name, p->i); + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + printf(INDENT5 "double: \"%s\" \"%g\";\n", p->name, p->d); + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (p->s) + printf(INDENT5 "string: \"%s\" \"%s\";\n", + p->name, p->s); + break; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + printf(INDENT5 "bool: \"%s\" \"%d\";\n", p->name, p->i); + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + if (p->s) + printf(INDENT5 "choice: \"%s\" \"%s\";\n", + p->name, p->s); + break; + default: + break; + } + + if (machine) puts("PARAMS-END"); + else puts(INDENT4 "}"); + } + } +} + +static void +state_end(void) +{ + if (machine) puts("PART-STATE-END"); + else if (detail > 0) puts(INDENT3 "}"); + else puts(" }"); +} + +static void +part_begin(Evas_Object *ed, const char *name) +{ + const char *type = part_type_name_get(edje_edit_part_type_get(ed, name)); + if (machine) printf("PART-BEGIN\nNAME: %s\nTYPE: %s\n", name, type); + else + { + printf(INDENT2 "part { name: '%s'; type: %s;", name, type); + if (detail > 0) putchar('\n'); + } +} + +static const char * +text_effect_name_get(Edje_Text_Effect effect) +{ + switch (effect) + { + case EDJE_TEXT_EFFECT_NONE: + return "NONE"; + case EDJE_TEXT_EFFECT_PLAIN: + return "PLAIN"; + case EDJE_TEXT_EFFECT_OUTLINE: + return "OUTLINE"; + case EDJE_TEXT_EFFECT_SOFT_OUTLINE: + return "SOFT_OUTLINE"; + case EDJE_TEXT_EFFECT_SHADOW: + return "SHADOW"; + case EDJE_TEXT_EFFECT_SOFT_SHADOW: + return "SOFT_SHADOW"; + case EDJE_TEXT_EFFECT_OUTLINE_SHADOW: + return "OUTLINE_SHADOW"; + case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW: + return "OUTLINE_SOFT_SHADOW"; + case EDJE_TEXT_EFFECT_FAR_SHADOW: + return "FAR_SHADOW"; + case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW: + return "FAR_SOFT_SHADOW"; + case EDJE_TEXT_EFFECT_GLOW: + return "GLOW"; + + case EDJE_TEXT_EFFECT_LAST: + ERR("Invalid part type %d", effect); + return "???"; + default: + ERR("Unknown effect type %d", effect); + return "???"; + } +} + +static inline Eina_Bool +_c_id_allowed(char c) +{ + if ((c >= '0') && (c <= '9')) return EINA_TRUE; + if ((c >= 'a') && (c <= 'z')) return EINA_TRUE; + if ((c >= 'A') && (c <= 'Z')) return EINA_TRUE; + return EINA_FALSE; +} + +static char * +_api_name_fix(const char *orig) +{ + char *d, *d_end, buf[256]; + const char *s; + + if (!orig) return NULL; + if (!api_fix) return strdup(orig); + + s = orig; + d = buf; + d_end = d + sizeof(buf) - 1; + for (; (*s != '\0') && (d < d_end); s++, d++) + if (_c_id_allowed(*s)) *d = *s; + else *d = '_'; + *d = '\0'; + + return strdup(buf); +} + +static char * +_part_api_name_get(Evas_Object *ed, const char *ppart) +{ + const char *orig = edje_edit_part_api_name_get(ed, ppart); + char *fix = _api_name_fix(orig); + edje_edit_string_free(orig); + return fix; +} + +static void +part_details(Evas_Object *ed, const char *ppart) +{ + Eina_List *states, *l; + Eina_Bool b; + const char *str, *str2; + char *api; + + if (detail < 1) return; + + if (machine) puts("PART-DETAILS-BEGIN"); + + str = api =_part_api_name_get(ed, ppart); + str2 = edje_edit_part_api_description_get(ed, ppart); + if (machine) + { + printf("API-NAME: %s\n", str ? str : ""); + printf("API-DESCRIPTION: %s\n", str2 ? str2 : ""); + } + else if ((str) || (str2)) + printf(INDENT3 "api: \"%s\" \"%s\";\n", str ? str : "", str2 ? str2 : ""); + free(api); + edje_edit_string_free(str2); + + b = edje_edit_part_mouse_events_get(ed, ppart); + if (machine) printf("MOUSE_EVENTS: %d\n", b); + else if (!b) puts(INDENT3 "mouse_events: 0;"); + + if (detail > 1) + { + b = edje_edit_part_repeat_events_get(ed, ppart); + if (machine) printf("REPEAT_EVENTS: %d\n", b); + else if (b) puts(INDENT3 "repeat_events: 1;"); + + b = edje_edit_part_scale_get(ed, ppart); + if (machine) printf("SCALE: %d\n", b); + else if (b) puts(INDENT3 "scale: 1;"); + } + + str = edje_edit_part_clip_to_get(ed, ppart); + if (machine) printf("CLIP_TO: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "clip_to: \"%s\";\n", str); + edje_edit_string_free(str); + + str = edje_edit_part_source_get(ed, ppart); + if (machine) printf("SOURCE: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "source: \"%s\";\n", str); + edje_edit_string_free(str); + + if (detail > 1) + { + if (edje_edit_part_type_get(ed, ppart) == EDJE_PART_TYPE_TEXT) + { + str = text_effect_name_get(edje_edit_part_effect_get(ed, ppart)); + if (machine) printf("EFFECT: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "effect: %s;\n", str); + /* do not free this str! */ + } + + if (edje_edit_part_drag_x_get(ed, ppart) || + edje_edit_part_drag_y_get(ed, ppart)) + { + int dir, step, count; + + if (machine) puts("DRAGABLE-BEGIN"); + else puts(INDENT3 "dragable {"); + + dir = edje_edit_part_drag_x_get(ed, ppart); + step = edje_edit_part_drag_step_x_get(ed, ppart); + count = edje_edit_part_drag_count_x_get(ed, ppart); + if (machine) printf("DRAG-X: %d %d %d\n", dir, step, count); + else printf(INDENT4 "x: %d %d %d;\n", dir, step, count); + + dir = edje_edit_part_drag_y_get(ed, ppart); + step = edje_edit_part_drag_step_y_get(ed, ppart); + count = edje_edit_part_drag_count_y_get(ed, ppart); + if (machine) printf("DRAG-Y: %d %d %d\n", dir, step, count); + else printf(INDENT4 "y: %d %d %d;\n", dir, step, count); + + str = edje_edit_part_drag_confine_get(ed, ppart); + if (machine) printf("DRAG-CONFINE: %s\n", str ? str : ""); + else if (str) printf(INDENT4 "confine: \"%s\";\n", str); + edje_edit_string_free(str); + + str = edje_edit_part_drag_event_get(ed, ppart); + if (machine) printf("DRAG-EVENTS: %s\n", str ? str : ""); + else if (str) printf(INDENT4 "events: \"%s\";\n", str); + edje_edit_string_free(str); + + if (machine) puts("DRAGABLE-END"); + else puts(INDENT3 "}"); + } + } + + states = edje_edit_part_states_list_get(ed, ppart); + EINA_LIST_FOREACH(states, l, str) + { + char state[512], *delim; + double value; + eina_strlcpy(state, str, sizeof(state)); /* bad states_list! :-( */ + delim = strchr(state, ' '); + *delim = '\0'; + delim++; + value = strtod(delim, NULL); + state_begin(state, value); + state_details(ed, ppart, state, value); + state_end(); + } + edje_edit_string_list_free(states); + + if (machine) puts("PART-DETAILS-END"); +} + +static void +part_end(void) +{ + if (machine) puts("PART-END"); + else if (detail > 0) puts(INDENT2 "}"); + else puts(" }"); +} + +static int +_groups_names_list(void) +{ + Eina_List *l; + const char *name; + Eina_Bool found = EINA_FALSE; + + EINA_LIST_FOREACH(groups, l, name) + { + if (!matches(name, group)) + { + DBG("filter out group '%s': does not match '%s'", name, group); + continue; + } + found = EINA_TRUE; + puts(name); + } + + if (!found) WRN("no groups match '%s'", group); + return !found; +} + +static int +_parts_names_list(void) +{ + Eina_List *gl, *pl, *parts; + const char *gname, *pname; + Eina_Bool found_group = EINA_FALSE, found_part = EINA_FALSE; + + EINA_LIST_FOREACH(groups, gl, gname) + { + Evas_Object *ed; + + if (!matches(gname, group)) + { + DBG("filter out group '%s': does not match '%s'", gname, group); + continue; + } + + ed = edje_edit_object_add(ecore_evas_get(ee)); + if (!edje_object_file_set(ed, file, gname)) + { + Edje_Load_Error err = edje_object_load_error_get(ed); + const char *errmsg = edje_load_error_str(err); + ERR("could not load group '%s' from file '%s': %s", + gname, file, errmsg); + evas_object_del(ed); + continue; + } + + found_group = EINA_TRUE; + group_begin(gname); + + parts = edje_edit_parts_list_get(ed); + EINA_LIST_FOREACH(parts, pl, pname) + { + if (!matches(pname, part)) + { + DBG("filter out part '%s': does not match '%s'", pname, part); + continue; + } + if (api_only) + { + if (!edje_edit_part_api_name_get(ed, pname)) + { + DBG("filter out part '%s': not API.", pname); + continue; + } + } + if (machine) printf("PART: %s\n", pname); + else printf(INDENT "part: %s\n", pname); + } + edje_edit_string_list_free(parts); + + group_end(); + evas_object_del(ed); + } + + if (!found_group) WRN("no groups match '%s'", group); + if (!found_part) WRN("no parts match '%s'", part); + return (!found_group) || (!found_part); +} + +static Eina_Bool +_group_parts_list(Evas_Object *ed) +{ + Eina_Bool found = EINA_FALSE; + Eina_List *parts, *l; + const char *name; + + parts_begin(); + + parts = edje_edit_parts_list_get(ed); + EINA_LIST_FOREACH(parts, l, name) + { + if (!matches(name, part)) + { + DBG("filter out part '%s': does not match '%s'", name, part); + continue; + } + if (api_only) + { + if (!edje_edit_part_api_name_get(ed, name)) + { + DBG("filter out part '%s': not API.", name); + continue; + } + } + + found = EINA_TRUE; + part_begin(ed, name); + part_details(ed, name); + part_end(); + } + + parts_end(); + return found; +} + +static void +programs_begin(void) +{ + if (machine) puts("PROGRAMS-BEGIN"); + else puts(INDENT "programs {"); +} + +static void +programs_end(void) +{ + if (machine) puts("PROGRAMS-END"); + else puts(INDENT "}"); +} + +static void +program_begin(const char *name) +{ + if (machine) printf("PROGRAM-BEGIN\nNAME: %s\n", name ? name : ""); + else + { + printf(INDENT2 "program { name: '%s';\n", name ? name : ""); + } +} + +static void +program_end(void) +{ + if (machine) puts("PROGRAM-END"); + else puts(INDENT2 "}"); +} + + +static char * +_program_api_name_get(Evas_Object *ed, const char *pprogram) +{ + const char *orig = edje_edit_program_api_name_get(ed, pprogram); + char *fix = _api_name_fix(orig); + edje_edit_string_free(orig); + return fix; +} + +static const char * +_transition_name_get(Edje_Tween_Mode mode) +{ + switch (mode) + { + case EDJE_TWEEN_MODE_LINEAR: return "LINEAR"; + case EDJE_TWEEN_MODE_ACCELERATE: return "ACCELERATE"; + case EDJE_TWEEN_MODE_DECELERATE: return "DECELERATE"; + case EDJE_TWEEN_MODE_SINUSOIDAL: return "SINUSOIDAL"; + default: + ERR("Unknown transition mode %d", mode); + return "???"; + } +} + +static void +program_details(Evas_Object *ed, const char *pprogram) +{ + const char *str, *str2; + char *api; + + if (detail < 1) return; + + if (machine) puts("PROGRAM-DETAILS-BEGIN"); + + str = api =_program_api_name_get(ed, pprogram); + str2 = edje_edit_program_api_description_get(ed, pprogram); + if (machine) + { + printf("API-NAME: %s\n", str ? str : ""); + printf("API-DESCRIPTION: %s\n", str2 ? str2 : ""); + } + else if ((str) || (str2)) + printf(INDENT3 "api: \"%s\" \"%s\";\n", str ? str : "", str2 ? str2 : ""); + free(api); + edje_edit_string_free(str2); + + str = edje_edit_program_signal_get(ed, pprogram); + if (machine) printf("SIGNAL: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "signal: \"%s\";\n", str); + edje_edit_string_free(str); + + str = edje_edit_program_source_get(ed, pprogram); + if (machine) printf("SOURCE: %s\n", str ? str : ""); + else if (str) printf(INDENT3 "source: \"%s\";\n", str); + edje_edit_string_free(str); + + if (detail >= 1) + { + Eina_List *lst, *l; + Edje_Action_Type type = edje_edit_program_action_get(ed, pprogram); + switch (type) + { + case EDJE_ACTION_TYPE_ACTION_STOP: + if (machine) puts("ACTION: ACTION_STOP"); + else puts(INDENT3 "action: ACTION_STOP;"); + break; + case EDJE_ACTION_TYPE_STATE_SET: + str = edje_edit_program_state_get(ed, pprogram); + if (machine) + printf("ACTION: STATE_SET\nACTION-STATE: %s %g\n", + str, edje_edit_program_value_get(ed, pprogram)); + else + printf(INDENT3 "action: STATE_SET \"%s\" %2.1f;\n", + str, edje_edit_program_value_get(ed, pprogram)); + edje_edit_string_free(str); + break; + case EDJE_ACTION_TYPE_SIGNAL_EMIT: + str = edje_edit_program_state_get(ed, pprogram); + str2 = edje_edit_program_state2_get(ed, pprogram); + if (machine) + printf("ACTION: SIGNAL_EMIT\nACTION-SIGNAL: %s\n" + "ACTION-SOURCE: %s\n", + str ? str : "", str2 ? str2 : ""); + else if ((str) || (str2)) + printf(INDENT3 "action: SIGNAL_EMIT \"%s\" \"%s\";\n", + str ? str : "", str2 ? str2 : ""); + edje_edit_string_free(str); + edje_edit_string_free(str2); + break; + //TODO Support Drag + //~ case EDJE_ACTION_TYPE_DRAG_VAL_SET: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_SET TODO;\n"); + //~ break; + //~ case EDJE_ACTION_TYPE_DRAG_VAL_STEP: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_STEP TODO;\n"); + //~ break; + //~ case EDJE_ACTION_TYPE_DRAG_VAL_PAGE: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_PAGE TODO;\n"); + //~ break; + default: + ERR("Unhandled pprogram action type %d", type); + break; + } + + if (detail > 1) + { + double from, range; + + from = edje_edit_program_transition_time_get(ed, pprogram); + if (from > 0.0) + { + str = _transition_name_get + (edje_edit_program_transition_get(ed, pprogram)); + if (machine) + printf("TRANSITION-NAME: %s\nTRANSITION-DURATION: %g\n", + str, from); + else printf(INDENT3 "transition: %s %g;\n", str, from); + /* do not free str! */ + } + + from = edje_edit_program_in_from_get(ed, pprogram); + range = edje_edit_program_in_range_get(ed, pprogram); + if (FDIFF(from, 0.0) || FDIFF(range, 0.0)) + { + if (machine) + printf("IN-FROM: %g\nIN-RANGE: %g\n", from, range); + else printf(INDENT3 "in: %g %g;\n", from, range); + } + } + + lst = edje_edit_program_targets_get(ed, pprogram); + EINA_LIST_FOREACH(lst, l, str) + if (machine) printf("TARGET: %s\n", str); + else printf(INDENT3 "target: \"%s\";\n", str); + edje_edit_string_list_free(lst); + + lst = edje_edit_program_afters_get(ed, pprogram); + EINA_LIST_FOREACH(lst, l, str) + if (machine) printf("AFTER: %s\n", str); + else printf(INDENT3 "after: \"%s\";\n", str); + edje_edit_string_list_free(lst); + + // TODO Support script {} + } + + if (machine) puts("PROGRAM-DETAILS-END"); +} + +static Eina_Bool +_group_programs_list(Evas_Object *ed) +{ + Eina_Bool found = EINA_FALSE; + Eina_List *programs, *l; + const char *name; + + programs_begin(); + + /* TODO: change programs to operate on their ID instead of names! + * needs huge change in Edje_Edit.h + */ + WRN("listing only programs with names!"); + programs = edje_edit_programs_list_get(ed); + EINA_LIST_FOREACH(programs, l, name) + { + if (!matches(name, program)) + { + DBG("filter out program '%s': does not match '%s'", name, program); + continue; + } + if (api_only) + { + if (!edje_edit_program_api_name_get(ed, name)) + { + DBG("filter out program '%s': not API.", name); + continue; + } + } + + found = EINA_TRUE; + program_begin(name); + program_details(ed, name); + program_end(); + } + + programs_end(); + return found; +} + +static int +_list(const char *mode) +{ + Eina_List *l; + const char *name; + int ret = 0; + Eina_Bool found_group = EINA_FALSE; + Eina_Bool req_part, found_part, req_prog, found_prog; + + if ((!strcmp(mode, "parts")) || (!strcmp(mode, "groups"))) + { + req_part = EINA_TRUE; + found_part = EINA_FALSE; + } + else + { + req_part = EINA_FALSE; + found_part = EINA_TRUE; + } + + if ((!strcmp(mode, "programs")) || (!strcmp(mode, "groups"))) + { + req_prog = EINA_TRUE; + found_prog = EINA_FALSE; + } + else + { + req_prog = EINA_FALSE; + found_prog = EINA_TRUE; + } + + EINA_LIST_FOREACH(groups, l, name) + { + Evas_Object *ed; + + if (!matches(name, group)) + { + DBG("filter out group '%s': does not match '%s'", name, group); + continue; + } + + ed = edje_edit_object_add(ecore_evas_get(ee)); + if (!edje_object_file_set(ed, file, name)) + { + Edje_Load_Error err = edje_object_load_error_get(ed); + const char *errmsg = edje_load_error_str(err); + ERR("could not load group '%s' from file '%s': %s", + name, file, errmsg); + evas_object_del(ed); + continue; + } + + found_group = EINA_TRUE; + group_begin(name); + group_details(ed); + + if (req_part) found_part |= _group_parts_list(ed); + if (req_prog) found_prog |= _group_programs_list(ed); + + group_end(); + evas_object_del(ed); + } + + /* no hard requirement for parts or programs for group listing */ + if (!strcmp(mode, "groups")) req_part = req_prog = EINA_FALSE; + + if (!found_group) + { + WRN("no groups match '%s'", group); + ret = 1; + } + if ((req_part) && (!found_part)) + { + WRN("no parts match '%s'", part); + ret = 1; + } + if ((req_prog) && (!found_prog)) + { + WRN("no programs match '%s'", program); + ret = 1; + } + return ret; +} + +static Evas_Object * +_edje_object_any_get(void) +{ + Evas_Object *ed = edje_edit_object_add(ecore_evas_get(ee)); + Eina_List *l; + const char *name; + if (!ed) return NULL; + EINA_LIST_FOREACH(groups, l, name) + if (edje_object_file_set(ed, file, name)) return ed; + evas_object_del(ed); + return NULL; +} + +static Eina_Bool +_gdata_list(void) +{ + Evas_Object *ed = _edje_object_any_get(); + Eina_List *l, *data; + const char *key; + + if (!ed) return EINA_FALSE; + + data = edje_edit_data_list_get(ed); + + if (machine) puts("DATA-BEGIN"); + else puts("data {"); + + EINA_LIST_FOREACH(data, l, key) + { + const char *value = edje_edit_data_value_get(ed, key); + if (machine) printf("ITEM: \"%s\" \"%s\"\n", key, value); + else printf(INDENT "item: \"%s\" \"%s\";\n", key, value); + } + + if (machine) puts("DATA-END"); + else puts("}"); + + edje_edit_string_list_free(data); + evas_object_del(ed); + return EINA_TRUE; +} + +static const char * +_comp_str_get(Evas_Object *ed, const char *img) +{ + static char buf[128]; + Edje_Edit_Image_Comp type = edje_edit_image_compression_type_get(ed, img); + int rate; + + switch (type) + { + case EDJE_EDIT_IMAGE_COMP_RAW: + return "RAW"; + case EDJE_EDIT_IMAGE_COMP_USER: + return "USER"; + case EDJE_EDIT_IMAGE_COMP_COMP: + return "COMP"; + case EDJE_EDIT_IMAGE_COMP_LOSSY: + rate = edje_edit_image_compression_rate_get(ed, img); + snprintf(buf, sizeof(buf), "LOSSY %d", rate); + return buf; + default: + ERR("Unknown compression type %d", type); + return "???"; + } +} + +static Eina_Bool +_images_list(void) +{ + Evas_Object *ed = _edje_object_any_get(); + Eina_List *l, *images; + const char *img; + + if (!ed) return EINA_FALSE; + + images = edje_edit_images_list_get(ed); + + if (machine) puts("IMAGES-BEGIN"); + else puts("images {"); + + EINA_LIST_FOREACH(images, l, img) + { + int id = edje_edit_image_id_get(ed, img); + const char *comp = _comp_str_get(ed, img); + + if (detail < 1) + { + if (machine) printf("IMAGE: %s\n", img); + else printf(INDENT "image: \"%s\" %s;\n", img, comp); + } + else if (detail == 1) + { + if (machine) printf("IMAGE: \"%s\" \"%s\"\n", img, comp); + else printf(INDENT "image: \"%s\" %s;\n", img, comp); + } + else + { + if (machine) + printf("IMAGE: \"edje/images/%d\" \"%s\" \"%s\"\n", + id, img, comp); + else + printf(INDENT "image: \"%s\" %s; /* id: \"edje/images/%d\" */\n", + img, comp, id); + } + } + + if (machine) puts("IMAGES-END"); + else puts("}"); + + edje_edit_string_list_free(images); + evas_object_del(ed); + return EINA_TRUE; +} + +static Eina_Bool +_fonts_list(void) +{ + Evas_Object *ed = _edje_object_any_get(); + Eina_List *l, *fonts; + const char *alias; + + if (!ed) return EINA_FALSE; + + fonts = edje_edit_fonts_list_get(ed); + + if (machine) puts("FONTS-BEGIN"); + else puts("fonts {"); + + EINA_LIST_FOREACH(fonts, l, alias) + { + const char *path = edje_edit_font_path_get(ed, alias); + + if (detail < 1) + { + if (machine) printf("FONT: %s\n", alias); + else printf(INDENT "font: \"%s\" \"%s\";\n", path, alias); + } + else if (detail == 1) + { + if (machine) printf("FONT: \"%s\" \"%s\"\n", path, alias); + else printf(INDENT "font: \"%s\" \"%s\";\n", path, alias); + } + else + { + if (machine) + printf("FONT: \"edje/fonts/%s\" \"%s\" \"%s\"\n", + alias, path, alias); + else + printf(INDENT + "font: \"%s\" \"%s\"; /* id: \"edje/fonts/%s\" */\n", + path, alias, alias); + } + + edje_edit_string_free(path); + } + + if (machine) puts("FONTS-END"); + else puts("}"); + + edje_edit_string_list_free(fonts); + evas_object_del(ed); + return EINA_TRUE; +} + +static Eina_Bool +_externals_list(void) +{ + Evas_Object *ed = _edje_object_any_get(); + Eina_List *l, *externals; + const char *key; + + if (!ed) return EINA_FALSE; + + externals = edje_edit_externals_list_get(ed); + + if (machine) puts("EXTERNALS-BEGIN"); + else puts("externals {"); + + EINA_LIST_FOREACH(externals, l, key) + { + if (machine) printf("EXTERNAL: %s\n", key); + else printf(INDENT "external: \"%s\";\n", key); + } + + if (machine) puts("EXTERNALS-END"); + else puts("}"); + + edje_edit_string_list_free(externals); + evas_object_del(ed); + return EINA_TRUE; +} + + +int +main(int argc, char **argv) +{ + Eina_Bool quit_option = EINA_FALSE; + char *mode = NULL; + char *detail_name = NULL; + int arg_index; + int ret = 0; + Ecore_Getopt_Value values[] = { + ECORE_GETOPT_VALUE_STR(mode), + ECORE_GETOPT_VALUE_STR(detail_name), + ECORE_GETOPT_VALUE_STR(group), + ECORE_GETOPT_VALUE_STR(part), + ECORE_GETOPT_VALUE_STR(program), + ECORE_GETOPT_VALUE_BOOL(api_only), + ECORE_GETOPT_VALUE_BOOL(api_fix), + ECORE_GETOPT_VALUE_BOOL(machine), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_NONE + }; + + setlocale(LC_NUMERIC, "C"); + + ecore_init(); + ecore_evas_init(); + eina_init(); + edje_init(); + + _log_dom = eina_log_domain_register("edje_inspector", EINA_COLOR_YELLOW); + if (_log_dom < 0) + { + EINA_LOG_CRIT("could not register log domain 'edje_inspector'"); + ret = 1; + goto error_log; + } + + arg_index = ecore_getopt_parse(&optdesc, values, argc, argv); + if (arg_index < 0) + { + ERR("could not parse arguments."); + ret = 1; + goto error_getopt; + } + else if (quit_option) goto error_getopt; + else if (arg_index != argc - 1) + { + ERR("incorrect number of parameters. Requires one single file."); + ret = 1; + goto error_getopt; + } + + if (!mode) mode = (char *)mode_choices[0]; + + if (detail_name) + { + if (!strcmp(detail_name, "none")) detail = 0; + else if (!strcmp(detail_name, "terse")) detail = 1; + else if (!strcmp(detail_name, "all")) detail = 2; + else ERR("Unknown detail level: '%s'", detail_name); + } + + file = argv[arg_index]; + + // check if the file is accessible + if (access(file, R_OK) == -1) + { + int e = errno; + ERR("File '%s' not accessible, error %d (%s).\n", + file, e, strerror(e)); + ret = 1; + goto error_getopt; + } + + DBG("mode=%s, detail=%d(%s), group=%s, part=%s, program=%s, api-only=%hhu" + ", api-fix=%hhu, machine=%hhu, file=%s", + mode, detail, detail_name, + group ? group : "", + part ? part : "", + program ? program : "", + api_only, api_fix, machine, file); + + + groups = edje_file_collection_list(file); + if (!groups) + { + ERR("no groups in edje file '%s'", file); + ret = 1; + goto error_getopt; + } + + if (!strcmp(mode, "groups-names")) ret = _groups_names_list(); + else + { + ee = ecore_evas_buffer_new(1, 1); + if (!ee) + { + ERR("could not create ecore_evas_buffer"); + ret = 1; + } + else + { + if (!strcmp(mode, "parts-names")) ret = _parts_names_list(); + else if (!strcmp(mode, "global-data")) ret = _gdata_list(); + else if (!strcmp(mode, "images")) ret = _images_list(); + else if (!strcmp(mode, "fonts")) ret = _fonts_list(); + else if (!strcmp(mode, "externals")) ret = _externals_list(); + else ret = _list(mode); + ecore_evas_free(ee); + } + } + + edje_file_collection_list_free(groups); + error_getopt: + eina_log_domain_unregister(_log_dom); + error_log: + edje_shutdown(); + ecore_evas_shutdown(); + ecore_shutdown(); + eina_shutdown(); + + return ret; +} diff --git a/src/bin/edje_multisense_convert.c b/src/bin/edje_multisense_convert.c new file mode 100644 index 0000000..347961e --- /dev/null +++ b/src/bin/edje_multisense_convert.c @@ -0,0 +1,329 @@ +#include "edje_multisense_convert.h" + +#ifdef HAVE_LIBSNDFILE +# define READBUF 1024 +# ifdef HAVE_VORBIS +# include +# endif + +# ifdef HAVE_LIBFLAC +# include +# include +# endif + +Edje_Sound_Encode * +_edje_multisense_encode(const char *filename, Edje_Sound_Sample *sample, double quality __UNUSED__) +{ + SF_INFO sfinfo; + SNDFILE* sfile; + Edje_Sound_Encode *enc_info; + + enc_info = calloc(1, sizeof(Edje_Sound_Encode)); + if (!enc_info) + { + ERR("while allocating memory to load file "); + exit(-1); + } + memset (&sfinfo, 0, sizeof (SF_INFO)); + + enc_info->encoded = EINA_FALSE; + enc_info->comp_type = "RAW PCM"; + + // Open wav file using sndfile + sfile = sf_open (filename, SFM_READ, &sfinfo); + if (!sfile) + { + ERR("Unable to open audio file: %s", filename); + exit(-1); + } + + if (!sf_format_check(&sfinfo)) + { + ERR("Unknown file, not a valid audio file"); + exit(-1); + } + + if (sample->compression == EDJE_SOUND_SOURCE_TYPE_INLINE_COMP) + { + sf_close(sfile); +#ifdef HAVE_LIBFLAC + //encode provided wav file to flac + enc_info->file = _edje_multisense_encode_to_flac((char *)filename, sfinfo); + if (enc_info->file) + { + enc_info->comp_type = "FLAC"; + enc_info->encoded = EINA_TRUE; + } +#else + WRN("WARNING: Unable to encode sound %s to FLAC compression", + sample->name); +#endif + } + else if (sample->compression == EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY) + { + sf_close(sfile); +#ifdef HAVE_VORBIS + //encode provided wav file to ogg-vorbis + enc_info->file = _edje_multisense_encode_to_ogg_vorbis((char *)filename, + quality, sfinfo); + if (enc_info->file) + { + enc_info->comp_type = "OGG-VORBIS"; + enc_info->encoded = EINA_TRUE; + } +#else + WRN("WARNING: Unable to encode sound %s to Ogg-Vorbis", + sample->name); +#endif + } + else + eina_stringshare_replace(&enc_info->file, filename); + return enc_info; +} + +#ifdef HAVE_LIBFLAC +const char* +_edje_multisense_encode_to_flac(char *snd_path, SF_INFO sfinfo) +{ + unsigned int total_samples = 0; /* can use a 32-bit number due to WAVE size limitations */ + FLAC__bool ok = 1; + FLAC__StreamEncoder *encoder = 0; + FLAC__StreamEncoderInitStatus init_status; + FLAC__StreamMetadata *metadata[2]; + FLAC__StreamMetadata_VorbisComment_Entry entry; + SNDFILE *sfile; + sf_count_t size; + char *tmp; + + sfile = sf_open(snd_path, SFM_READ, &sfinfo); + if (!sfile) return NULL; + if (!sf_format_check(&sfinfo)) + { + sf_close(sfile); + return NULL; + } + size = sf_seek(sfile, 0, SEEK_END); + sf_seek(sfile, 0, SEEK_SET); + tmp = malloc(strlen(snd_path) + 1 + 5); + if (!tmp) + { + sf_close(sfile); + return NULL; + } + strcpy(tmp, snd_path); + snd_path = tmp; + strcat(snd_path, ".flac"); + + total_samples = size; + + /* allocate the encoder */ + if ((encoder = FLAC__stream_encoder_new()) == NULL) + { + ERR("ERROR: Creating FLAC encoder\n"); + free(snd_path); + sf_close(sfile); + return NULL; + } + + /* Verify it's own encoded output. This will slow the encoding process. */ + ok &= FLAC__stream_encoder_set_verify(encoder, 1); + + //Levels range from 0 (fastest, least compression) to 8 (slowest, most compression). + //A value larger than 8 will be treated as 8. + //5 is used for good compression and moderate compression/decompression speed. + ok &= FLAC__stream_encoder_set_compression_level(encoder, 5); + ok &= FLAC__stream_encoder_set_channels(encoder, sfinfo.channels); + ok &= FLAC__stream_encoder_set_bits_per_sample(encoder, 16); + ok &= FLAC__stream_encoder_set_sample_rate(encoder, sfinfo.samplerate); + ok &= FLAC__stream_encoder_set_total_samples_estimate(encoder, total_samples); + + /* now add some metadata; we'll add some tags and a padding block */ + if (ok) + { + if ((metadata[0] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_VORBIS_COMMENT)) == NULL + || (metadata[1] = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PADDING)) == NULL + || !FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(&entry, "Encoder", "flac") + || !FLAC__metadata_object_vorbiscomment_append_comment(metadata[0], entry, 0)) + { + ERR("ERROR: out of memory error or tag error\n"); + ok = 0; + } + metadata[1]->length = 16; /* set the padding length */ + ok = FLAC__stream_encoder_set_metadata(encoder, metadata, 2); + } + + /* initialize encoder */ + if (ok) + { + init_status = FLAC__stream_encoder_init_file(encoder, snd_path, NULL, + (void *)(long)(total_samples)); + if (init_status != FLAC__STREAM_ENCODER_INIT_STATUS_OK) + { + ERR("ERROR: unable to initialize FLAC encoder: %s\n", + FLAC__StreamEncoderInitStatusString[init_status]); + ok = 0; + } + } + + /* read blocks of samples from WAVE file and feed to encoder */ + while (ok) + { + FLAC__int32 readbuffer[READBUF * 2]; + sf_count_t count; + int i; + + count = sf_readf_int(sfile, readbuffer, READBUF); + if (count <= 0) break; + for (i = 0; i < (count * sfinfo.channels); i++) + readbuffer[i] = readbuffer[i] >> 16; + ok = FLAC__stream_encoder_process_interleaved(encoder, readbuffer, + count); + } + + FLAC__stream_encoder_finish(encoder); + /* now that encoding is finished, the metadata can be freed */ + FLAC__metadata_object_delete(metadata[0]); + FLAC__metadata_object_delete(metadata[1]); + + FLAC__stream_encoder_delete(encoder); + sf_close(sfile); + return (snd_path); +} +#endif + +#ifdef HAVE_VORBIS +const char * +_edje_multisense_encode_to_ogg_vorbis(char *snd_path, double quality, SF_INFO sfinfo) +{ + ogg_stream_state os; /* take physical pages, weld into a logical stream of packets */ + ogg_page og; /* one Ogg bitstream page. Vorbis packets are inside */ + ogg_packet op; /* one raw packet of data for decode */ + vorbis_info vi; /* struct that stores all the static vorbis bitstream settings */ + vorbis_comment vc; /* struct that stores all the user comments */ + vorbis_dsp_state vd; /* central working state for the packet->PCM decoder */ + vorbis_block vb; /* local working space for packet->PCM decode */ + int eos = 0, ret; + char *tmp; + SNDFILE *sfile; + FILE *fout; + + sfile = sf_open(snd_path, SFM_READ, &sfinfo); + if (!sfile) return NULL; + if (!sf_format_check(&sfinfo)) + { + sf_close(sfile); + return NULL; + } + tmp = malloc(strlen(snd_path) + 1 + 4); + if (!tmp) + { + sf_close(sfile); + return NULL; + } + strcpy(tmp, snd_path); + snd_path = tmp; + strcat(snd_path, ".ogg"); + fout = fopen(snd_path, "wb"); + if (!fout) + { + free(snd_path); + sf_close(sfile); + return NULL; + } + + /********** Encode setup ************/ + vorbis_info_init(&vi); + ret = vorbis_encode_init(&vi, sfinfo.channels, sfinfo.samplerate, + -1, (long)(quality * 1000), -1); + if (ret == OV_EFAULT) printf("OV_EFAULT\n"); + if (ret == OV_EINVAL) printf("OV_EINVAL\n"); + if (ret == OV_EIMPL) printf("OV_EIMPL\n"); + + if (ret) + { + fclose(fout); + free(snd_path); + sf_close(sfile); + return NULL; + } + + /* add a comment */ + vorbis_comment_init(&vc); + vorbis_comment_add_tag(&vc, "", ""); + + /* set up the analysis state and auxiliary encoding storage */ + vorbis_analysis_init(&vd, &vi); + vorbis_block_init(&vd, &vb); + + srand(time(NULL)); + ogg_stream_init(&os, rand()); + + ogg_packet header; + ogg_packet header_comm; + ogg_packet header_code; + + vorbis_analysis_headerout(&vd, &vc, &header, &header_comm, &header_code); + ogg_stream_packetin(&os, &header); /* automatically placed in its own page */ + ogg_stream_packetin(&os, &header_comm); + ogg_stream_packetin(&os, &header_code); + + while (!eos) + { + int result = ogg_stream_flush(&os, &og); + if (!result) break; + fwrite(og.header, 1, og.header_len, fout); + fwrite(og.body, 1, og.body_len, fout); + } + + while (!eos) + { + int i, ch; + float readbuffer[READBUF * 2]; + sf_count_t count; + + count = sf_readf_float(sfile, readbuffer, READBUF); + + if (!count) + vorbis_analysis_wrote(&vd, 0); + else + { + float **buffer = vorbis_analysis_buffer(&vd, count); + + /* uninterleave samples */ + for (i = 0; i < count; i++) + { + for (ch = 0; ch < sfinfo.channels; ch++) + buffer[ch][i]= readbuffer[(i * sfinfo.channels) + ch]; + } + vorbis_analysis_wrote(&vd, i); + } + while (vorbis_analysis_blockout(&vd, &vb) == 1) + { + vorbis_analysis(&vb, NULL); + vorbis_bitrate_addblock(&vb); + + while (vorbis_bitrate_flushpacket(&vd, &op)) + { + ogg_stream_packetin(&os, &op); + while (!eos) + { + int result = ogg_stream_pageout(&os, &og); + if (!result) break; + fwrite(og.header, 1, og.header_len, fout); + fwrite(og.body, 1, og.body_len, fout); + if (ogg_page_eos(&og)) eos = 1; + } + } + } + } + ogg_stream_clear(&os); + vorbis_block_clear(&vb); + vorbis_dsp_clear(&vd); + vorbis_comment_clear(&vc); + vorbis_info_clear(&vi); + sf_close(sfile); + fclose (fout); + return snd_path; +} +#endif +#endif diff --git a/src/bin/edje_multisense_convert.h b/src/bin/edje_multisense_convert.h new file mode 100644 index 0000000..05ee2f7 --- /dev/null +++ b/src/bin/edje_multisense_convert.h @@ -0,0 +1,25 @@ +#ifndef EDJE_SND_CONVERT_H__ +# define EDJE_SND_CONVERT_H__ +#include "edje_private.h" + +#ifdef HAVE_LIBSNDFILE +#include + +#define SF_CONTAINER(x) ((x) & SF_FORMAT_TYPEMASK) +#define SF_CODEC(x) ((x) & SF_FORMAT_SUBMASK) + +typedef struct _Edje_Sound_Encode Edje_Sound_Encode; + +struct _Edje_Sound_Encode /*Encoding information*/ +{ + const char *file; /* the encode sound file path */ + Eina_Bool encoded; /* True if encoding is successful else False */ + char *comp_type; /* either LOSSLESS (FLAC) or LOSSY (Ogg/Vorbis) Compression */ +}; + +Edje_Sound_Encode *_edje_multisense_encode(const char* filename, Edje_Sound_Sample *sample, double quality); +const char *_edje_multisense_encode_to_flac(char *snd_path, SF_INFO sfinfo); +const char *_edje_multisense_encode_to_ogg_vorbis(char *snd_path, double quality, SF_INFO sfinfo); + +#endif +#endif diff --git a/src/bin/edje_player.c b/src/bin/edje_player.c new file mode 100644 index 0000000..077c1b4 --- /dev/null +++ b/src/bin/edje_player.c @@ -0,0 +1,802 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#ifdef HAVE_EVIL +# include +#endif + +#include +#include +#include +#include +#include + +struct opts { + char *file; + char *group; + Eina_Bool list_groups; + char *engine; + Eina_Rectangle size; + unsigned char color[3]; + Eina_Bool borderless; + Eina_Bool sticky; + Eina_Bool shaped; + Eina_Bool alpha; + Eina_Bool print; + Eina_Bool slave_mode; + double scale; + char *title; +}; + +static Eina_Bool _edje_load_or_show_error(Evas_Object *edje, const char *file, const char *group); + +static Ecore_Evas *win; + +static void +_win_title_set(const char *group, const char *file) +{ + char buf[1024]; + snprintf(buf, sizeof(buf), "Edje_Player - %s of %s", group, file); + ecore_evas_title_set(win, buf); +} + +static char * +_slave_mode_tok(char **p_arg) +{ + char *s, *e; + Eina_Bool is_quoted; + + if (!*p_arg) return NULL; + + s = *p_arg; + while (isspace(*s)) + s++; + + if (*s == '\0') + { + *p_arg = NULL; + return NULL; + } + else if (*s == '"') + { + is_quoted = EINA_TRUE; + s++; + *p_arg = s; + } + else + { + is_quoted = EINA_FALSE; + *p_arg = s; + } + + for (e = s; *e != '\0'; e++) + { + if ((!is_quoted) && (isspace(*e))) + break; + else if ((is_quoted) && (*e == '"')) + break; + } + + if (*e == '\0') return NULL; + + *e = '\0'; + return e + 1; +} + +static void +_slave_mode_signal(Evas_Object *edje, char *args) +{ + char *emission, *source; + + emission = args; + source = _slave_mode_tok(&emission); + _slave_mode_tok(&source); + + if ((!emission) || (!source)) + { + fputs("ERROR: Invalid command arguments.\n", stderr); + return; + } + + edje_object_signal_emit(edje, emission, source); +} + +static void +_slave_mode_info(Evas_Object *edje, char *args) +{ + _slave_mode_tok(&args); + + if (!args) + { + fputs("ERROR: Invalid command arguments.\n", stderr); + return; + } + + if (!edje_object_part_exists(edje, args)) + { + printf("INFO: \"%s\" does not exist.\n", args); + } + else + { + Evas_Coord x, y, w, h; + edje_object_part_geometry_get(edje, args, &x, &y, &w, &h); + printf("INFO: \"%s\" %d,%d,%d,%d\n", args, x, y, w, h); + } +} + +static void +_slave_mode_quit(Evas_Object *edje __UNUSED__, char *args __UNUSED__) +{ + puts("Bye!"); + ecore_main_loop_quit(); +} + +static void +_slave_mode_help(Evas_Object *edje __UNUSED__, char *args __UNUSED__) +{ + puts("Help:\n" + "One command per line, arguments separated by space. Strings may have " + "spaces if enclosed in quotes (\").\n" + "\n" + "\t [arguments]\n" + "\n" + "Available commands:\n" + "\tsignal \n" + "\t sends a signal to edje\n" + "\tinfo \n" + "\t Print part geometry: ,,,\n" + "\tquit\n" + "\t exit edje player.\n" + "\thelp\n" + "\t shows this message.\n"); + /* + * Extension ideas (are they useful?): + * - message: send a message + * - data: show data value + * - color_class: set color class values (maybe also list?) + * - text_class: set text class values (maybe also list?) + * - play_set: change play state + * - animation_set: change animation state + */ +} + +struct slave_cmd +{ + const char *cmd; + void (*func)(Evas_Object *edje, char *args); +} _slave_mode_commands[] = { + {"signal", _slave_mode_signal}, + {"info", _slave_mode_info}, + {"quit", _slave_mode_quit}, + {"help", _slave_mode_help}, + {NULL, NULL} +}; + +static Eina_Bool +_slave_mode(void *data, Ecore_Fd_Handler *fd_handler) +{ + Evas_Object *edje = data; + char buf[1024], *p; + const struct slave_cmd *itr; + size_t len; + + if (ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_ERROR)) + { + fputs("ERROR: error on stdin! Exit.\n", stderr); + ecore_main_loop_quit(); + return ECORE_CALLBACK_CANCEL; + } + if (!ecore_main_fd_handler_active_get(fd_handler, ECORE_FD_READ)) + return ECORE_CALLBACK_RENEW; + + if (!fgets(buf, sizeof(buf), stdin)) + { + fputs("ERROR: end of stdin! Exit.\n", stderr); + ecore_main_loop_quit(); + return ECORE_CALLBACK_CANCEL; + } + + len = strlen(buf); + if (len < 1) + { + fputs("ERROR: no input! Try: help\n", stderr); + return ECORE_CALLBACK_RENEW; + } + if (buf[len - 1] == '\n') + { + len--; + buf[len] = '\0'; + } + + p = strchr(buf, ' '); + if (p) + { + *p = '\0'; + p++; + + while (isspace(*p)) + p++; + if (*p == '\0') + p = NULL; + + if (p) + { + char *q = p + strlen(p) - 1; + while (isspace(*q)) + { + *q = '\0'; + q--; + } + } + } + + for (itr = _slave_mode_commands; itr->cmd; itr++) + { + if (strcmp(itr->cmd, buf) == 0) + { + itr->func(edje, p); + break; + } + } + + return ECORE_CALLBACK_RENEW; +} + +static void +_print_signal(void *data __UNUSED__, Evas_Object *o __UNUSED__, const char *emission, const char *source) +{ + printf("SIGNAL: \"%s\" \"%s\"\n", emission, source); +} + +static void +_print_message(void *data __UNUSED__, Evas_Object *edje __UNUSED__, Edje_Message_Type type, int id, void *msg) +{ + const char *typestr; + char buf[64]; + + switch (type) + { + case EDJE_MESSAGE_NONE: + typestr = "NONE"; + break; + case EDJE_MESSAGE_SIGNAL: + typestr = "SIGNAL"; + break; + case EDJE_MESSAGE_STRING: + typestr = "STRING"; + break; + case EDJE_MESSAGE_INT: + typestr = "INT"; + break; + case EDJE_MESSAGE_FLOAT: + typestr = "FLOAT"; + break; + case EDJE_MESSAGE_STRING_SET: + typestr = "STRING_SET"; + break; + case EDJE_MESSAGE_INT_SET: + typestr = "INT_SET"; + break; + case EDJE_MESSAGE_FLOAT_SET: + typestr = "FLOAT_SET"; + break; + case EDJE_MESSAGE_STRING_INT: + typestr = "STRING_INT"; + break; + case EDJE_MESSAGE_STRING_FLOAT: + typestr = "STRING_FLOAT"; + break; + case EDJE_MESSAGE_STRING_INT_SET: + typestr = "INT_SET"; + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + typestr = "FLOAT_SET"; + break; + default: + snprintf(buf, sizeof(buf), "UNKNOWN(%d)", type); + typestr = buf; + } + + printf("MESSAGE: type=%s, id=%d", typestr, id); + + switch (type) + { + case EDJE_MESSAGE_NONE: break; + case EDJE_MESSAGE_SIGNAL: break; + case EDJE_MESSAGE_STRING: + { + Edje_Message_String *m = msg; + printf(" \"%s\"", m->str); + } + break; + case EDJE_MESSAGE_INT: + { + Edje_Message_Int *m = msg; + printf(" %d", m->val); + } + break; + case EDJE_MESSAGE_FLOAT: + { + Edje_Message_Float *m = msg; + printf(" %f", m->val); + } + break; + case EDJE_MESSAGE_STRING_SET: + { + Edje_Message_String_Set *m = msg; + int i; + for (i = 0; i < m->count; i++) + printf(" \"%s\"", m->str[i]); + } + break; + case EDJE_MESSAGE_INT_SET: + { + Edje_Message_Int_Set *m = msg; + int i; + for (i = 0; i < m->count; i++) + printf(" %d", m->val[i]); + } + break; + case EDJE_MESSAGE_FLOAT_SET: + { + Edje_Message_Float_Set *m = msg; + int i; + for (i = 0; i < m->count; i++) + printf(" %f", m->val[i]); + } + break; + case EDJE_MESSAGE_STRING_INT: + { + Edje_Message_String_Int *m = msg; + printf(" \"%s\" %d", m->str, m->val); + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + { + Edje_Message_String_Float *m = msg; + printf(" \"%s\" %f", m->str, m->val); + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + { + Edje_Message_String_Int_Set *m = msg; + int i; + printf(" \"%s\"", m->str); + for (i = 0; i < m->count; i++) + printf(" %d", m->val[i]); + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + { + Edje_Message_String_Float_Set *m = msg; + int i; + printf(" \"%s\"", m->str); + for (i = 0; i < m->count; i++) + printf(" %f", m->val[i]); + } + break; + default: + break; + } + + putchar('\n'); +} + +static void +_reset_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *stack, void *event_info __UNUSED__) +{ + Evas_Coord minw, minh; + Evas_Object *edje = data; + + edje_object_size_min_get(edje, &minw, &minh); + if ((minw <= 0) && (minh <= 0)) + edje_object_size_min_calc(edje, &minw, &minh); + + evas_object_size_hint_min_set(stack, minw, minh); +} + +static void +_key_down(void *data, Evas *e __UNUSED__, Evas_Object *stack __UNUSED__, void *event_info) +{ + Evas_Event_Key_Down *ev = event_info; + struct opts *opts = data; + + if ((!strcmp(ev->keyname, "equal")) || + (!strcmp(ev->keyname, "plus"))) + opts->scale += 0.1; + else if ((!strcmp(ev->keyname, "minus")) || + (!strcmp(ev->keyname, "underscore"))) + opts->scale -= 0.1; + else if ((!strcmp(ev->keyname, "0"))) + opts->scale = 1.0; + if (opts->scale < 0.1) opts->scale = 0.1; + else if (opts->scale > 10.0) opts->scale = 1.0; + edje_scale_set(opts->scale); +} + +static Evas_Object * +_create_stack(Evas *evas, const struct opts *opts) +{ + Evas_Object *stack = evas_object_box_add(evas); + if (!stack) + { + fputs("ERROR: could not create object stack (box).\n", stderr); + return NULL; + } + evas_object_box_layout_set(stack, evas_object_box_layout_stack, NULL, NULL); + evas_object_resize(stack, opts->size.w, opts->size.h); + evas_object_size_hint_weight_set(stack, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(stack, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(stack); + return stack; +} + +static Evas_Object * +_create_bg(Evas *evas, const struct opts *opts) +{ + const unsigned char *color = opts->color; + Evas_Object *bg = evas_object_rectangle_add(evas); + if (!bg) + { + fputs("ERROR: could not create background.\n", stderr); + return NULL; + } + evas_object_resize(bg, opts->size.w, opts->size.h); + evas_object_color_set(bg, color[0], color[1], color[2], 255); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(bg, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(bg); + return bg; +} + +static void +_edje_reload(void *data __UNUSED__, Evas_Object *obj, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + const char *file; + const char *group; + edje_object_signal_callback_del(obj, "edje,change,file", "edje", _edje_reload); + + edje_object_file_get(obj, &file, &group); + _edje_load_or_show_error(obj, file, group); +} + +static Eina_Bool +_edje_load_or_show_error(Evas_Object *edje, const char *file, const char *group) +{ + const char *errmsg; + int err; + + if (edje_object_file_set(edje, file, group)) + { + edje_object_signal_callback_add(edje, "edje,change,file", "edje", _edje_reload, NULL);; + evas_object_focus_set(edje, EINA_TRUE); + return EINA_TRUE; + } + + err = edje_object_load_error_get(edje); + errmsg = edje_load_error_str(err); + fprintf(stderr, "ERROR: could not load edje file '%s', group '%s': %s\n", + file, group, errmsg); + return EINA_FALSE; +} + +static Evas_Object * +_create_edje(Evas *evas, const struct opts *opts) +{ + Evas_Coord minw, minh, maxw, maxh; + Evas_Object *edje = edje_object_add(evas); + if (!edje) + { + fputs("ERROR: could not create edje.\n", stderr); + return NULL; + } + + if (opts->group) + { + if (!_edje_load_or_show_error(edje, opts->file, opts->group)) + { + evas_object_del(edje); + return NULL; + } + if (!opts->title) _win_title_set(opts->group, opts->file); + } + else + { + if (edje_file_group_exists(opts->file, "main")) + { + if (!_edje_load_or_show_error(edje, opts->file, "main")) + { + evas_object_del(edje); + return NULL; + } + if (!opts->title) _win_title_set("main", opts->file); + } + else + { + Eina_List *groups = edje_file_collection_list(opts->file); + const char *group; + if (!groups) + { + fprintf(stderr, "ERROR: file '%s' has no groups!\n", + opts->file); + evas_object_del(edje); + return NULL; + } + group = groups->data; + if (!_edje_load_or_show_error(edje, opts->file, group)) + { + edje_file_collection_list_free(groups); + evas_object_del(edje); + return NULL; + } + if (!opts->title) _win_title_set(group, opts->file); + edje_file_collection_list_free(groups); + } + } + + edje_object_size_max_get(edje, &maxw, &maxh); + edje_object_size_min_get(edje, &minw, &minh); + if ((minw <= 0) && (minh <= 0)) + edje_object_size_min_calc(edje, &minw, &minh); + + evas_object_size_hint_max_set(edje, maxw, maxh); + evas_object_size_hint_min_set(edje, minw, minh); + + evas_object_size_hint_weight_set(edje, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(edje, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(edje); + + return edje; +} + +static unsigned char _parse_color(__UNUSED__ const Ecore_Getopt *parser, __UNUSED__ const Ecore_Getopt_Desc *desc, const char *str, __UNUSED__ void *data, Ecore_Getopt_Value *storage) +{ + unsigned char *color = (unsigned char *)storage->ptrp; + + if (sscanf(str, "%hhu,%hhu,%hhu", color, color + 1, color + 2) != 3) + { + fprintf(stderr, "ERROR: incorrect color value '%s'\n", str); + return 0; + } + + return 1; +} + +static void _cb_delete(__UNUSED__ Ecore_Evas *ee) +{ + ecore_main_loop_quit(); +} + +const Ecore_Getopt optdesc = { + "edje_player", + "%prog [options] ", + PACKAGE_VERSION, + "(C) 2010 Enlightenment", + "BSD with advertisement clause", + "Simple application to view edje files.", + 0, + { + ECORE_GETOPT_STORE_STR + ('g', "group", "The edje group to view (defaults to 'main')."), + ECORE_GETOPT_STORE_TRUE + ('G', "list-groups", "The groups in the given file."), + ECORE_GETOPT_STORE_STR + ('e', "engine", "The Ecore-Evas engine to use (see --list-engines)"), + ECORE_GETOPT_CALLBACK_NOARGS + ('E', "list-engines", "list Ecore-Evas engines", + ecore_getopt_callback_ecore_evas_list_engines, NULL), + ECORE_GETOPT_CALLBACK_ARGS + ('Z', "size", "size to use in wxh form.", "WxH", + ecore_getopt_callback_size_parse, NULL), + ECORE_GETOPT_CALLBACK_ARGS + ('c', "bg-color", "Color of the background (if not shaped or alpha)", + "RRGGBB", _parse_color, NULL), + ECORE_GETOPT_STORE_TRUE + ('b', "borderless", "Display window without border."), + ECORE_GETOPT_STORE_TRUE + ('y', "sticky", "Display window sticky."), + ECORE_GETOPT_STORE_TRUE + ('s', "shaped", "Display window shaped."), + ECORE_GETOPT_STORE_TRUE + ('a', "alpha", "Display window with alpha channel " + "(needs composite manager!)"), + ECORE_GETOPT_STORE_STR + ('t', "title", "Define the window title string"), + ECORE_GETOPT_STORE_TRUE + ('p', "print", "Print signals and messages to stdout"), + ECORE_GETOPT_STORE_TRUE + ('S', "slave-mode", "Listen for commands on stdin"), + ECORE_GETOPT_STORE_DOUBLE + ('z', "scale", "Set scale factor"), + ECORE_GETOPT_LICENSE('L', "license"), + ECORE_GETOPT_COPYRIGHT('C', "copyright"), + ECORE_GETOPT_VERSION('V', "version"), + ECORE_GETOPT_HELP('h', "help"), + ECORE_GETOPT_SENTINEL + } +}; + +int main(int argc, char **argv) +{ + Evas *evas; + Evas_Object *stack, *edje; + struct opts opts; + Eina_Bool quit_option = EINA_FALSE; + int args; + Ecore_Getopt_Value values[] = { + ECORE_GETOPT_VALUE_STR(opts.group), + ECORE_GETOPT_VALUE_BOOL(opts.list_groups), + ECORE_GETOPT_VALUE_STR(opts.engine), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_PTR_CAST(opts.size), + ECORE_GETOPT_VALUE_PTR_CAST(opts.color), + ECORE_GETOPT_VALUE_BOOL(opts.borderless), + ECORE_GETOPT_VALUE_BOOL(opts.sticky), + ECORE_GETOPT_VALUE_BOOL(opts.shaped), + ECORE_GETOPT_VALUE_BOOL(opts.alpha), + ECORE_GETOPT_VALUE_STR(opts.title), + ECORE_GETOPT_VALUE_BOOL(opts.print), + ECORE_GETOPT_VALUE_BOOL(opts.slave_mode), + ECORE_GETOPT_VALUE_DOUBLE(opts.scale), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_BOOL(quit_option), + ECORE_GETOPT_VALUE_NONE + }; + + memset(&opts, 0, sizeof(opts)); + opts.scale = 1.0; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + if (!edje_init()) + goto shutdown_ecore_evas; + edje_frametime_set(1.0/60.0); + + args = ecore_getopt_parse(&optdesc, values, argc, argv); + if (args < 0) + { + fputs("Could not parse arguments.\n", stderr); + goto shutdown_edje; + } + else if (quit_option) + { + goto end; + } + else if (args >= argc) + { + fputs("Missing edje file to load.\n", stderr); + goto shutdown_edje; + } + + ecore_app_args_set(argc, (const char **)argv); + edje_scale_set(opts.scale); + + // check if the given edj file is there + if (access(argv[args], R_OK) == -1) + { + int e = errno; + fprintf(stderr, "ERROR: file '%s' not accessible, error %d (%s).\n", + argv[args], e, strerror(e)); + goto end; + } + + opts.file = argv[args]; + if (opts.list_groups) + { + Eina_List *groups, *n; + const char *group; + groups = edje_file_collection_list(opts.file); + printf("%d groups in file '%s':\n", eina_list_count(groups), opts.file); + EINA_LIST_FOREACH(groups, n, group) + printf("\t'%s'\n", group); + edje_file_collection_list_free(groups); + goto end; + } + + if (opts.size.w <= 0) opts.size.w = 320; + if (opts.size.h <= 0) opts.size.h = 240; + win = ecore_evas_new(opts.engine, 0, 0, opts.size.w, opts.size.h, NULL); + if (!win) + { + fprintf(stderr, + "ERROR: could not create window of " + "size %dx%d using engine %s.\n", + opts.size.w, opts.size.h, opts.engine ? opts.engine : "(auto)"); + goto shutdown_edje; + } + + ecore_evas_callback_delete_request_set(win, _cb_delete); + evas = ecore_evas_get(win); + stack = _create_stack(evas, &opts); + if (!stack) + { + goto free_ecore_evas; + } + + ecore_evas_object_associate(win, stack, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + if (opts.alpha) + ecore_evas_alpha_set(win, EINA_TRUE); + else if (opts.shaped) + ecore_evas_shaped_set(win, EINA_TRUE); + else + { + Evas_Object *bg = _create_bg(evas, &opts); + if (bg) evas_object_box_append(stack, bg); + } + + edje = _create_edje(evas, &opts); + if (edje) + evas_object_box_append(stack, edje); + else + { + goto free_ecore_evas; + } + + evas_object_focus_set(stack, EINA_TRUE); + evas_object_event_callback_add(stack, EVAS_CALLBACK_KEY_DOWN, + _key_down, &opts); + evas_object_event_callback_add(stack, EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _reset_size_hints, edje); + + if (opts.print) + { + edje_object_signal_callback_add(edje, "*", "*", _print_signal, NULL); + edje_object_message_handler_set(edje, _print_message, NULL); + } + + if (opts.slave_mode) + { +#ifndef _WIN32 + int flags; + flags = fcntl(STDIN_FILENO, F_GETFL, 0); + flags |= O_NONBLOCK; + if (fcntl(STDIN_FILENO, F_SETFL, flags) < 0) + { + fprintf(stderr, "ERROR: Could not set stdin to non-block: %s\n", + strerror(errno)); + goto free_ecore_evas; + } + ecore_main_fd_handler_add(STDIN_FILENO, ECORE_FD_READ | ECORE_FD_ERROR, + _slave_mode, edje, NULL, NULL); +#else + /* TODO: port the code above to Windows */ + fprintf (stderr, "ERROR: slave mode not working on Windows\n"); + goto free_ecore_evas; +#endif + } + + ecore_evas_borderless_set(win, opts.borderless); + ecore_evas_sticky_set(win, opts.sticky); + if (opts.title) + ecore_evas_title_set(win, opts.title); + + ecore_evas_show(win); + ecore_main_loop_begin(); + + ecore_evas_free(win); + end: + edje_shutdown(); + ecore_evas_shutdown(); + + return 0; + + free_ecore_evas: + ecore_evas_free(win); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + return EXIT_FAILURE; +} diff --git a/src/bin/edje_recc b/src/bin/edje_recc new file mode 100644 index 0000000..2ae81ad --- /dev/null +++ b/src/bin/edje_recc @@ -0,0 +1,69 @@ +#!/bin/sh + +set -e + +usage () { + echo "Usage:" + echo " edje_recc [OPTIONS] input_file.edj" + echo "" + echo "Where OPTIONS is one or more of:" + echo "" + echo "-v Verbose output" + echo "-no-lossy Do NOT allow images to be lossy" + echo "-no-comp Do NOT allow images to be lossless compression" + echo "-no-raw Do NOT allow images to be zero compression" + echo "-min-quality VAL Do NOT allow lossy images with quality < VAL (0-100)" + echo "-max-quality VAL Do NOT allow lossy images with quality > VAL (0-100)" + exit -1 +} + +if [ $# -lt 1 ]; then + usage +fi + +OPT="" +if [ $# -ge 1 ]; then + for I in $@; do + case "$I" in + -h) + usage + ;; + + -help) + usage + ;; + + --help) + usage + ;; + + *.edj) + IN=$I + ;; + + *) + OPT=$OPT" "$I + ;; + esac + done +fi + +if [ -z "$IN" ]; then + echo "ERROR: NO input file.edj provided!" + echo "" + usage; +fi + +F=`basename $IN` +B=`basename $F .edj` +T="./...edje_tmp" +rm -rf $T +mkdir -p $T +cp $IN $T +cd $T +edje_decc $F +cd $B +./build.sh $OPT +cd ../.. +mv $T/$B/$F $IN +rm -rf $T diff --git a/src/bin/edje_watch.c b/src/bin/edje_watch.c new file mode 100644 index 0000000..01033b6 --- /dev/null +++ b/src/bin/edje_watch.c @@ -0,0 +1,137 @@ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include +#ifdef HAVE_EVIL +# include +#endif + +char watchfile[PATH_MAX]; +char *edje_cc_command = NULL; +Eina_List *watching = NULL; +Ecore_Timer *timeout = NULL; + +static void +read_watch_file(const char *file) +{ + Eina_File *f; + Eina_Iterator *it; + Eina_File_Line *ln; + Eio_Monitor *mon; + Eina_List *r = NULL; + + f = eina_file_open(file, EINA_FALSE); + if (!f) return ; + + it = eina_file_map_lines(f); + if (!it) goto err; + + EINA_ITERATOR_FOREACH(it, ln) + { + const char *path; + + path = eina_stringshare_add_length(ln->start, ln->length); + r = eina_list_append(r, eio_monitor_add(path)); + eina_stringshare_del(path); + } + eina_iterator_free(it); + + EINA_LIST_FREE(watching, mon) + eio_monitor_del(mon); + watching = r; + + err: + eina_file_close(f); +} + +Eina_Bool +rebuild(void *data __UNUSED__) +{ + double start, end; + + start = ecore_time_get(); + fprintf(stderr, "SYSTEM('%s')\n", edje_cc_command); + if (system(edje_cc_command) == 0) + read_watch_file(watchfile); + end = ecore_time_get(); + fprintf(stderr, "DONE IN %f\n", end - start); + + timeout = NULL; + return EINA_FALSE; +} + +Eina_Bool +some_change(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__) +{ + Eio_Monitor_Event *ev = event; + + fprintf(stderr, "EVENT %i on [%s]\n", type, ev->filename); + if (timeout) ecore_timer_del(timeout); + timeout = ecore_timer_add(0.5, rebuild, NULL); + + return ECORE_CALLBACK_PASS_ON; +} + +int +main(int argc, char **argv) +{ + char *watchout; + Eina_Strbuf *buf; + double start, end; + int tfd; + int i; + + eina_init(); + ecore_init(); + eio_init(); + + if (argc < 2) return -1; + + ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, some_change, NULL); + ecore_event_handler_add(EIO_MONITOR_FILE_CREATED, some_change, NULL); + ecore_event_handler_add(EIO_MONITOR_FILE_DELETED, some_change, NULL); + ecore_event_handler_add(EIO_MONITOR_FILE_CLOSED, some_change, NULL); + +#ifdef HAVE_EVIL + watchout = (char *)evil_tmpdir_get(); +#else + watchout = "/tmp"; +#endif + + snprintf(watchfile, PATH_MAX, "%s/edje_watch-tmp-XXXXXX", watchout); + + tfd = mkstemp(watchfile); + if (tfd < 0) return -1; + close(tfd); + + buf = eina_strbuf_new(); + if (!buf) return -1; + + eina_strbuf_append_printf(buf, "%s/edje_cc -threads -fastcomp -w %s ", PACKAGE_BIN_DIR, watchfile); + for (i = 1; i < argc; ++i) + eina_strbuf_append_printf(buf, "%s ", argv[i]); + + edje_cc_command = eina_strbuf_string_steal(buf); + + eina_strbuf_free(buf); + + start = ecore_time_get(); + fprintf(stderr, "SYSTEM('%s')\n", edje_cc_command); + system(edje_cc_command); + read_watch_file(watchfile); + end = ecore_time_get(); + fprintf(stderr, "DONE %f\n", end - start); + + ecore_main_loop_begin(); + + unlink(watchfile); + + eio_shutdown(); + ecore_shutdown(); + eina_shutdown(); + + return 1; +} diff --git a/src/bin/epp/Makefile.am b/src/bin/epp/Makefile.am new file mode 100644 index 0000000..6db5016 --- /dev/null +++ b/src/bin/epp/Makefile.am @@ -0,0 +1,59 @@ +# Makefile for GNU C compiler. +# Copyright (C) 1987, 88, 90-94, 1995 Free Software Foundation, Inc. + +#This file is part of GNU CC. + +#GNU CC is free software; you can redistribute it and/or modify +#it under the terms of the GNU General Public License as published by +#the Free Software Foundation; either version 2, or (at your option) +#any later version. + +#GNU CC is distributed in the hope that it will be useful, +#but WITHOUT ANY WARRANTY; without even the implied warranty of +#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +#GNU General Public License for more details. + +#You should have received a copy of the GNU General Public License +#along with GNU CC; see the file COPYING. If not, write to +#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + +MAINTAINERCLEANFILES = Makefile.in + +eppdir = @libdir@/@PACKAGE@/utils + +epp_PROGRAMS = epp + +epp_SOURCES = \ +cpplib.h \ +cpphash.h \ +cppalloc.c \ +cpperror.c \ +cppexp.c \ +cpphash.c \ +cpplib.c \ +cppmain.c + +epp_CPPFLAGS = \ +-I$(top_builddir) \ +$(CWARNFLAGS) + +DEFS= \ +-DHAVE_CONFIG_H \ +-DHAVE_STRERROR \ +-DFATAL_EXIT_CODE=1 \ +-DSUCCESS_EXIT_CODE=0 \ +-DGCC_INCLUDE_DIR=\"/usr/include\" \ +-DGPLUSPLUS_INCLUDE_DIR=\"/usr/include\" \ +-DTOOL_INCLUDE_DIR=\"/usr/bin\" \ +-DHOST_BITS_PER_LONG=32 \ +-DBITS_PER_UNIT=8 \ +-DHOST_BITS_PER_INT=32 \ +-DBITS_PER_WORD=16 \ +-DTARGET_BELL=7 \ +-DTARGET_BS=8 \ +-DTARGET_FF=12 \ +-DTARGET_NEWLINE=10 \ +-DTARGET_CR=13 \ +-DTARGET_TAB=9 \ +-DTARGET_VT=11 + diff --git a/src/bin/epp/cppalloc.c b/src/bin/epp/cppalloc.c new file mode 100644 index 0000000..4ce0dd0 --- /dev/null +++ b/src/bin/epp/cppalloc.c @@ -0,0 +1,70 @@ +/* Part of CPP library. (memory allocation - xmalloc etc) + * Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. + * Written by Per Bothner, 1994. + * Based on CCCP program by by Paul Rubin, June 1986 + * Adapted to ANSI C, Richard Stallman, Jan 1987 + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include "cpplib.h" + +static void +memory_full(void) +{ + cpp_fatal("Memory exhausted."); +} + +void * +xmalloc(unsigned size) +{ + char *ptr = (char *)malloc(size); + + if (ptr) + return (ptr); + memory_full(); + /*NOTREACHED */ + return 0; +} + +void * +xrealloc(void *old, unsigned size) +{ + char *ptr = (char *)realloc(old, size); + + if (!ptr) + memory_full(); + return ptr; +} + +void * +xcalloc(unsigned number, unsigned size) +{ + char *ptr = (char *)calloc(number, size); + + if (!ptr) + memory_full(); + return ptr; +} diff --git a/src/bin/epp/cpperror.c b/src/bin/epp/cpperror.c new file mode 100644 index 0000000..f4cd5eb --- /dev/null +++ b/src/bin/epp/cpperror.c @@ -0,0 +1,147 @@ +/* Default error handlers for CPP Library. + * Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. + * Written by Per Bothner, 1994. + * Based on CCCP program by by Paul Rubin, June 1986 + * Adapted to ANSI C, Richard Stallman, Jan 1987 + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "cpplib.h" + +/* Print the file names and line numbers of the #include + * commands which led to the current file. */ + +void +cpp_print_containing_files(cpp_reader * pfile) +{ + cpp_buffer *ip; + int first = 1; + + /* If stack of files hasn't changed since we last printed + * this info, don't repeat it. */ + if (pfile->input_stack_listing_current) + return; + + ip = cpp_file_buffer(pfile); + + /* Give up if we don't find a source file. */ + if (!ip) + return; + + /* Find the other, outer source files. */ + while ((ip = CPP_PREV_BUFFER(ip)), ip != CPP_NULL_BUFFER(pfile)) + { + long line, col; + + cpp_buf_line_and_col(ip, &line, &col); + if (ip->fname) + { + if (first) + { + first = 0; + fprintf(stderr, "In file included"); + } + else + fprintf(stderr, ",\n "); + } + } + if (!first) + fprintf(stderr, ":\n"); + + /* Record we have printed the status as of this time. */ + pfile->input_stack_listing_current = 1; +} + +void +cpp_file_line_for_message(cpp_reader * pfile __UNUSED__, const char *filename, + int line, int column) +{ + if (column > 0) + { + fprintf(stderr, "%s:%d:%d: ", filename, line, column); + } + else + { + fprintf(stderr, "%s:%d: ", filename, line); + } +} + +/* IS_ERROR is 1 for error, 0 for warning */ +void +cpp_message_v(cpp_reader * pfile, int is_error, const char *msg, va_list args) +{ + if (is_error) + pfile->errors++; + else + fprintf(stderr, "warning: "); + vfprintf(stderr, msg, args); + fprintf(stderr, "\n"); +} + +void +cpp_message(cpp_reader * pfile, int is_error, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + + cpp_message_v(pfile, is_error, msg, args); + + va_end(args); +} + +static void +cpp_fatal_v(const char *msg, va_list args) +{ + fprintf(stderr, "%s: ", progname); + vfprintf(stderr, msg, args); + fprintf(stderr, "\n"); + exit(FATAL_EXIT_CODE); +} + +void +cpp_fatal(const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + + cpp_fatal_v(msg, args); + + va_end(args); +} + +void +cpp_pfatal_with_name(cpp_reader * pfile, const char *name) +{ + cpp_perror_with_name(pfile, name); +#ifdef VMS + exit(vaxc$errno); +#else + exit(FATAL_EXIT_CODE); +#endif +} diff --git a/src/bin/epp/cppexp.c b/src/bin/epp/cppexp.c new file mode 100644 index 0000000..5fcb33f --- /dev/null +++ b/src/bin/epp/cppexp.c @@ -0,0 +1,1090 @@ +/* Parse C expressions for CCCP. + * Copyright (C) 1987, 1992, 1994, 1995 Free Software Foundation. + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! + * + * Written by Per Bothner 1994. */ + +/* Parse a C expression from text in a string */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef __EMX__ +# include +#endif + +#ifdef MULTIBYTE_CHARS +# include +#endif + +#include +#include +#include + +#include "cpplib.h" +#include "cpphash.h" + +/* This is used for communicating lists of keywords with cccp.c. */ +struct arglist { + struct arglist *next; + unsigned char *name; + int length; + int argno; +}; + +/* Define a generic NULL if one hasn't already been defined. */ + +#ifndef NULL +#define NULL 0 +#endif + +#ifndef GENERIC_PTR +#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__) +#define GENERIC_PTR void * +#else +#define GENERIC_PTR char * +#endif +#endif + +#ifndef NULL_PTR +#define NULL_PTR ((GENERIC_PTR)0) +#endif + +#ifndef CHAR_TYPE_SIZE +#define CHAR_TYPE_SIZE BITS_PER_UNIT +#endif + +#ifndef INT_TYPE_SIZE +#define INT_TYPE_SIZE BITS_PER_WORD +#endif + +#ifndef LONG_TYPE_SIZE +#define LONG_TYPE_SIZE BITS_PER_WORD +#endif + +#ifndef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE INT_TYPE_SIZE +#endif + +#ifndef MAX_CHAR_TYPE_SIZE +#define MAX_CHAR_TYPE_SIZE CHAR_TYPE_SIZE +#endif + +#ifndef MAX_INT_TYPE_SIZE +#define MAX_INT_TYPE_SIZE INT_TYPE_SIZE +#endif + +#ifndef MAX_LONG_TYPE_SIZE +#define MAX_LONG_TYPE_SIZE LONG_TYPE_SIZE +#endif + +#ifndef MAX_WCHAR_TYPE_SIZE +#define MAX_WCHAR_TYPE_SIZE WCHAR_TYPE_SIZE +#endif + +/* Yield nonzero if adding two numbers with A's and B's signs can yield a + * number with SUM's sign, where A, B, and SUM are all C integers. */ +#define possible_sum_sign(a, b, sum) ((((a) ^ (b)) | ~ ((a) ^ (sum))) < 0) + +#define ERROR 299 +#define OROR 300 +#define ANDAND 301 +#define EQUAL 302 +#define NOTEQUAL 303 +#define LEQ 304 +#define GEQ 305 +#define LSH 306 +#define RSH 307 +#define NAME 308 +#define INT 309 +#define CHAR 310 + +#define LEFT_OPERAND_REQUIRED 1 +#define RIGHT_OPERAND_REQUIRED 2 +#define HAVE_VALUE 4 +/* SKIP_OPERAND is set for '&&' '||' '?' and ':' when the + * following operand should be short-circuited instead of evaluated. */ +#define SKIP_OPERAND 8 +/*#define UNSIGNEDP 16 */ + +struct operation { + short op; + char rprio; /* Priority of op (relative to it right operand). */ + char flags; + char unsignedp; /* true if value should be treated as unsigned */ + HOST_WIDE_INT value; /* The value logically "right" of op. */ +}; + +/* Take care of parsing a number (anything that starts with a digit). + * LEN is the number of characters in it. */ + +/* maybe needs to actually deal with floating point numbers */ + +static void +parse_number(struct operation *op, cpp_reader * pfile, const char *start, + int olen) +{ + const char *p = start; + int c; + unsigned long n = 0, nd, ULONG_MAX_over_base; + int base = 10; + int len = olen; + int overflow = 0; + int digit, largest_digit = 0; + int spec_long = 0; + + op->unsignedp = 0; + + for (c = 0; c < len; c++) + if (p[c] == '.') + { + /* It's a float since it contains a point. */ + cpp_error(pfile, + "floating point numbers not allowed in #if expressions"); + op->op = ERROR; + return; + } + if (len >= 3 && (!strncmp(p, "0x", 2) || !strncmp(p, "0X", 2))) + { + p += 2; + base = 16; + len -= 2; + } + else if (*p == '0') + base = 8; + + /* Some buggy compilers (e.g. MPW C) seem to need both casts. */ + ULONG_MAX_over_base = ((unsigned long)-1) / ((unsigned long)base); + + for (; len > 0; len--) + { + c = *p++; + + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (base == 16 && c >= 'a' && c <= 'f') + digit = c - 'a' + 10; + else if (base == 16 && c >= 'A' && c <= 'F') + digit = c - 'A' + 10; + else + { + /* `l' means long, and `u' means unsigned. */ + while (1) + { + if (c == 'l' || c == 'L') + { + if (spec_long) + cpp_error(pfile, "two `l's in integer constant"); + spec_long = 1; + } + else if (c == 'u' || c == 'U') + { + if (op->unsignedp) + cpp_error(pfile, "two `u's in integer constant"); + op->unsignedp = 1; + } + else + break; + + if (--len == 0) + break; + c = *p++; + } + /* Don't look for any more digits after the suffixes. */ + break; + } + if (largest_digit < digit) + largest_digit = digit; + nd = n * base + digit; + overflow |= (ULONG_MAX_over_base < n) | (nd < n); + n = nd; + } + + if (len != 0) + { + cpp_error(pfile, "Invalid number in #if expression"); + op->op = ERROR; + return; + } + if (base <= largest_digit) + cpp_warning(pfile, "integer constant contains digits beyond the radix"); + + if (overflow) + cpp_warning(pfile, "integer constant out of range"); + + /* If too big to be signed, consider it unsigned. */ + if ((long)n < 0 && !op->unsignedp) + { + if (base == 10) + cpp_warning(pfile, + "integer constant is so large that it is unsigned"); + op->unsignedp = 1; + } + op->value = n; + op->op = INT; +} + +struct token { + const char *oper; + int token; +}; + +static struct token tokentab2[] = { + {"&&", ANDAND}, + {"||", OROR}, + {"<<", LSH}, + {">>", RSH}, + {"==", EQUAL}, + {"!=", NOTEQUAL}, + {"<=", LEQ}, + {">=", GEQ}, + {"++", ERROR}, + {"--", ERROR}, + {NULL, ERROR} +}; + +/* Read one token. */ + +static void +cpp_lex(struct operation *op, cpp_reader * pfile) +{ + int c; + struct token *toktab; + enum cpp_token token; + unsigned char *tok_start, *tok_end; + int old_written; + + op->value = 0; + op->unsignedp = 0; + + retry: + + old_written = CPP_WRITTEN(pfile); + cpp_skip_hspace(pfile); + c = CPP_BUF_PEEK(CPP_BUFFER(pfile)); + if (c == '#') + { + parse_number(op, pfile, cpp_read_check_assertion(pfile) ? "1" : "0", 1); + return; + } + + if (c == '\n') + { + op->op = 0; + return; + } + token = cpp_get_token(pfile); + tok_start = pfile->token_buffer + old_written; + tok_end = CPP_PWRITTEN(pfile); + pfile->limit = tok_start; + switch (token) + { + case CPP_EOF: /* Should not happen ... */ + op->op = 0; + break; + + case CPP_VSPACE: + case CPP_POP: + if (CPP_BUFFER(pfile)->fname) + { + op->op = 0; + break; + } + goto retry; + + case CPP_HSPACE: + case CPP_COMMENT: + goto retry; + + case CPP_NUMBER: + parse_number(op, pfile, (char *)tok_start, tok_end - tok_start); + break; + + case CPP_STRING: + cpp_error(pfile, "string constants not allowed in #if expressions"); + op->op = ERROR; + break; + + case CPP_CHAR: + /* This code for reading a character constant + * handles multicharacter constants and wide characters. + * It is mostly copied from c-lex.c. */ + { + int result = 0; + int num_chars = 0; + unsigned width = MAX_CHAR_TYPE_SIZE; + int wide_flag = 0; + int max_chars; + char *ptr = (char *)tok_start; + +#ifdef MULTIBYTE_CHARS + char token_buffer[MAX_LONG_TYPE_SIZE / + MAX_CHAR_TYPE_SIZE + MB_CUR_MAX]; +#endif + + if (*ptr == 'L') + { + ptr++; + wide_flag = 1; + width = MAX_WCHAR_TYPE_SIZE; +#ifdef MULTIBYTE_CHARS + max_chars = MB_CUR_MAX; +#else + max_chars = 1; +#endif + } + else + max_chars = MAX_LONG_TYPE_SIZE / width; + + while (1) + { + if (ptr >= (char *)CPP_PWRITTEN(pfile) || (c = *ptr++) == '\'') + break; + + if (c == '\\') + { + c = cpp_parse_escape(pfile, &ptr); + if (width < HOST_BITS_PER_INT + && (unsigned)c >= (unsigned)(1 << width)) + cpp_pedwarn(pfile, + "escape sequence out of range for character"); + } + num_chars++; + + /* Merge character into result; ignore excess chars. */ + if (num_chars < max_chars + 1) + { + if (width < HOST_BITS_PER_INT) + result = (result << width) | (c & ((1 << width) - 1)); + else + result = c; +#ifdef MULTIBYTE_CHARS + token_buffer[num_chars - 1] = c; +#endif + } + } + +#ifdef MULTIBYTE_CHARS + token_buffer[num_chars] = 0; +#endif + + if (c != '\'') + cpp_error(pfile, "malformatted character constant"); + else if (num_chars == 0) + cpp_error(pfile, "empty character constant"); + else if (num_chars > max_chars) + { + num_chars = max_chars; + cpp_error(pfile, "character constant too long"); + } + else if (num_chars != 1 && !CPP_TRADITIONAL(pfile)) + cpp_warning(pfile, "multi-character character constant"); + + /* If char type is signed, sign-extend the constant. */ + if (!wide_flag) + { + int num_bits = num_chars * width; + + if (cpp_lookup("__CHAR_UNSIGNED__", + sizeof("__CHAR_UNSIGNED__") - 1, -1) + || ((result >> (num_bits - 1)) & 1) == 0) + op->value = + result & ((unsigned long)~0 >> + (HOST_BITS_PER_LONG - num_bits)); + else + op->value = + result | ~((unsigned long)~0 >> + (HOST_BITS_PER_LONG - num_bits)); + } + else + { +#ifdef MULTIBYTE_CHARS + /* Set the initial shift state and convert the next sequence. */ + result = 0; + /* In all locales L'\0' is zero and mbtowc will return zero, + * so don't use it. */ + if (num_chars > 1 + || (num_chars == 1 && token_buffer[0] != '\0')) + { + wchar_t wc; + + (void)mbtowc(NULL_PTR, NULL_PTR, 0); + if (mbtowc(&wc, token_buffer, num_chars) == num_chars) + result = wc; + else + cpp_warning(pfile, + "Ignoring invalid multibyte character"); + } +#endif + op->value = result; + } + } + + /* This is always a signed type. */ + op->unsignedp = 0; + op->op = CHAR; + break; + + case CPP_NAME: + parse_number(op, pfile, "0", 0); + break; + + case CPP_OTHER: + /* See if it is a special token of length 2. */ + if (tok_start + 2 == tok_end) + { + for (toktab = tokentab2; toktab->oper; toktab++) + if (tok_start[0] == toktab->oper[0] + && tok_start[1] == toktab->oper[1]) + break; + if (toktab->token == ERROR) + { + char *buf = (char *)malloc(40); + + memset(buf, 0, 40); + + sprintf(buf, "`%s' not allowed in operand of `#if'", + tok_start); + cpp_error(pfile, buf); + free(buf); + } + op->op = toktab->token; + break; + } + /* fall through */ + default: + op->op = *tok_start; + break; + } +} + +/* Parse a C escape sequence. STRING_PTR points to a variable + * containing a pointer to the string to parse. That pointer + * is updated past the characters we use. The value of the + * escape sequence is returned. + * + * A negative value means the sequence \ newline was seen, + * which is supposed to be equivalent to nothing at all. + * + * If \ is followed by a null character, we return a negative + * value and leave the string pointer pointing at the null character. + * + * If \ is followed by 000, we return 0 and leave the string pointer + * after the zeros. A value of 0 does not mean end of string. */ + +int +cpp_parse_escape(cpp_reader * pfile, char **string_ptr) +{ + int c = *(*string_ptr)++; + + switch (c) + { + case 'a': + return TARGET_BELL; + case 'b': + return TARGET_BS; + case 'e': + case 'E': + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "non-ANSI-standard escape sequence, `\\%c'", c); + return 033; + case 'f': + return TARGET_FF; + case 'n': + return TARGET_NEWLINE; + case 'r': + return TARGET_CR; + case 't': + return TARGET_TAB; + case 'v': + return TARGET_VT; + case '\n': + return -2; + case 0: + (*string_ptr)--; + return 0; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + { + int i = c - '0'; + int count = 0; + + while (++count < 3) + { + c = *(*string_ptr)++; + if (c >= '0' && c <= '7') + i = (i << 3) + c - '0'; + else + { + (*string_ptr)--; + break; + } + } + if ((i & ~((1 << MAX_CHAR_TYPE_SIZE) - 1)) != 0) + { + i &= (1 << MAX_CHAR_TYPE_SIZE) - 1; + cpp_warning(pfile, + "octal character constant does not fit in a byte"); + } + return i; + } + case 'x': + { + unsigned i = 0, overflow = 0, digits_found = 0, digit; + + for (;;) + { + c = *(*string_ptr)++; + if (c >= '0' && c <= '9') + digit = c - '0'; + else if (c >= 'a' && c <= 'f') + digit = c - 'a' + 10; + else if (c >= 'A' && c <= 'F') + digit = c - 'A' + 10; + else + { + (*string_ptr)--; + break; + } + overflow |= i ^ (i << 4 >> 4); + i = (i << 4) + digit; + digits_found = 1; + } + if (!digits_found) + cpp_error(pfile, "\\x used with no following hex digits"); + if (overflow | (i & ~((1 << BITS_PER_UNIT) - 1))) + { + i &= (1 << BITS_PER_UNIT) - 1; + cpp_warning(pfile, + "hex character constant does not fit in a byte"); + } + return i; + } + default: + return c; + } +} + +static void +integer_overflow(cpp_reader * pfile) +{ + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "integer overflow in preprocessor expression"); +} + +static long +left_shift(cpp_reader * pfile, long a, int unsignedp, unsigned long b) +{ + if (b >= HOST_BITS_PER_LONG) + { + if (!unsignedp && a != 0) + integer_overflow(pfile); + return 0; + } + else if (unsignedp) + return (unsigned long)a << b; + else + { + long l = a << b; + + if (l >> b != a) + integer_overflow(pfile); + return l; + } +} + +static long +right_shift(cpp_reader * pfile __UNUSED__, long a, int unsignedp, + unsigned long b) +{ + if (b >= HOST_BITS_PER_LONG) + { + return unsignedp ? 0 : a >> (HOST_BITS_PER_LONG - 1); + } + else if (unsignedp) + { + return (unsigned long)a >> b; + } + else + { + return a >> b; + } +} + +/* These priorities are all even, so we can handle associatively. */ +#define PAREN_INNER_PRIO 0 +#define COMMA_PRIO 4 +#define COND_PRIO (COMMA_PRIO+2) +#define OROR_PRIO (COND_PRIO+2) +#define ANDAND_PRIO (OROR_PRIO+2) +#define OR_PRIO (ANDAND_PRIO+2) +#define XOR_PRIO (OR_PRIO+2) +#define AND_PRIO (XOR_PRIO+2) +#define EQUAL_PRIO (AND_PRIO+2) +#define LESS_PRIO (EQUAL_PRIO+2) +#define SHIFT_PRIO (LESS_PRIO+2) +#define PLUS_PRIO (SHIFT_PRIO+2) +#define MUL_PRIO (PLUS_PRIO+2) +#define UNARY_PRIO (MUL_PRIO+2) +#define PAREN_OUTER_PRIO (UNARY_PRIO+2) + +#define COMPARE(OP) \ + top->unsignedp = 0;\ + top->value = (unsigned1 || unsigned2) ? (unsigned long) v1 OP (unsigned long) v2 : (v1 OP v2) + +/* Parse and evaluate a C expression, reading from PFILE. + * Returns the value of the expression. */ + +HOST_WIDE_INT +cpp_parse_expr(cpp_reader * pfile) +{ + /* The implementation is an operator precedence parser, + * i.e. a bottom-up parser, using a stack for not-yet-reduced tokens. + * + * The stack base is 'stack', and the current stack pointer is 'top'. + * There is a stack element for each operator (only), + * and the most recently pushed operator is 'top->op'. + * An operand (value) is stored in the 'value' field of the stack + * element of the operator that precedes it. + * In that case the 'flags' field has the HAVE_VALUE flag set. */ + +#define INIT_STACK_SIZE 20 + struct operation init_stack[INIT_STACK_SIZE]; + struct operation *stack = init_stack; + struct operation *limit = stack + INIT_STACK_SIZE; + struct operation *top = stack; + int lprio = 0, rprio = 0; + int skip_evaluation = 0; + + top->rprio = 0; + top->flags = 0; + for (;;) + { + struct operation op; + char flags = 0; + + /* Read a token */ + cpp_lex(&op, pfile); + + /* See if the token is an operand, in which case go to set_value. + * If the token is an operator, figure out its left and right + * priorities, and then goto maybe_reduce. */ + + switch (op.op) + { + case NAME: + top->value = 0, top->unsignedp = 0; + goto set_value; + case INT: + case CHAR: + top->value = op.value; + top->unsignedp = op.unsignedp; + goto set_value; + case 0: + lprio = 0; + goto maybe_reduce; + case '+': + case '-': + /* Is this correct if unary ? FIXME */ + flags = RIGHT_OPERAND_REQUIRED; + lprio = PLUS_PRIO; + rprio = lprio + 1; + goto maybe_reduce; + case '!': + case '~': + flags = RIGHT_OPERAND_REQUIRED; + rprio = UNARY_PRIO; + lprio = rprio + 1; + goto maybe_reduce; + case '*': + case '/': + case '%': + lprio = MUL_PRIO; + goto binop; + case '<': + case '>': + case LEQ: + case GEQ: + lprio = LESS_PRIO; + goto binop; + case EQUAL: + case NOTEQUAL: + lprio = EQUAL_PRIO; + goto binop; + case LSH: + case RSH: + lprio = SHIFT_PRIO; + goto binop; + case '&': + lprio = AND_PRIO; + goto binop; + case '^': + lprio = XOR_PRIO; + goto binop; + case '|': + lprio = OR_PRIO; + goto binop; + case ANDAND: + lprio = ANDAND_PRIO; + goto binop; + case OROR: + lprio = OROR_PRIO; + goto binop; + case ',': + lprio = COMMA_PRIO; + goto binop; + case '(': + lprio = PAREN_OUTER_PRIO; + rprio = PAREN_INNER_PRIO; + goto maybe_reduce; + case ')': + lprio = PAREN_INNER_PRIO; + rprio = PAREN_OUTER_PRIO; + goto maybe_reduce; + case ':': + lprio = COND_PRIO; + rprio = COND_PRIO; + goto maybe_reduce; + case '?': + lprio = COND_PRIO + 1; + rprio = COND_PRIO; + goto maybe_reduce; + binop: + flags = LEFT_OPERAND_REQUIRED | RIGHT_OPERAND_REQUIRED; + rprio = lprio + 1; + goto maybe_reduce; + default: + cpp_error(pfile, "invalid character in #if"); + goto syntax_error; + } + + set_value: + /* Push a value onto the stack. */ + if (top->flags & HAVE_VALUE) + { + cpp_error(pfile, "syntax error in #if"); + goto syntax_error; + } + top->flags |= HAVE_VALUE; + continue; + + maybe_reduce: + /* Push an operator, and check if we can reduce now. */ + while (top->rprio > lprio) + { + long v1 = top[-1].value, v2 = top[0].value; + int unsigned1 = top[-1].unsignedp, unsigned2 = + top[0].unsignedp; + + top--; + if ((top[1].flags & LEFT_OPERAND_REQUIRED) + && !(top[0].flags & HAVE_VALUE)) + { + cpp_error(pfile, "syntax error - missing left operand"); + goto syntax_error; + } + if ((top[1].flags & RIGHT_OPERAND_REQUIRED) + && !(top[1].flags & HAVE_VALUE)) + { + cpp_error(pfile, "syntax error - missing right operand"); + goto syntax_error; + } + /* top[0].value = (top[1].op)(v1, v2); */ + switch (top[1].op) + { + case '+': + if (!(top->flags & HAVE_VALUE)) + { /* Unary '+' */ + top->value = v2; + top->unsignedp = unsigned2; + top->flags |= HAVE_VALUE; + } + else + { + top->value = v1 + v2; + top->unsignedp = unsigned1 || unsigned2; + if (!top->unsignedp && !skip_evaluation + && !possible_sum_sign(v1, v2, top->value)) + integer_overflow(pfile); + } + break; + case '-': + if (skip_evaluation); /* do nothing */ + else if (!(top->flags & HAVE_VALUE)) + { /* Unary '-' */ + top->value = -v2; + if ((top->value & v2) < 0 && !unsigned2) + integer_overflow(pfile); + top->unsignedp = unsigned2; + top->flags |= HAVE_VALUE; + } + else + { /* Binary '-' */ + top->value = v1 - v2; + top->unsignedp = unsigned1 || unsigned2; + if (!top->unsignedp + && !possible_sum_sign(top->value, v2, v1)) + integer_overflow(pfile); + } + break; + case '*': + top->unsignedp = unsigned1 || unsigned2; + if (top->unsignedp) + top->value = (unsigned long)v1 *v2; + + else if (!skip_evaluation) + { + top->value = v1 * v2; + if (v1 + && (top->value / v1 != v2 + || (top->value & v1 & v2) < 0)) + integer_overflow(pfile); + } + break; + case '/': + if (skip_evaluation) + break; + if (v2 == 0) + { + cpp_error(pfile, "division by zero in #if"); + v2 = 1; + } + top->unsignedp = unsigned1 || unsigned2; + if (top->unsignedp) + top->value = (unsigned long)v1 / v2; + else + { + top->value = v1 / v2; + if ((top->value & v1 & v2) < 0) + integer_overflow(pfile); + } + break; + case '%': + if (skip_evaluation) + break; + if (v2 == 0) + { + cpp_error(pfile, "division by zero in #if"); + v2 = 1; + } + top->unsignedp = unsigned1 || unsigned2; + if (top->unsignedp) + top->value = (unsigned long)v1 % v2; + else + top->value = v1 % v2; + break; + case '!': + if (top->flags & HAVE_VALUE) + { + cpp_error(pfile, "syntax error"); + goto syntax_error; + } + top->value = !v2; + top->unsignedp = 0; + top->flags |= HAVE_VALUE; + break; + case '~': + if (top->flags & HAVE_VALUE) + { + cpp_error(pfile, "syntax error"); + goto syntax_error; + } + top->value = ~v2; + top->unsignedp = unsigned2; + top->flags |= HAVE_VALUE; + break; + case '<': + COMPARE(<); + break; + case '>': + COMPARE(>); + break; + case LEQ: + COMPARE(<=); + break; + case GEQ: + COMPARE(>=); + break; + case EQUAL: + top->value = (v1 == v2); + top->unsignedp = 0; + break; + case NOTEQUAL: + top->value = (v1 != v2); + top->unsignedp = 0; + break; + case LSH: + if (skip_evaluation) + break; + top->unsignedp = unsigned1; + if (v2 < 0 && !unsigned2) + top->value = right_shift(pfile, v1, unsigned1, -v2); + else + top->value = left_shift(pfile, v1, unsigned1, v2); + break; + case RSH: + if (skip_evaluation) + break; + top->unsignedp = unsigned1; + if (v2 < 0 && !unsigned2) + top->value = left_shift(pfile, v1, unsigned1, -v2); + else + top->value = right_shift(pfile, v1, unsigned1, v2); + break; +#define LOGICAL(OP) \ + top->value = v1 OP v2;\ + top->unsignedp = unsigned1 || unsigned2; + case '&': + LOGICAL(&); + break; + case '^': + LOGICAL(^); + break; + case '|': + LOGICAL(|); + break; + case ANDAND: + top->value = v1 && v2; + top->unsignedp = 0; + if (!v1) + skip_evaluation--; + break; + case OROR: + top->value = v1 || v2; + top->unsignedp = 0; + if (v1) + skip_evaluation--; + break; + case ',': + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "comma operator in operand of `#if'"); + top->value = v2; + top->unsignedp = unsigned2; + break; + case '(': + case '?': + cpp_error(pfile, "syntax error in #if"); + goto syntax_error; + case ':': + if (top[0].op != '?') + { + cpp_error(pfile, + "syntax error ':' without preceding '?'"); + goto syntax_error; + } + else if (!(top[1].flags & HAVE_VALUE) + || !(top[-1].flags & HAVE_VALUE) + || !(top[0].flags & HAVE_VALUE)) + { + cpp_error(pfile, "bad syntax for ?: operator"); + goto syntax_error; + } + else + { + top--; + if (top->value) + skip_evaluation--; + top->value = top->value ? v1 : v2; + top->unsignedp = unsigned1 || unsigned2; + } + break; + case ')': + if ((top[1].flags & HAVE_VALUE) + || !(top[0].flags & HAVE_VALUE) + || top[0].op != '(' || (top[-1].flags & HAVE_VALUE)) + { + cpp_error(pfile, "mismatched parentheses in #if"); + goto syntax_error; + } + else + { + top--; + top->value = v1; + top->unsignedp = unsigned1; + top->flags |= HAVE_VALUE; + } + break; + default: + fprintf(stderr, + top[1].op >= ' ' && top[1].op <= '~' + ? "unimplemented operator '%c'\n" + : "unimplemented operator '\\%03o'\n", top[1].op); + } + } + if (op.op == 0) + { + if (top != stack) + cpp_error(pfile, "internal error in #if expression"); + if (stack != init_stack) + free(stack); + return top->value; + } + top++; + + /* Check for and handle stack overflow. */ + if (top == limit) + { + struct operation *new_stack; + int old_size = (char *)limit - (char *)stack; + int new_size = 2 * old_size; + + if (stack != init_stack) + new_stack = (struct operation *)xrealloc(stack, new_size); + else + { + new_stack = (struct operation *)xmalloc(new_size); + memcpy((char *)new_stack, (char *)stack, old_size); + } + stack = new_stack; + top = (struct operation *)((char *)new_stack + old_size); + limit = (struct operation *)((char *)new_stack + new_size); + } + top->flags = flags; + top->rprio = rprio; + top->op = op.op; + if ((op.op == OROR && top[-1].value) + || (op.op == ANDAND && !top[-1].value) + || (op.op == '?' && !top[-1].value)) + { + skip_evaluation++; + } + else if (op.op == ':') + { + if (top[-2].value) /* Was condition true? */ + skip_evaluation++; + else + skip_evaluation--; + } + } + syntax_error: + if (stack != init_stack) + free(stack); + skip_rest_of_line(pfile); + return 0; +} diff --git a/src/bin/epp/cpphash.c b/src/bin/epp/cpphash.c new file mode 100644 index 0000000..e3b68e0 --- /dev/null +++ b/src/bin/epp/cpphash.c @@ -0,0 +1,198 @@ +/* Part of CPP library. (Macro hash table support.) + * Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. + * Written by Per Bothner, 1994. + * Based on CCCP program by by Paul Rubin, June 1986 + * Adapted to ANSI C, Richard Stallman, Jan 1987 + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "cpplib.h" +#include "cpphash.h" + +static HASHNODE *hashtab[HASHSIZE]; + +#define IS_IDCHAR(ch) is_idchar[(unsigned char)(ch)] + +/* + * return hash function on name. must be compatible with the one + * computed a step at a time, elsewhere + */ +int +hashf(const char *name, int len, int hashsize) +{ + int r = 0; + + while (len--) + r = HASHSTEP(r, *name++); + + return MAKE_POS(r) % hashsize; +} + +/* + * find the most recent hash node for name name (ending with first + * non-identifier char) installed by install + * + * If LEN is >= 0, it is the length of the name. + * Otherwise, compute the length by scanning the entire name. + * + * If HASH is >= 0, it is the precomputed hash code. + * Otherwise, compute the hash code. + */ +HASHNODE * +cpp_lookup(const char *name, int len, int hash) +{ + const char *bp; + HASHNODE *bucket; + + if (len < 0) + { + for (bp = name; IS_IDCHAR(*bp); bp++) + ; + len = bp - name; + } + if (hash < 0) + hash = hashf(name, len, HASHSIZE); + + bucket = hashtab[hash]; + while (bucket) + { + if (bucket->length == len + && strncmp((const char *)bucket->name, name, len) == 0) + return bucket; + bucket = bucket->next; + } + return (HASHNODE *) 0; +} + +/* + * Delete a hash node. Some weirdness to free junk from macros. + * More such weirdness will have to be added if you define more hash + * types that need it. + */ + +/* Note that the DEFINITION of a macro is removed from the hash table + * but its storage is not freed. This would be a storage leak + * except that it is not reasonable to keep undefining and redefining + * large numbers of macros many times. + * In any case, this is necessary, because a macro can be #undef'd + * in the middle of reading the arguments to a call to it. + * If #undef freed the DEFINITION, that would crash. */ + +void +delete_macro(HASHNODE * hp) +{ + + if (hp->prev) + hp->prev->next = hp->next; + if (hp->next) + hp->next->prev = hp->prev; + + /* make sure that the bucket chain header that + * the deleted guy was on points to the right thing afterwards. */ + if (hp == *hp->bucket_hdr) + *hp->bucket_hdr = hp->next; + + if (hp->type == T_MACRO) + { + DEFINITION *d = hp->value.defn; + struct reflist *ap, *nextap; + + for (ap = d->pattern; ap; ap = nextap) + { + nextap = ap->next; + free(ap); + } + if (d->nargs >= 0) + free(d->args.argnames); + free(d); + } + free(hp); +} +/* + * install a name in the main hash table, even if it is already there. + * name stops with first non alphanumeric, except leading '#'. + * caller must check against redefinition if that is desired. + * delete_macro () removes things installed by install () in fifo order. + * this is important because of the `defined' special symbol used + * in #if, and also if pushdef/popdef directives are ever implemented. + * + * If LEN is >= 0, it is the length of the name. + * Otherwise, compute the length by scanning the entire name. + * + * If HASH is >= 0, it is the precomputed hash code. + * Otherwise, compute the hash code. + */ +HASHNODE * +install(const char *name, int len, enum node_type type, int ivalue, char *value, + int hash) +{ + HASHNODE *hp; + int i, bucket; + const char *p; + + if (len < 0) + { + p = name; + while (IS_IDCHAR(*p)) + p++; + len = p - name; + } + if (hash < 0) + hash = hashf(name, len, HASHSIZE); + + i = sizeof(HASHNODE) + len + 1; + hp = (HASHNODE *) xmalloc(i); + bucket = hash; + hp->bucket_hdr = &hashtab[bucket]; + hp->next = hashtab[bucket]; + hashtab[bucket] = hp; + hp->prev = NULL; + if (hp->next) + hp->next->prev = hp; + hp->type = type; + hp->length = len; + if (hp->type == T_CONST) + hp->value.ival = ivalue; + else + hp->value.cpval = value; + hp->name = ((char *)hp) + sizeof(HASHNODE); + memcpy(hp->name, name, len); + hp->name[len] = 0; + return hp; +} + +void +cpp_hash_cleanup(cpp_reader * pfile __UNUSED__) +{ + int i; + + for (i = HASHSIZE; --i >= 0;) + { + while (hashtab[i]) + delete_macro(hashtab[i]); + } +} diff --git a/src/bin/epp/cpphash.h b/src/bin/epp/cpphash.h new file mode 100644 index 0000000..524a850 --- /dev/null +++ b/src/bin/epp/cpphash.h @@ -0,0 +1,41 @@ +enum node_type; + +/* different kinds of things that can appear in the value field + of a hash node. Actually, this may be useless now. */ +union hashval { + int ival; + char *cpval; + DEFINITION *defn; +}; + +struct hashnode { + struct hashnode *next; /* double links for easy deletion */ + struct hashnode *prev; + struct hashnode **bucket_hdr; /* also, a back pointer to this node's hash + * chain is kept, in case the node is the head + * of the chain and gets deleted. */ + enum node_type type; /* type of special token */ + int length; /* length of token, for quick comparison */ + char *name; /* the actual name */ + union hashval value; /* pointer to expansion, or whatever */ +}; + +typedef struct hashnode HASHNODE; + +/* Some definitions for the hash table. The hash function MUST be + computed as shown in hashf () below. That is because the rescan + loop computes the hash value `on the fly' for most tokens, + in order to avoid the overhead of a lot of procedure calls to + the hashf () function. Hashf () only exists for the sake of + politeness, for use when speed isn't so important. */ + +#define HASHSIZE 1403 +#define HASHSTEP(old, c) ((old << 2) + c) +#define MAKE_POS(v) (v & 0x7fffffff) /* make number positive */ + +extern int hashf(const char *name, int len, int hashsize); +extern HASHNODE *cpp_lookup(const char *name, int len, int hash); +extern void delete_macro(HASHNODE * hp); +extern HASHNODE *install(const char *name, int len, enum node_type type, + int ivalue, char *value, int hash); +extern void cpp_hash_cleanup(cpp_reader * pfile); diff --git a/src/bin/epp/cpplib.c b/src/bin/epp/cpplib.c new file mode 100644 index 0000000..30c7f01 --- /dev/null +++ b/src/bin/epp/cpplib.c @@ -0,0 +1,7461 @@ +/* CPP Library. + * Copyright (C) 1986, 87, 89, 92, 93, 94, 1995 Free Software Foundation, Inc. + * Written by Per Bothner, 1994-95. + * Based on CCCP program by by Paul Rubin, June 1986 + * Adapted to ANSI C, Richard Stallman, Jan 1987 + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef HAVE_ALLOCA_H +# include +#elif defined __GNUC__ +# define alloca __builtin_alloca +#elif defined _AIX +# define alloca __alloca +#elif defined _MSC_VER +# include +# define alloca _alloca +#else +# include +void *alloca (size_t); +#endif + +#ifdef __EMX__ +#include +#endif + +#ifndef STANDARD_INCLUDE_DIR +#define STANDARD_INCLUDE_DIR "/usr/include" +#endif + +#ifndef LOCAL_INCLUDE_DIR +#define LOCAL_INCLUDE_DIR "/usr/local/include" +#endif + +#include "cpplib.h" +#include "cpphash.h" + +/* + * On Windows, if the file is not opened in binary mode, + * read does not return the correct size, because of + * CR / LF translation. + */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + +const char *version_string = "0.0.0"; + +#ifndef STDC_VALUE +#define STDC_VALUE 1 +#endif + +/* By default, colon separates directories in a path. */ +#ifndef PATH_SEPARATOR +#define PATH_SEPARATOR ':' +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef VMS +#ifndef USG +#include +#include /* for __DATE__ and __TIME__ */ +#ifdef HAVE_SYS_RESOURCE_H +# include +#endif +#else +#include /* CYGNUS LOCAL: shebs -noquiet */ +#include +#include +#include +#endif /* USG */ +#endif /* not VMS */ + +/* This defines "errno" properly for VMS, and gives us EACCES. */ +#include + +#ifndef O_RDONLY +#define O_RDONLY 0 +#endif + +#undef MIN +#undef MAX +#define MIN(X,Y) ((X) < (Y) ? (X) : (Y)) +#define MAX(X,Y) ((X) > (Y) ? (X) : (Y)) + +#ifndef S_ISREG +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#endif + +#ifndef S_ISDIR +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#endif + +/* Define a generic NULL if one hasn't already been defined. */ + +#ifndef GENERIC_PTR +#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__) +#define GENERIC_PTR void * +#else +#define GENERIC_PTR char * +#endif +#endif + +#ifndef INCLUDE_LEN_FUDGE +#define INCLUDE_LEN_FUDGE 0 +#endif + +#define USE_FILE_NAME_MAPS 0 + +/* Symbols to predefine. */ + +#ifdef CPP_PREDEFINES +static const char *predefs = CPP_PREDEFINES; + +#else +static const char *predefs = ""; + +#endif + +/* We let tm.h override the types used here, to handle trivial differences + * such as the choice of unsigned int or long unsigned int for size_t. + * When machines start needing nontrivial differences in the size type, + * it would be best to do something here to figure out automatically + * from other information what type to use. */ + +/* The string value for __SIZE_TYPE__. */ + +#ifndef SIZE_TYPE +#define SIZE_TYPE "long unsigned int" +#endif + +/* The string value for __PTRDIFF_TYPE__. */ + +#ifndef PTRDIFF_TYPE +#define PTRDIFF_TYPE "long int" +#endif + +/* The string value for __WCHAR_TYPE__. */ + +#ifndef WCHAR_TYPE +#define WCHAR_TYPE "int" +#endif +#define CPP_WCHAR_TYPE(PFILE) \ + (CPP_OPTIONS (PFILE)->cplusplus ? "__wchar_t" : WCHAR_TYPE) + +/* The string value for __USER_LABEL_PREFIX__ */ + +#ifndef USER_LABEL_PREFIX +#define USER_LABEL_PREFIX "" +#endif + +/* The string value for __REGISTER_PREFIX__ */ + +#ifndef REGISTER_PREFIX +#define REGISTER_PREFIX "" +#endif + +struct directive { + int length; + int (*func) (cpp_reader * pfile, struct directive * keyword, + unsigned char *buf, unsigned char *limit); + const char *name; + enum node_type type; + char command_reads_line; + char traditional_comments; + char pass_thru; +}; + +/* In the definition of a #assert name, this structure forms + * a list of the individual values asserted. + * Each value is itself a list of "tokens". + * These are strings that are compared by name. */ + +struct tokenlist_list { + struct tokenlist_list *next; + struct arglist *tokens; +}; + +struct assertion_hashnode { + struct assertion_hashnode *next; /* double links for easy deletion */ + struct assertion_hashnode *prev; + /* also, a back pointer to this node's hash + * chain is kept, in case the node is the head + * of the chain and gets deleted. */ + struct assertion_hashnode **bucket_hdr; + int length; /* length of token, for quick comparison */ + char *name; /* the actual name */ + /* List of token-sequences. */ + struct tokenlist_list *value; +}; + +#define SKIP_WHITE_SPACE(p) do { while (is_hor_space[(unsigned char)(*p)]) p++; } while (0) +#define SKIP_ALL_WHITE_SPACE(p) do { while (is_space[(unsigned char)(*p)]) p++; } while (0) + +#define PEEKN(N) (CPP_BUFFER (pfile)->rlimit - CPP_BUFFER (pfile)->cur >= (N) ? CPP_BUFFER (pfile)->cur[N] : EOF) +#define FORWARD(N) CPP_FORWARD (CPP_BUFFER (pfile), (N)) +#define GETC() CPP_BUF_GET (CPP_BUFFER (pfile)) +#define PEEKC() CPP_BUF_PEEK (CPP_BUFFER (pfile)) +/* CPP_IS_MACRO_BUFFER is true if the buffer contains macro expansion. + * (Note that it is false while we're expanding marco *arguments*.) */ +#define CPP_IS_MACRO_BUFFER(PBUF) ((PBUF)->cleanup == macro_cleanup) + +/* Move all backslash-newline pairs out of embarrassing places. + * Exchange all such pairs following BP + * with any potentially-embarrassing characters that follow them. + * Potentially-embarrassing characters are / and * + * (because a backslash-newline inside a comment delimiter + * would cause it not to be recognized). */ + +#define NEWLINE_FIX \ + do {while (PEEKC() == '\\' && PEEKN(1) == '\n') FORWARD(2); } while(0) + +/* Same, but assume we've already read the potential '\\' into C. */ +#define NEWLINE_FIX1(C) do { \ + while ((C) == '\\' && PEEKC() == '\n') { FORWARD(1); (C) = GETC(); }\ + } while(0) + +/* Name under which this program was invoked. */ + +char *progname; + +struct cpp_pending { + struct cpp_pending *next; + const char *cmd; + const char *arg; +}; + +/* Structure returned by create_definition */ +typedef struct { + struct definition *defn; + char *symnam; + int symlen; +} MACRODEF; + +/* Forward declarations. */ +typedef struct file_name_list file_name_list; + +static void add_import(cpp_reader * pfile, int fd, char *fname); +static int finclude(cpp_reader * pfile, int f, const char *fname, + int system_header_p, file_name_list * dirptr); +static void validate_else(cpp_reader * pfile, const char *directive); +static int comp_def_part(int first, unsigned char *beg1, int len1, + unsigned char *beg2, int len2, int last); +static int lookup_import(cpp_reader * pfile, char *filename, + file_name_list * searchptr); +static int redundant_include_p(cpp_reader * pfile, char *name); + +static int is_system_include(cpp_reader * pfile, char *filename); + +static int open_include_file(cpp_reader * pfile, char *filename, + file_name_list * searchptr); +static int check_macro_name(cpp_reader * pfile, unsigned char *symname, + const char *usage); + +static int compare_token_lists(struct arglist *l1, struct arglist *l2); +static HOST_WIDE_INT eval_if_expression(cpp_reader * pfile, unsigned char *buf, + int length); + +static int file_size_and_mode(int fd, int *mode_pointer, + long int *size_pointer); +static struct arglist *read_token_list(cpp_reader * pfile, int *error_flag); +static void free_token_list(struct arglist *tokens); +static int safe_read(int desc, char *ptr, int len); +static void push_macro_expansion(cpp_reader * pfile, + unsigned char *x, + int xbuf_len, HASHNODE * hp); + +static struct cpp_pending *nreverse_pending(struct cpp_pending *list); +static char *savestring(const char *input); + +static void conditional_skip(cpp_reader * pfile, int skip, + enum node_type type, + unsigned char *control_macro); +static void skip_if_group(cpp_reader * pfile, int any); + +static void cpp_error_with_line(cpp_reader * pfile, int line, + int column, const char *msg); +static void cpp_pedwarn_with_line(cpp_reader * pfile, int line, + int column, const char *msg); +static void cpp_pedwarn_with_file_and_line(cpp_reader * pfile, + const char *file, int line, + const char *msg, + const char *arg1, + const char *arg2, + const char *arg3); +static void cpp_error_from_errno(cpp_reader * pfile, const char *name); + +static cpp_buffer *cpp_push_buffer(cpp_reader * pfile, unsigned char *buffer, + long length); +static cpp_buffer *cpp_pop_buffer(cpp_reader * pfile); + +/* Last arg to output_line_command. */ +enum file_change_code { + same_file, enter_file, leave_file +}; + +/* These functions are declared to return int instead of void since they + * are going to be placed in a table and some old compilers have trouble with + * pointers to functions returning void. */ + +static int do_define(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_line(cpp_reader * pfile, struct directive *keyword, + unsigned char *unused1, unsigned char *unused2); + +static int do_include(cpp_reader * pfile, struct directive *keyword, + unsigned char *unused1, unsigned char *unused2); + +static int do_undef(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_error(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_pragma(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_ident(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_if(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_xifdef(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_else(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_elif(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_endif(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_assert(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_unassert(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +static int do_warning(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit); + +struct arglist *reverse_token_list(struct arglist *tokens); + +static int parse_name(cpp_reader * pfile, int c); + +static void parse_set_mark(struct parse_marker *pmark, + cpp_reader * pfile); +static void parse_clear_mark(struct parse_marker *pmark); +static void parse_goto_mark(struct parse_marker *pmark, + cpp_reader * pfile); +static void parse_move_mark(struct parse_marker *pmark, + cpp_reader * pfile); + +struct file_name_list { + file_name_list *next; + char *fname; + /* If the following is nonzero, it is a macro name. + * Don't include the file again if that macro is defined. */ + unsigned char *control_macro; + /* If the following is nonzero, it is a C-language system include + * directory. */ + int c_system_include_path; + /* Mapping of file names for this directory. */ + struct file_name_map *name_map; + /* Non-zero if name_map is valid. */ + int got_name_map; +}; + +/* If a buffer's dir field is SELF_DIR_DUMMY, it means the file was found + * via the same directory as the file that #included it. */ +#define SELF_DIR_DUMMY ((file_name_list*)(~0)) + +/* #include "file" looks in source file dir, then stack. */ +/* #include just looks in the stack. */ +/* -I directories are added to the end, then the defaults are added. */ +/* The */ +static struct default_include { + const char *fname; /* The name of the directory. */ + int cplusplus; /* Only look here if we're compiling C++. */ + int cxx_aware; /* Includes in this directory don't need to + * be wrapped in extern "C" when compiling + * C++. */ +} include_defaults_array[] +#ifdef INCLUDE_DEFAULTS + = INCLUDE_DEFAULTS; + +#else + = +{ + /* Pick up GNU C++ specific include files. */ + { + GPLUSPLUS_INCLUDE_DIR, 1, 1} + , +#ifdef CROSS_COMPILE + /* This is the dir for fixincludes. Put it just before + * the files that we fix. */ + { + GCC_INCLUDE_DIR, 0, 0} + , + /* For cross-compilation, this dir name is generated + * automatically in Makefile.in. */ + { + CROSS_INCLUDE_DIR, 0, 0} + , + /* This is another place that the target system's headers might be. */ + { + TOOL_INCLUDE_DIR, 0, 1} + , +#else /* not CROSS_COMPILE */ + /* This should be /usr/local/include and should come before + * the fixincludes-fixed header files. */ + { + LOCAL_INCLUDE_DIR, 0, 1} + , + /* This is here ahead of GCC_INCLUDE_DIR because assert.h goes here. + * Likewise, behind LOCAL_INCLUDE_DIR, where glibc puts its assert.h. */ + { + TOOL_INCLUDE_DIR, 0, 1} + , + /* This is the dir for fixincludes. Put it just before + * the files that we fix. */ + { + GCC_INCLUDE_DIR, 0, 0} + , + /* Some systems have an extra dir of include files. */ +#ifdef SYSTEM_INCLUDE_DIR + { + SYSTEM_INCLUDE_DIR, 0, 0} + , +#endif + { + STANDARD_INCLUDE_DIR, 0, 0} + , +#endif /* not CROSS_COMPILE */ + { + 0, 0, 0} +}; + +#endif /* no INCLUDE_DEFAULTS */ + +/* Here is the actual list of #-directives, most-often-used first. + * The initialize_builtins function assumes #define is the very first. */ + +static struct directive directive_table[] = { + {6, do_define, "define", T_DEFINE, 0, 1, 0}, + {5, do_xifdef, "ifdef", T_IFDEF, 1, 0, 0}, + {6, do_xifdef, "ifndef", T_IFNDEF, 1, 0, 0}, + {7, do_include, "include", T_INCLUDE, 1, 0, 0}, + {12, do_include, "include_next", T_INCLUDE_NEXT, 1, 0, 0}, + {6, do_include, "import", T_IMPORT, 1, 0, 0}, + {5, do_endif, "endif", T_ENDIF, 1, 0, 0}, + {4, do_else, "else", T_ELSE, 1, 0, 0}, + {2, do_if, "if", T_IF, 1, 0, 0}, + {4, do_elif, "elif", T_ELIF, 1, 0, 0}, + {5, do_undef, "undef", T_UNDEF, 0, 0, 0}, + {5, do_error, "error", T_ERROR, 0, 0, 0}, + {7, do_warning, "warning", T_WARNING, 0, 0, 0}, + {6, do_pragma, "pragma", T_PRAGMA, 0, 0, 1}, + {4, do_line, "line", T_LINE, 1, 0, 0}, + {5, do_ident, "ident", T_IDENT, 1, 0, 1}, +#ifdef SCCS_DIRECTIVE + {4, do_sccs, "sccs", T_SCCS, 0, 0, 0}, +#endif + {6, do_assert, "assert", T_ASSERT, 1, 0, 0}, + {8, do_unassert, "unassert", T_UNASSERT, 1, 0, 0}, + {-1, 0, "", T_UNUSED, 0, 0, 0}, +}; + +/* table to tell if char can be part of a C identifier. */ +unsigned char is_idchar[256]; + +/* table to tell if char can be first char of a c identifier. */ +unsigned char is_idstart[256]; + +/* table to tell if c is horizontal space. */ +unsigned char is_hor_space[256]; + +/* table to tell if c is horizontal or vertical space. */ +static unsigned char is_space[256]; + +/* Initialize syntactic classifications of characters. */ + +static void +initialize_char_syntax(struct cpp_options *opts) +{ + int i; + + /* + * Set up is_idchar and is_idstart tables. These should be + * faster than saying (is_alpha (c) || c == '_'), etc. + * Set up these things before calling any routines tthat + * refer to them. + */ + for (i = 'a'; i <= 'z'; i++) + { + is_idchar[i - 'a' + 'A'] = 1; + is_idchar[i] = 1; + is_idstart[i - 'a' + 'A'] = 1; + is_idstart[i] = 1; + } + for (i = '0'; i <= '9'; i++) + is_idchar[i] = 1; + is_idchar[(unsigned char)'_'] = 1; + is_idstart[(unsigned char)'_'] = 1; + is_idchar[(unsigned char)'$'] = opts->dollars_in_ident; + is_idstart[(unsigned char)'$'] = opts->dollars_in_ident; + + /* horizontal space table */ + is_hor_space[(unsigned char)' '] = 1; + is_hor_space[(unsigned char)'\t'] = 1; + is_hor_space[(unsigned char)'\v'] = 1; + is_hor_space[(unsigned char)'\f'] = 1; + is_hor_space[(unsigned char)'\r'] = 1; + + is_space[(unsigned char)' '] = 1; + is_space[(unsigned char)'\t'] = 1; + is_space[(unsigned char)'\v'] = 1; + is_space[(unsigned char)'\f'] = 1; + is_space[(unsigned char)'\n'] = 1; + is_space[(unsigned char)'\r'] = 1; +} + +/* Place into PFILE a quoted string representing the string SRC. + * Caller must reserve enough space in pfile->token_buffer. */ +static void +quote_string(cpp_reader * pfile, const char *src) +{ + unsigned char c; + + CPP_PUTC_Q(pfile, '\"'); + for (;;) + switch ((c = *src++)) + { + default: + if (isprint(c)) + CPP_PUTC_Q(pfile, c); + else + { + sprintf((char *)CPP_PWRITTEN(pfile), "\\%03o", c); + CPP_ADJUST_WRITTEN(pfile, 4); + } + break; + + case '\"': + case '\\': + CPP_PUTC_Q(pfile, '\\'); + CPP_PUTC_Q(pfile, c); + break; + + case '\0': + CPP_PUTC_Q(pfile, '\"'); + CPP_NUL_TERMINATE_Q(pfile); + return; + } +} + +/* Make sure PFILE->token_buffer will hold at least N more chars. */ + +void +cpp_grow_buffer(cpp_reader * pfile, long n) +{ + long old_written = CPP_WRITTEN(pfile); + + pfile->token_buffer_size = n + 2 * pfile->token_buffer_size; + pfile->token_buffer = + (unsigned char *)xrealloc(pfile->token_buffer, pfile->token_buffer_size); + CPP_SET_WRITTEN(pfile, old_written); +} + +/* + * process a given definition string, for initialization + * If STR is just an identifier, define it with value 1. + * If STR has anything after the identifier, then it should + * be identifier=definition. + */ + +void +cpp_define(cpp_reader * pfile, unsigned char *str) +{ + unsigned char *buf, *p; + + buf = str; + p = str; + if (!is_idstart[*p]) + { + cpp_error(pfile, "malformed option `-D %s'", str); + return; + } + while (is_idchar[*++p]) + ; + if (*p == 0) + { + buf = (unsigned char *)alloca(p - buf + 4); + strcpy((char *)buf, (const char *)str); + strcat((char *)buf, " 1"); + } + else if (*p != '=') + { + cpp_error(pfile, "malformed option `-D %s'", str); + return; + } + else + { + unsigned char *q; + + /* Copy the entire option so we can modify it. */ + buf = (unsigned char *)alloca(2 * strlen((char *)str) + 1); + strncpy((char *)buf, (const char *)str, p - str); + /* Change the = to a space. */ + buf[p - str] = ' '; + /* Scan for any backslash-newline and remove it. */ + p++; + q = &buf[p - str]; + while (*p) + { + if (*p == '\\' && p[1] == '\n') + p += 2; + else + *q++ = *p++; + } + *q = 0; + } + + do_define(pfile, NULL, buf, buf + strlen((char *)buf)); +} + +/* Process the string STR as if it appeared as the body of a #assert. + * OPTION is the option name for which STR was the argument. */ + +static void +make_assertion(cpp_reader * pfile, const char *option, const char *str) +{ + unsigned char *buf, *p, *q; + + /* Copy the entire option so we can modify it. */ + buf = (unsigned char *)alloca(strlen((char *)str) + 1); + strcpy((char *)buf, (const char *)str); + /* Scan for any backslash-newline and remove it. */ + p = q = buf; + while (*p) + { + *q++ = *p++; + } + *q = 0; + + p = buf; + if (!is_idstart[*p]) + { + cpp_error(pfile, "malformed option `%s %s'", option, str); + return; + } + while (is_idchar[*++p]) + ; + while (*p == ' ' || *p == '\t') + p++; + if (!(*p == 0 || *p == '(')) + { + cpp_error(pfile, "malformed option `%s %s'", option, str); + return; + } + cpp_push_buffer(pfile, buf, strlen((char *)buf)); + do_assert(pfile, NULL, NULL, NULL); + cpp_pop_buffer(pfile); +} + +/* Append a chain of `file_name_list's + * to the end of the main include chain. + * FIRST is the beginning of the chain to append, and LAST is the end. */ + +static void +append_include_chain(cpp_reader * pfile, file_name_list * first, + file_name_list * last) +{ + struct cpp_options *opts = CPP_OPTIONS(pfile); + file_name_list *dir; + + if (!first || !last) + return; + + if (!opts->include) + opts->include = first; + else + opts->last_include->next = first; + + if (!opts->first_bracket_include) + opts->first_bracket_include = first; + + for (dir = first;; dir = dir->next) + { + int len = strlen(dir->fname) + INCLUDE_LEN_FUDGE; + + if (len > pfile->max_include_len) + pfile->max_include_len = len; + if (dir == last) + break; + } + + last->next = NULL; + opts->last_include = last; +} + +/* Add output to `deps_buffer' for the -M switch. + * STRING points to the text to be output. + * SPACER is ':' for targets, ' ' for dependencies, zero for text + * to be inserted literally. */ + +static void +deps_output(cpp_reader * pfile, const char *string, int spacer) +{ + int size = strlen(string); + + if (size == 0) + return; + +#ifndef MAX_OUTPUT_COLUMNS +#define MAX_OUTPUT_COLUMNS 72 +#endif + if (spacer + && pfile->deps_column > 0 + && (pfile->deps_column + size) > MAX_OUTPUT_COLUMNS) + { + deps_output(pfile, " \\\n ", 0); + pfile->deps_column = 0; + } + if (pfile->deps_size + size + 8 > pfile->deps_allocated_size) + { + pfile->deps_allocated_size = (pfile->deps_size + size + 50) * 2; + pfile->deps_buffer = (char *)xrealloc(pfile->deps_buffer, + pfile->deps_allocated_size); + } + if (spacer == ' ' && pfile->deps_column > 0) + pfile->deps_buffer[pfile->deps_size++] = ' '; + memcpy(&pfile->deps_buffer[pfile->deps_size], string, size); + pfile->deps_size += size; + pfile->deps_column += size; + if (spacer == ':') + pfile->deps_buffer[pfile->deps_size++] = ':'; + pfile->deps_buffer[pfile->deps_size] = 0; +} + +/* Given a colon-separated list of file names PATH, + * add all the names to the search path for include files. */ + +static void +path_include(cpp_reader * pfile, char *path) +{ + char *p; + + p = path; + + if (*p) + while (1) + { + char *q = p; + char *name; + file_name_list *dirtmp; + + /* Find the end of this name. */ + while (*q != 0 && *q != PATH_SEPARATOR) + q++; + if (p == q) + { + /* An empty name in the path stands for the current directory. */ + name = (char *)xmalloc(2); + name[0] = '.'; + name[1] = 0; + } + else + { + /* Otherwise use the directory that is named. */ + name = (char *)xmalloc(q - p + 1); + memcpy(name, p, q - p); + name[q - p] = 0; + } + + dirtmp = (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; /* New one goes on the end */ + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 0; + dirtmp->fname = name; + dirtmp->got_name_map = 0; + append_include_chain(pfile, dirtmp, dirtmp); + + /* Advance past this name. */ + p = q; + if (*p == 0) + break; + /* Skip the colon. */ + p++; + } +} + +void +init_parse_options(struct cpp_options *opts) +{ + memset((char *)opts, 0, sizeof *opts); + opts->in_fname = NULL; + opts->out_fname = NULL; + + /* Initialize is_idchar to allow $. */ + opts->dollars_in_ident = 1; + initialize_char_syntax(opts); + opts->dollars_in_ident = DOLLARS_IN_IDENTIFIERS > 0; + + opts->no_line_commands = 0; + opts->no_trigraphs = 1; + opts->put_out_comments = 0; + opts->print_include_names = 0; + opts->dump_macros = dump_none; + opts->no_output = 0; + opts->cplusplus = 0; + opts->cplusplus_comments = 1; + + opts->verbose = 0; + opts->objc = 0; + opts->lang_asm = 0; + opts->for_lint = 0; + opts->chill = 0; + opts->pedantic_errors = 0; + opts->inhibit_warnings = 0; + opts->warn_comments = 0; + opts->warn_import = 1; + opts->warnings_are_errors = 0; +} + +static enum cpp_token +null_underflow(cpp_reader * pfile __UNUSED__) +{ + return CPP_EOF; +} + +static int +null_cleanup(cpp_buffer * pbuf __UNUSED__, cpp_reader * pfile __UNUSED__) +{ + return 0; +} + +static int +macro_cleanup(cpp_buffer * pbuf, cpp_reader * pfile __UNUSED__) +{ + HASHNODE *macro = (HASHNODE *) pbuf->data; + + if (macro->type == T_DISABLED) + macro->type = T_MACRO; + if (macro->type != T_MACRO || pbuf->buf != macro->value.defn->expansion) + free(pbuf->buf); + return 0; +} + +static int +file_cleanup(cpp_buffer * pbuf, cpp_reader * pfile __UNUSED__) +{ + if (pbuf->buf) + { + free(pbuf->buf); + pbuf->buf = 0; + } + return 0; +} + +/* Assuming we have read '/'. + * If this is the start of a comment (followed by '*' or '/'), + * skip to the end of the comment, and return ' '. + * Return EOF if we reached the end of file before the end of the comment. + * If not the start of a comment, return '/'. */ + +static int +skip_comment(cpp_reader * pfile, long *linep) +{ + int c = 0; + + while (PEEKC() == '\\' && PEEKN(1) == '\n') + { + if (linep) + (*linep)++; + FORWARD(2); + } + if (PEEKC() == '*') + { + FORWARD(1); + for (;;) + { + int prev_c = c; + + c = GETC(); + if (c == EOF) + return EOF; + while (c == '\\' && PEEKC() == '\n') + { + if (linep) + (*linep)++; + FORWARD(1), c = GETC(); + } + if (prev_c == '*' && c == '/') + return ' '; + if (c == '\n' && linep) + (*linep)++; + } + } + else if (PEEKC() == '/' && CPP_OPTIONS(pfile)->cplusplus_comments) + { + FORWARD(1); + for (;;) + { + c = GETC(); + if (c == EOF) + return ' '; /* Allow // to be terminated by EOF. */ + while (c == '\\' && PEEKC() == '\n') + { + FORWARD(1); + c = GETC(); + if (linep) + (*linep)++; + } + if (c == '\n') + { + /* Don't consider final '\n' to be part of comment. */ + FORWARD(-1); + return ' '; + } + } + } + else + return '/'; +} + +/* Skip whitespace \-newline and comments. Does not macro-expand. */ +void +cpp_skip_hspace(cpp_reader * pfile) +{ + while (1) + { + int c = PEEKC(); + + if (c == EOF) + return; /* FIXME */ + if (is_hor_space[c]) + { + if ((c == '\f' || c == '\v') && CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "%s in preprocessing directive", + c == '\f' ? "formfeed" : "vertical tab"); + FORWARD(1); + } + else if (c == '/') + { + FORWARD(1); + c = skip_comment(pfile, NULL); + if (c == '/') + FORWARD(-1); + if (c == EOF || c == '/') + return; + } + else if (c == '\\' && PEEKN(1) == '\n') + { + FORWARD(2); + } + else if (c == '@' && CPP_BUFFER(pfile)->has_escapes + && is_hor_space[PEEKN(1)]) + { + FORWARD(1); + } + else + return; + } +} + +/* Read the rest of the current line. + * The line is appended to PFILE's output buffer. */ + +static void +copy_rest_of_line(cpp_reader * pfile) +{ + struct cpp_options *opts = CPP_OPTIONS(pfile); + + for (;;) + { + int c = GETC(); + int nextc; + + switch (c) + { + case EOF: + goto end_directive; + case '\\': + if (PEEKC() == '\n') + { + FORWARD(1); + continue; + } + case '\'': + case '\"': + goto scan_directive_token; + break; + case '/': + nextc = PEEKC(); + if (nextc == '*' || (opts->cplusplus_comments && nextc == '*')) + goto scan_directive_token; + break; + case '\f': + case '\v': + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "%s in preprocessing directive", + c == '\f' ? "formfeed" : "vertical tab"); + break; + + case '\n': + FORWARD(-1); + goto end_directive; + scan_directive_token: + FORWARD(-1); + cpp_get_token(pfile); + continue; + } + CPP_PUTC(pfile, c); + } + end_directive:; + CPP_NUL_TERMINATE(pfile); +} + +void +skip_rest_of_line(cpp_reader * pfile) +{ + long old = CPP_WRITTEN(pfile); + + copy_rest_of_line(pfile); + CPP_SET_WRITTEN(pfile, old); +} + +/* Handle a possible # directive. + * '#' has already been read. */ + +static int +handle_directive(cpp_reader * pfile) +{ + int c; + struct directive *kt; + int ident_length; + long after_ident = 0; + unsigned char *ident, *line_end; + long old_written = CPP_WRITTEN(pfile); + + cpp_skip_hspace(pfile); + + c = PEEKC(); + if (c >= '0' && c <= '9') + { + /* Handle # followed by a line number. */ + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "`#' followed by integer"); + do_line(pfile, NULL, NULL, NULL); + goto done_a_directive; + } + /* Now find the directive name. */ + CPP_PUTC(pfile, '#'); + parse_name(pfile, GETC()); + ident = pfile->token_buffer + old_written + 1; + ident_length = CPP_PWRITTEN(pfile) - ident; + if (ident_length == 0 && PEEKC() == '\n') + { + /* A line of just `#' becomes blank. */ + goto done_a_directive; + } + /* + * Decode the keyword and call the appropriate expansion + * routine, after moving the input pointer up to the next line. + */ + for (kt = directive_table;; kt++) + { + if (kt->length <= 0) + goto not_a_directive; + if (kt->length == ident_length + && !strncmp(kt->name, (const char *)ident, ident_length)) + break; + } + + if (!kt->command_reads_line) + { + /* Nonzero means do not delete comments within the directive. + * #define needs this when -traditional. */ + int comments = 0; + int save_put_out_comments = + CPP_OPTIONS(pfile)->put_out_comments; + + CPP_OPTIONS(pfile)->put_out_comments = comments; + after_ident = CPP_WRITTEN(pfile); + copy_rest_of_line(pfile); + CPP_OPTIONS(pfile)->put_out_comments = save_put_out_comments; + } + /* For #pragma and #define, we may want to pass through the directive. + * Other directives may create output, but we don't want the directive + * itself out, so we pop it now. For example #include may write a #line + * command (see comment in do_include), and conditionals may emit + * #failed ... #endfailed stuff. But note that popping the buffer + * means the parameters to kt->func may point after pfile->limit + * so these parameters are invalid as soon as something gets appended + * to the token_buffer. */ + + line_end = CPP_PWRITTEN(pfile); + if (!kt->pass_thru && kt->type != T_DEFINE) + CPP_SET_WRITTEN(pfile, old_written); + + (*kt->func) (pfile, kt, pfile->token_buffer + after_ident, line_end); + if (kt->pass_thru + || (kt->type == T_DEFINE + && CPP_OPTIONS(pfile)->dump_macros == dump_definitions)) + { + /* Just leave the entire #define in the output stack. */ + } + else if (kt->type == T_DEFINE + && CPP_OPTIONS(pfile)->dump_macros == dump_names) + { + unsigned char *p = pfile->token_buffer + old_written + 7; /* Skip "#define". */ + + SKIP_WHITE_SPACE(p); + while (is_idchar[*p]) + p++; + pfile->limit = p; + CPP_PUTC(pfile, '\n'); + } + else if (kt->type == T_DEFINE) + CPP_SET_WRITTEN(pfile, old_written); + done_a_directive: + return 1; + + not_a_directive: + return 0; +} + +/* Pass a directive through to the output file. + * BUF points to the contents of the directive, as a contiguous string. + * LIMIT points to the first character past the end of the directive. + * KEYWORD is the keyword-table entry for the directive. */ + +static void +pass_thru_directive(char *buf, char *limit, cpp_reader * pfile, + struct directive *keyword) +{ + unsigned keyword_length = keyword->length; + + CPP_RESERVE(pfile, 1 + keyword_length + (limit - buf)); + CPP_PUTC_Q(pfile, '#'); + CPP_PUTS_Q(pfile, keyword->name, keyword_length); + if (limit != buf && buf[0] != ' ') + CPP_PUTC_Q(pfile, ' '); + CPP_PUTS_Q(pfile, buf, limit - buf); +} + +/* The arglist structure is built by do_define to tell + * collect_definition where the argument names begin. That + * is, for a define like "#define f(x,y,z) foo+x-bar*y", the arglist + * would contain pointers to the strings x, y, and z. + * Collect_definition would then build a DEFINITION node, + * with reflist nodes pointing to the places x, y, and z had + * appeared. So the arglist is just convenience data passed + * between these two routines. It is not kept around after + * the current #define has been processed and entered into the + * hash table. */ + +struct arglist { + struct arglist *next; + char *name; + int length; + int argno; + char rest_args; +}; + +/* Read a replacement list for a macro with parameters. + * Build the DEFINITION structure. + * Reads characters of text starting at BUF until END. + * ARGLIST specifies the formal parameters to look for + * in the text of the definition; NARGS is the number of args + * in that list, or -1 for a macro name that wants no argument list. + * MACRONAME is the macro name itself (so we can avoid recursive expansion) + * and NAMELEN is its length in characters. + * + * Note that comments, backslash-newlines, and leading white space + * have already been deleted from the argument. */ + +static DEFINITION * +collect_expansion(cpp_reader * pfile, unsigned char *buf, unsigned char *limit, + int nargs, struct arglist *arglist) +{ + DEFINITION *defn; + unsigned char *p, *lastp, *exp_p; + reflist *endpat = NULL; + + /* Pointer to first nonspace after last ## seen. */ + unsigned char *concat = 0; + + /* Pointer to first nonspace after last single-# seen. */ + unsigned char *stringify = 0; + int maxsize; + int expected_delimiter = '\0'; + + /* Scan thru the replacement list, ignoring comments and quoted + * strings, picking up on the macro calls. It does a linear search + * thru the arg list on every potential symbol. Profiling might say + * that something smarter should happen. */ + + if (limit < buf) + abort(); + + /* Find the beginning of the trailing whitespace. */ + p = buf; + while (p < limit && is_space[limit[-1]]) + limit--; + + /* Allocate space for the text in the macro definition. + * Leading and trailing whitespace chars need 2 bytes each. + * Each other input char may or may not need 1 byte, + * so this is an upper bound. The extra 5 are for invented + * leading and trailing newline-marker and final null. */ + maxsize = (sizeof(DEFINITION) + (limit - p) + 5); + /* Occurrences of '@' get doubled, so allocate extra space for them. */ + while (p < limit) + if (*p++ == '@') + maxsize++; + defn = (DEFINITION *) xcalloc(1, maxsize); + + defn->nargs = nargs; + exp_p = defn->expansion = (unsigned char *)defn + sizeof(DEFINITION); + lastp = exp_p; + + p = buf; + + /* Add one initial space escape-marker to prevent accidental + * token-pasting (often removed by macroexpand). */ + *exp_p++ = '@'; + *exp_p++ = ' '; + + if (limit - p >= 2 && p[0] == '#' && p[1] == '#') + { + cpp_error(pfile, "`##' at start of macro definition"); + p += 2; + } + /* Process the main body of the definition. */ + while (p < limit) + { + int skipped_arg = 0; + unsigned char c = *p++; + + *exp_p++ = c; + + switch (c) + { + case '\'': + case '\"': + if (expected_delimiter != '\0') + { + if (c == expected_delimiter) + expected_delimiter = '\0'; + } + else + expected_delimiter = c; + break; + + case '\\': + if (p < limit && expected_delimiter) + { + /* In a string, backslash goes through + * and makes next char ordinary. */ + *exp_p++ = *p++; + } + break; + + case '@': + /* An '@' in a string or character constant stands for itself, + * and does not need to be escaped. */ + if (!expected_delimiter) + *exp_p++ = c; + break; + + case '#': + /* # is ordinary inside a string. */ + if (expected_delimiter) + break; + if (p < limit && *p == '#') + { + /* ##: concatenate preceding and following tokens. */ + /* Take out the first #, discard preceding whitespace. */ + exp_p--; + while (exp_p > lastp && is_hor_space[exp_p[-1]]) + --exp_p; + /* Skip the second #. */ + p++; + /* Discard following whitespace. */ + SKIP_WHITE_SPACE(p); + concat = p; + if (p == limit) + cpp_error(pfile, "`##' at end of macro definition"); + } + else if (nargs >= 0) + { + /* Single #: stringify following argument ref. + * Don't leave the # in the expansion. */ + exp_p--; + SKIP_WHITE_SPACE(p); + if (p == limit || !is_idstart[*p]) + cpp_error(pfile, + "`#' operator is not followed by a macro argument name"); + else + stringify = p; + } + break; + } + + /* Handle the start of a symbol. */ + if (is_idchar[c] && nargs > 0) + { + unsigned char *id_beg = p - 1; + int id_len; + + --exp_p; + while (p != limit && is_idchar[*p]) + p++; + id_len = p - id_beg; + + if (is_idstart[c]) + { + struct arglist *arg; + + for (arg = arglist; arg; arg = arg->next) + { + reflist *tpat; + + if (arg->name[0] == c + && arg->length == id_len + && strncmp((const char *)arg->name, + (const char *)id_beg, id_len) == 0) + { + if (expected_delimiter + && CPP_OPTIONS(pfile)->warn_stringify) + { + cpp_warning(pfile, + "macro arg `%.*s' would be stringified with -traditional.", + id_len, arg->name); + } + /* If ANSI, don't actually substitute inside a string. */ + if (expected_delimiter) + break; + /* make a pat node for this arg and append it to the end of + * the pat list */ + tpat = (reflist *) xmalloc(sizeof(reflist)); + + tpat->next = NULL; + tpat->raw_before = concat == id_beg; + tpat->raw_after = 0; + tpat->rest_args = arg->rest_args; + tpat->stringify = (stringify == id_beg); + + if (!endpat) + defn->pattern = tpat; + else + endpat->next = tpat; + endpat = tpat; + + tpat->argno = arg->argno; + tpat->nchars = exp_p - lastp; + { + unsigned char *p1 = p; + + SKIP_WHITE_SPACE(p1); + if (p1 + 2 <= limit && p1[0] == '#' + && p1[1] == '#') + tpat->raw_after = 1; + } + lastp = exp_p; /* place to start copying from next time */ + skipped_arg = 1; + break; + } + } + } + /* If this was not a macro arg, copy it into the expansion. */ + if (!skipped_arg) + { + unsigned char *lim1 = p; + + p = id_beg; + while (p != lim1) + *exp_p++ = *p++; + if (stringify == id_beg) + cpp_error(pfile, + "`#' operator should be followed by a macro argument name"); + } + } + } + + if (expected_delimiter == 0) + { + /* If ANSI, put in a "@ " marker to prevent token pasting. + * But not if "inside a string" (which in ANSI mode + * happens only for -D option). */ + *exp_p++ = '@'; + *exp_p++ = ' '; + } + *exp_p = '\0'; + + defn->length = exp_p - defn->expansion; + + /* Crash now if we overrun the allocated size. */ + if (defn->length + 1 > maxsize) + abort(); + + return defn; +} + +/* + * special extension string that can be added to the last macro argument to + * allow it to absorb the "rest" of the arguments when expanded. Ex: + * #define wow(a, b...) process (b, a, b) + * { wow (1, 2, 3); } -> { process (2, 3, 1, 2, 3); } + * { wow (one, two); } -> { process (two, one, two); } + * if this "rest_arg" is used with the concat token '##' and if it is not + * supplied then the token attached to with ## will not be outputted. Ex: + * #define wow (a, b...) process (b ## , a, ## b) + * { wow (1, 2); } -> { process (2, 1, 2); } + * { wow (one); } -> { process (one); { + */ +static char rest_extension[] = "..."; + +#define REST_EXTENSION_LENGTH (sizeof (rest_extension) - 1) + +/* Create a DEFINITION node from a #define directive. Arguments are + * as for do_define. */ +static void +create_definition(MACRODEF * mdef, unsigned char *buf, unsigned char *limit, + cpp_reader * pfile, int predefinition) +{ + unsigned char *bp; /* temp ptr into input buffer */ + unsigned char *symname; /* remember where symbol name starts */ + int sym_length; /* and how long it is */ + int rest_args = 0; + long line, col; + const char *file = + CPP_BUFFER(pfile) ? CPP_BUFFER(pfile)->nominal_fname : ""; + DEFINITION *defn; + int arglengths = 0; /* Accumulate lengths of arg names + * plus number of args. */ + + cpp_buf_line_and_col(CPP_BUFFER(pfile), &line, &col); + + bp = buf; + + while (is_hor_space[*bp]) + bp++; + + symname = bp; /* remember where it starts */ + + sym_length = check_macro_name(pfile, bp, "macro"); + bp += sym_length; + + /* Lossage will occur if identifiers or control keywords are broken + * across lines using backslash. This is not the right place to take + * care of that. */ + + if (*bp == '(') + { + struct arglist *arg_ptrs = NULL; + int argno = 0; + + bp++; /* skip '(' */ + SKIP_WHITE_SPACE(bp); + + /* Loop over macro argument names. */ + while (*bp != ')') + { + struct arglist *temp; + + temp = (struct arglist *)alloca(sizeof(struct arglist)); + + temp->name = (char *)bp; + temp->next = arg_ptrs; + temp->argno = argno++; + temp->rest_args = 0; + arg_ptrs = temp; + + if (rest_args) + cpp_pedwarn(pfile, "another parameter follows `%s'", + rest_extension); + + if (!is_idstart[*bp]) + cpp_pedwarn(pfile, "invalid character in macro parameter name"); + + /* Find the end of the arg name. */ + while (is_idchar[*bp]) + { + bp++; + /* do we have a "special" rest-args extension here? */ + if ((unsigned)(limit - bp) > REST_EXTENSION_LENGTH && + strncmp(rest_extension, (const char *)bp, + REST_EXTENSION_LENGTH) == 0) + { + rest_args = 1; + temp->rest_args = 1; + break; + } + } + temp->length = (char *)bp - temp->name; + if (rest_args == 1) + bp += REST_EXTENSION_LENGTH; + arglengths += temp->length + 2; + SKIP_WHITE_SPACE(bp); + if (temp->length == 0 || (*bp != ',' && *bp != ')')) + { + cpp_error(pfile, + "badly punctuated parameter list in `#define'"); + goto nope; + } + if (*bp == ',') + { + bp++; + SKIP_WHITE_SPACE(bp); + } + if (bp >= limit) + { + cpp_error(pfile, "unterminated parameter list in `#define'"); + goto nope; + } + { + struct arglist *otemp; + + for (otemp = temp->next; otemp; otemp = otemp->next) + if (temp->length == otemp->length && + strncmp((const char *)temp->name, + (const char *)otemp->name, temp->length) == 0) + { + char *name; + + name = (char *)alloca(temp->length + 1); + strncpy(name, (const char *)temp->name, temp->length); + name[temp->length] = '\0'; + cpp_error(pfile, + "duplicate argument name `%s' in `#define'", + name); + goto nope; + } + } + } + + ++bp; /* skip paren */ + SKIP_WHITE_SPACE(bp); + /* now everything from bp before limit is the definition. */ + defn = collect_expansion(pfile, bp, limit, argno, arg_ptrs); + defn->rest_args = rest_args; + + /* Now set defn->args.argnames to the result of concatenating + * the argument names in reverse order + * with comma-space between them. */ + defn->args.argnames = (unsigned char *)xmalloc(arglengths + 1); + { + struct arglist *temp; + int i = 0; + + for (temp = arg_ptrs; temp; temp = temp->next) + { + memcpy(&defn->args.argnames[i], temp->name, temp->length); + i += temp->length; + if (temp->next) + { + defn->args.argnames[i++] = ','; + defn->args.argnames[i++] = ' '; + } + } + defn->args.argnames[i] = 0; + } + } + else + { + /* Simple expansion or empty definition. */ + + if (bp < limit) + { + if (is_hor_space[*bp]) + { + bp++; + SKIP_WHITE_SPACE(bp); + } + else + { + switch (*bp) + { + case '!': + case '"': + case '#': + case '%': + case '&': + case '\'': + case ')': + case '*': + case '+': + case ',': + case '-': + case '.': + case '/': + case ':': + case ';': + case '<': + case '=': + case '>': + case '?': + case '[': + case '\\': + case ']': + case '^': + case '{': + case '|': + case '}': + case '~': + cpp_warning(pfile, + "missing white space after `#define %.*s'", + sym_length, symname); + break; + + default: + cpp_pedwarn(pfile, + "missing white space after `#define %.*s'", + sym_length, symname); + break; + } + } + } + /* now everything from bp before limit is the definition. */ + defn = collect_expansion(pfile, bp, limit, -1, NULL); + defn->args.argnames = (unsigned char *)""; + } + + defn->line = line; + defn->file = file; + + /* OP is null if this is a predefinition */ + defn->predefined = predefinition; + mdef->defn = defn; + mdef->symnam = (char *)symname; + mdef->symlen = sym_length; + + return; + + nope: + mdef->defn = 0; +} + +/* Check a purported macro name SYMNAME, and yield its length. + * USAGE is the kind of name this is intended for. */ + +static int +check_macro_name(cpp_reader * pfile, unsigned char *symname, const char *usage) +{ + unsigned char *p; + int sym_length; + + for (p = symname; is_idchar[*p]; p++) + ; + sym_length = p - symname; + if (sym_length == 0) + { + cpp_error(pfile, "invalid %s name", usage); + } + else if (!is_idstart[*symname]) + { + unsigned char *msg; /* what pain... */ + + msg = (unsigned char *)alloca(sym_length + 1); + memcpy(msg, symname, sym_length); + msg[sym_length] = 0; + cpp_error(pfile, "invalid %s name `%s'", usage, msg); + } + else + { + if (!strncmp((const char *)symname, "defined", 7) && sym_length == 7) + cpp_error(pfile, "invalid %s name `defined'", usage); + } + return sym_length; +} + +/* + * return zero if two DEFINITIONs are isomorphic + */ +static int +compare_defs(DEFINITION * d1, DEFINITION * d2) +{ + reflist *a1, *a2; + unsigned char *p1 = d1->expansion; + unsigned char *p2 = d2->expansion; + int first = 1; + + if (d1->nargs != d2->nargs) + return 1; + if (strcmp((char *)d1->args.argnames, (char *)d2->args.argnames)) + return 1; + for (a1 = d1->pattern, a2 = d2->pattern; a1 && a2; + a1 = a1->next, a2 = a2->next) + { + if (! + ((a1->nchars == a2->nchars + && !strncmp((const char *)p1, (const char *)p2, a1->nchars)) + || !comp_def_part(first, p1, a1->nchars, p2, a2->nchars, 0)) + || a1->argno != a2->argno || a1->stringify != a2->stringify + || a1->raw_before != a2->raw_before + || a1->raw_after != a2->raw_after) + return 1; + first = 0; + p1 += a1->nchars; + p2 += a2->nchars; + } + if (a1 != a2) + return 1; + if (comp_def_part(first, p1, d1->length - (p1 - d1->expansion), + p2, d2->length - (p2 - d2->expansion), 1)) + return 1; + return 0; +} + +/* Return 1 if two parts of two macro definitions are effectively different. + * One of the parts starts at BEG1 and has LEN1 chars; + * the other has LEN2 chars at BEG2. + * Any sequence of whitespace matches any other sequence of whitespace. + * FIRST means these parts are the first of a macro definition; + * so ignore leading whitespace entirely. + * LAST means these parts are the last of a macro definition; + * so ignore trailing whitespace entirely. */ + +static int +comp_def_part(int first, unsigned char *beg1, int len1, + unsigned char *beg2, int len2, int last) +{ + unsigned char *end1 = beg1 + len1; + unsigned char *end2 = beg2 + len2; + + if (first) + { + while (beg1 != end1 && is_space[*beg1]) + beg1++; + while (beg2 != end2 && is_space[*beg2]) + beg2++; + } + if (last) + { + while (beg1 != end1 && is_space[end1[-1]]) + end1--; + while (beg2 != end2 && is_space[end2[-1]]) + end2--; + } + while (beg1 != end1 && beg2 != end2) + { + if (is_space[*beg1] && is_space[*beg2]) + { + while (beg1 != end1 && is_space[*beg1]) + beg1++; + while (beg2 != end2 && is_space[*beg2]) + beg2++; + } + else if (*beg1 == *beg2) + { + beg1++; + beg2++; + } + else + break; + } + return (beg1 != end1) || (beg2 != end2); +} + +/* Process a #define command. + * BUF points to the contents of the #define command, as a contiguous string. + * LIMIT points to the first character past the end of the definition. + * KEYWORD is the keyword-table entry for #define, + * or NULL for a "predefined" macro. */ + +static int +do_define(cpp_reader * pfile, struct directive *keyword, + unsigned char *buf, unsigned char *limit) +{ + int hashcode; + MACRODEF mdef; + HASHNODE *hp; + + create_definition(&mdef, buf, limit, pfile, !keyword); + if (!mdef.defn) + return 1; + + hashcode = hashf(mdef.symnam, mdef.symlen, HASHSIZE); + + if ((hp = cpp_lookup(mdef.symnam, mdef.symlen, hashcode))) + { + int ok = 0; + + /* Redefining a precompiled key is ok. */ + if (hp->type == T_PCSTRING) + ok = 1; + /* Redefining a macro is ok if the definitions are the same. */ + else if (hp->type == T_MACRO) + ok = !compare_defs(mdef.defn, hp->value.defn); + /* Redefining a constant is ok with -D. */ + else if (hp->type == T_CONST) + ok = !CPP_OPTIONS(pfile)->done_initializing; + /* Print the warning if it's not ok. */ + if (!ok) + { + char *msg; /* what pain... */ + + /* If we are passing through #define and #undef directives, do + * that for this re-definition now. */ + if (CPP_OPTIONS(pfile)->debug_output && keyword) + pass_thru_directive((char *)buf, (char *)limit, pfile, keyword); + + msg = (char *)alloca(mdef.symlen + 22); + *msg = '`'; + memcpy(msg + 1, mdef.symnam, mdef.symlen); + strcpy((msg + mdef.symlen + 1), "' redefined"); + cpp_pedwarn(pfile, msg); + if (hp->type == T_MACRO) + cpp_pedwarn_with_file_and_line(pfile, hp->value.defn->file, + hp->value.defn->line, + "this is the location of the previous definition", + NULL, NULL, NULL); + } + /* Replace the old definition. */ + hp->type = T_MACRO; + hp->value.defn = mdef.defn; + } + else + { + /* If we are passing through #define and #undef directives, do + * that for this new definition now. */ + if (CPP_OPTIONS(pfile)->debug_output && keyword) + pass_thru_directive((char *)buf, (char *)limit, pfile, keyword); + install(mdef.symnam, mdef.symlen, T_MACRO, 0, + (char *)mdef.defn, hashcode); + } + + return 0; +} + +/* This structure represents one parsed argument in a macro call. + * `raw' points to the argument text as written (`raw_length' is its length). + * `expanded' points to the argument's macro-expansion + * (its length is `expand_length'). + * `stringified_length' is the length the argument would have + * if stringified. + * `use_count' is the number of times this macro arg is substituted + * into the macro. If the actual use count exceeds 10, + * the value stored is 10. */ + +/* raw and expanded are relative to ARG_BASE */ +#define ARG_BASE ((pfile)->token_buffer) + +struct argdata { + /* Strings relative to pfile->token_buffer */ + long raw, expanded, stringified; + int raw_length, expand_length; + int stringified_length; + char newlines; + char use_count; +}; + +cpp_buffer * +cpp_push_buffer(cpp_reader * pfile, unsigned char *buffer, long length) +{ +#ifdef STATIC_BUFFERS + cpp_buffer *buf = CPP_BUFFER(pfile); + + if (buf == pfile->buffer_stack) + cpp_fatal("macro or `#include' recursion too deep"); + buf--; + memset((char *)buf, 0, sizeof(cpp_buffer)); + CPP_BUFFER(pfile) = buf; +#else + cpp_buffer *buf = (cpp_buffer *) xmalloc(sizeof(cpp_buffer)); + + memset((char *)buf, 0, sizeof(cpp_buffer)); + CPP_PREV_BUFFER(buf) = CPP_BUFFER(pfile); + CPP_BUFFER(pfile) = buf; +#endif + buf->if_stack = pfile->if_stack; + buf->cleanup = null_cleanup; + buf->underflow = null_underflow; + buf->buf = buf->cur = buffer; + buf->alimit = buf->rlimit = buffer + length; + + return buf; +} + +static cpp_buffer * +cpp_pop_buffer(cpp_reader * pfile) +{ + cpp_buffer *buf = CPP_BUFFER(pfile); + +#ifdef STATIC_BUFFERS + (*buf->cleanup) (buf, pfile); + return ++CPP_BUFFER(pfile); +#else + cpp_buffer *next_buf = CPP_PREV_BUFFER(buf); + + (*buf->cleanup) (buf, pfile); + CPP_BUFFER(pfile) = next_buf; + free(buf); + return next_buf; +#endif +} + +/* Scan until CPP_BUFFER (PFILE) is exhausted into PFILE->token_buffer. + * Pop the buffer when done. */ + +static void +cpp_scan_buffer(cpp_reader * pfile) +{ + cpp_buffer *buffer = CPP_BUFFER(pfile); + + for (;;) + { + enum cpp_token token = cpp_get_token(pfile); + + if (token == CPP_EOF) /* Should not happen ... */ + break; + if (token == CPP_POP && CPP_BUFFER(pfile) == buffer) + { + cpp_pop_buffer(pfile); + break; + } + } +} + +/* + * Rescan a string (which may have escape marks) into pfile's buffer. + * Place the result in pfile->token_buffer. + * + * The input is copied before it is scanned, so it is safe to pass + * it something from the token_buffer that will get overwritten + * (because it follows CPP_WRITTEN). This is used by do_include. + */ + +static void +cpp_expand_to_buffer(cpp_reader * pfile, unsigned char *buf, int length) +{ + cpp_buffer *ip; + unsigned char *limit = buf + length; + unsigned char *buf1; + + if (length < 0) + abort(); + + /* Set up the input on the input stack. */ + + buf1 = (unsigned char *)alloca(length + 1); + { + unsigned char *p1 = buf; + unsigned char *p2 = buf1; + int in_string = 0; + +#if 0 /* old behavior */ + while (p1 != limit) *p2++ = *p1++; +#else /* new one - handle \ escapes if not in string */ + while (p1 != limit) + { + if (!in_string) + { + if (*p1 == '"') in_string = 1; + if (*p1 == '\\') + { + p1++; + if (p1 != limit) *p2++ = *p1++; + } + else + *p2++ = *p1++; + } + else + { + if ((*p1 == '"') && (p1 > buf) && (p1[-1] != '\\')) + in_string = 0; + *p2++ = *p1++; + } + } +#endif + *p2 = 0; + length = p2 - buf1; + } + + ip = cpp_push_buffer(pfile, buf1, length); + ip->has_escapes = 1; + + /* Scan the input, create the output. */ + cpp_scan_buffer(pfile); + + CPP_NUL_TERMINATE(pfile); +} + +static void +adjust_position(unsigned char *buf, unsigned char *limit, long *linep, + long *colp) +{ + while (buf < limit) + { + unsigned char ch = *buf++; + + if (ch == '\n') + (*linep)++, (*colp) = 1; + else + (*colp)++; + } +} + +/* Move line_base forward, updating lineno and colno. */ + +static void +update_position(cpp_buffer * pbuf) +{ + unsigned char *old_pos = pbuf->buf + pbuf->line_base; + unsigned char *new_pos = pbuf->cur; + struct parse_marker *mark; + + for (mark = pbuf->marks; mark; mark = mark->next) + { + if (pbuf->buf + mark->position < new_pos) + new_pos = pbuf->buf + mark->position; + } + pbuf->line_base += new_pos - old_pos; + adjust_position(old_pos, new_pos, &pbuf->lineno, &pbuf->colno); +} + +void +cpp_buf_line_and_col(cpp_buffer * pbuf, long *linep, long *colp) +{ + long dummy; + + if (!colp) + colp = &dummy; + if (pbuf) + { + *linep = pbuf->lineno; + *colp = pbuf->colno; + adjust_position(pbuf->buf + pbuf->line_base, pbuf->cur, linep, colp); + } + else + { + *linep = 0; + *colp = 0; + } +} + +/* Return the cpp_buffer that corresponds to a file (not a macro). */ + +cpp_buffer * +cpp_file_buffer(cpp_reader * pfile) +{ + cpp_buffer *ip = CPP_BUFFER(pfile); + + for (; ip != CPP_NULL_BUFFER(pfile); ip = CPP_PREV_BUFFER(ip)) + if (ip->fname) + return ip; + return NULL; +} + +static long +count_newlines(unsigned char *buf, unsigned char *limit) +{ + long count = 0; + + while (buf < limit) + { + unsigned char ch = *buf++; + + if (ch == '\n') + count++; + } + return count; +} + +/* + * write out a #line command, for instance, after an #include file. + * If CONDITIONAL is nonzero, we can omit the #line if it would + * appear to be a no-op, and we can output a few newlines instead + * if we want to increase the line number by a small amount. + * FILE_CHANGE says whether we are entering a file, leaving, or neither. + */ + +static void +output_line_command(cpp_reader * pfile, int conditional, + enum file_change_code file_change) +{ + long line, col; + cpp_buffer *ip = CPP_BUFFER(pfile); + + if (CPP_OPTIONS(pfile)->no_line_commands + || !ip->fname || CPP_OPTIONS(pfile)->no_output) + { + return; + } + update_position(ip); + line = CPP_BUFFER(pfile)->lineno; + col = CPP_BUFFER(pfile)->colno; + adjust_position(CPP_LINE_BASE(ip), ip->cur, &line, &col); + + if (conditional) + { + if (line == pfile->lineno) + return; + + /* If the inherited line number is a little too small, + * output some newlines instead of a #line command. */ + if (line > pfile->lineno && line < pfile->lineno + 8) + { + CPP_RESERVE(pfile, 20); + while (line > pfile->lineno) + { + CPP_PUTC_Q(pfile, '\n'); + pfile->lineno++; + } + return; + } + } + + CPP_RESERVE(pfile, 4 * strlen(ip->nominal_fname) + 50); + { + static char sharp_line[] = "#line "; + + CPP_PUTS_Q(pfile, sharp_line, sizeof(sharp_line) - 1); + } + + sprintf((char *)CPP_PWRITTEN(pfile), "%d ", (int)line); + CPP_ADJUST_WRITTEN(pfile, strlen((char *)CPP_PWRITTEN(pfile))); + + quote_string(pfile, ip->nominal_fname); + if (file_change != same_file) + { + CPP_PUTC_Q(pfile, ' '); + CPP_PUTC_Q(pfile, file_change == enter_file ? '1' : '2'); + } + /* Tell cc1 if following text comes from a system header file. */ + if (ip->system_header_p) + { + CPP_PUTC_Q(pfile, ' '); + CPP_PUTC_Q(pfile, '3'); + } +#ifndef NO_IMPLICIT_EXTERN_C + /* Tell cc1plus if following text should be treated as C. */ + if (ip->system_header_p == 2 && CPP_OPTIONS(pfile)->cplusplus) + { + CPP_PUTC_Q(pfile, ' '); + CPP_PUTC_Q(pfile, '4'); + } +#endif + CPP_PUTC_Q(pfile, '\n'); + pfile->lineno = line; +} + +/* + * Parse a macro argument and append the info on PFILE's token_buffer. + * REST_ARGS means to absorb the rest of the args. + * Return nonzero to indicate a syntax error. + */ + +static enum cpp_token +macarg(cpp_reader * pfile, int rest_args) +{ + int paren = 0; + enum cpp_token token; + char save_put_out_comments = + CPP_OPTIONS(pfile)->put_out_comments; + + CPP_OPTIONS(pfile)->put_out_comments = 0; + + token = CPP_OTHER; + /* Try to parse as much of the argument as exists at this + * input stack level. */ + pfile->no_macro_expand++; + for (;;) + { + token = cpp_get_token(pfile); + switch (token) + { + case CPP_EOF: + goto done; + case CPP_POP: + /* If we've hit end of file, it's an error (reported by caller). + * Ditto if it's the end of cpp_expand_to_buffer text. + * If we've hit end of macro, just continue. */ + if (!CPP_IS_MACRO_BUFFER(CPP_BUFFER(pfile))) + goto done; + break; + case CPP_LPAREN: + paren++; + break; + case CPP_RPAREN: + if (--paren < 0) + goto found; + break; + case CPP_COMMA: + /* if we've returned to lowest level and + * we aren't absorbing all args */ + if (paren == 0 && rest_args == 0) + goto found; + break; + found: + /* Remove ',' or ')' from argument buffer. */ + CPP_ADJUST_WRITTEN(pfile, -1); + goto done; + default:; + } + } + + done: + CPP_OPTIONS(pfile)->put_out_comments = save_put_out_comments; + pfile->no_macro_expand--; + + return token; +} + +/* Turn newlines to spaces in the string of length LENGTH at START, + * except inside of string constants. + * The string is copied into itself with its beginning staying fixed. */ + +static int +change_newlines(unsigned char *start, int length) +{ + unsigned char *ibp; + unsigned char *obp; + unsigned char *limit; + int c; + + ibp = start; + limit = start + length; + obp = start; + + while (ibp < limit) + { + *obp++ = c = *ibp++; + switch (c) + { + + case '\'': + case '\"': + /* Notice and skip strings, so that we don't delete newlines in them. */ + { + int quotec = c; + + while (ibp < limit) + { + *obp++ = c = *ibp++; + if (c == quotec) + break; + if (c == '\n' && quotec == '\'') + break; + } + } + break; + } + } + + return obp - start; +} + +static struct tm * +timestamp(cpp_reader * pfile) +{ + if (!pfile->timebuf) + { + time_t t = time((time_t *) 0); + + pfile->timebuf = localtime(&t); + } + return pfile->timebuf; +} + +static const char *monthnames[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", +}; + +/* + * expand things like __FILE__. Place the expansion into the output + * buffer *without* rescanning. + */ + +static void +special_symbol(HASHNODE * hp, cpp_reader * pfile) +{ + const char *buf; + char *bufx; + int len; + int true_indepth; + cpp_buffer *ip = NULL; + struct tm *timebuf; + + int paren = 0; /* For special `defined' keyword */ + + for (ip = CPP_BUFFER(pfile);; ip = CPP_PREV_BUFFER(ip)) + { + if (!ip) + { + cpp_error(pfile, "cccp error: not in any file?!"); + return; /* the show must go on */ + } + if (ip->fname) + break; + } + + switch (hp->type) + { + case T_FILE: + case T_BASE_FILE: + { + const char *string; + + if (hp->type == T_BASE_FILE) + { + while (CPP_PREV_BUFFER(ip)) + ip = CPP_PREV_BUFFER(ip); + } + string = ip->nominal_fname; + + if (!string) + string = ""; + CPP_RESERVE(pfile, 3 + 4 * strlen(string)); + quote_string(pfile, string); + return; + } + + case T_INCLUDE_LEVEL: + true_indepth = 0; + for (ip = CPP_BUFFER(pfile); ip; ip = CPP_PREV_BUFFER(ip)) + if (ip->fname) + true_indepth++; + + bufx = (char *)alloca(8); /* Eight bytes ought to be more than enough */ + sprintf(bufx, "%d", true_indepth - 1); + buf = bufx; + break; + + case T_VERSION: + bufx = (char *)alloca(3 + strlen(version_string)); + sprintf(bufx, "\"%s\"", version_string); + buf = bufx; + break; + +#ifndef NO_BUILTIN_SIZE_TYPE + case T_SIZE_TYPE: + buf = SIZE_TYPE; + break; +#endif + +#ifndef NO_BUILTIN_PTRDIFF_TYPE + case T_PTRDIFF_TYPE: + buf = PTRDIFF_TYPE; + break; +#endif + + case T_WCHAR_TYPE: + buf = CPP_WCHAR_TYPE(pfile); + break; + + case T_USER_LABEL_PREFIX_TYPE: + buf = USER_LABEL_PREFIX; + break; + + case T_REGISTER_PREFIX_TYPE: + buf = REGISTER_PREFIX; + break; + + case T_CONST: + bufx = (char *)alloca(4 * sizeof(int)); + sprintf(bufx, "%d", hp->value.ival); + buf = bufx; + break; + + case T_SPECLINE: + { + long line = ip->lineno; + long col = ip->colno; + + adjust_position(CPP_LINE_BASE(ip), ip->cur, &line, &col); + + bufx = (char *)alloca(10); + sprintf(bufx, "%d", (int)line); + buf = bufx; + } + break; + + case T_DATE: + case T_TIME: + bufx = (char *)alloca(20); + timebuf = timestamp(pfile); + if (hp->type == T_DATE) + sprintf(bufx, "\"%s %2d %4d\"", monthnames[timebuf->tm_mon], + timebuf->tm_mday, timebuf->tm_year + 1900); + else + sprintf(bufx, "\"%02d:%02d:%02d\"", timebuf->tm_hour, + timebuf->tm_min, timebuf->tm_sec); + buf = bufx; + break; + + case T_SPEC_DEFINED: + buf = " 0 "; /* Assume symbol is not defined */ + ip = CPP_BUFFER(pfile); + SKIP_WHITE_SPACE(ip->cur); + if (*ip->cur == '(') + { + paren++; + ip->cur++; /* Skip over the paren */ + SKIP_WHITE_SPACE(ip->cur); + } + if (!is_idstart[*ip->cur]) + goto oops; + if ((hp = cpp_lookup((const char *)ip->cur, -1, -1))) + { + buf = " 1 "; + } + while (is_idchar[*ip->cur]) + ++ip->cur; + SKIP_WHITE_SPACE(ip->cur); + if (paren) + { + if (*ip->cur != ')') + goto oops; + ++ip->cur; + } + break; + + oops: + + cpp_error(pfile, "`defined' without an identifier"); + break; + + default: + cpp_error(pfile, "cccp error: invalid special hash type"); /* time for gdb */ + abort(); + } + len = strlen(buf); + CPP_RESERVE(pfile, len + 1); + CPP_PUTS_Q(pfile, buf, len); + CPP_NUL_TERMINATE_Q(pfile); + + return; +} + +/* Initialize the built-in macros. */ + +static void +initialize_builtins(cpp_reader * pfile) +{ + install("__LINE__", -1, T_SPECLINE, 0, 0, -1); + install("__DATE__", -1, T_DATE, 0, 0, -1); + install("__FILE__", -1, T_FILE, 0, 0, -1); + install("__BASE_FILE__", -1, T_BASE_FILE, 0, 0, -1); + install("__INCLUDE_LEVEL__", -1, T_INCLUDE_LEVEL, 0, 0, -1); + install("__VERSION__", -1, T_VERSION, 0, 0, -1); +#ifndef NO_BUILTIN_SIZE_TYPE + install("__SIZE_TYPE__", -1, T_SIZE_TYPE, 0, 0, -1); +#endif +#ifndef NO_BUILTIN_PTRDIFF_TYPE + install("__PTRDIFF_TYPE__ ", -1, T_PTRDIFF_TYPE, 0, 0, -1); +#endif + install("__WCHAR_TYPE__", -1, T_WCHAR_TYPE, 0, 0, -1); + install("__USER_LABEL_PREFIX__", -1, T_USER_LABEL_PREFIX_TYPE, 0, 0, -1); + install("__REGISTER_PREFIX__", -1, T_REGISTER_PREFIX_TYPE, 0, 0, -1); + install("__TIME__", -1, T_TIME, 0, 0, -1); + install("__STDC__", -1, T_CONST, STDC_VALUE, 0, -1); + if (CPP_OPTIONS(pfile)->objc) + install("__OBJC__", -1, T_CONST, 1, 0, -1); +/* This is supplied using a -D by the compiler driver + * so that it is present only when truly compiling with GNU C. */ +/* install ("__GNUC__", -1, T_CONST, 2, 0, -1); */ + + if (CPP_OPTIONS(pfile)->debug_output) + { + char directive[2048]; + struct directive *dp = &directive_table[0]; + struct tm *timebuf = timestamp(pfile); + cpp_buffer *pbuffer = CPP_BUFFER(pfile); + + while (CPP_PREV_BUFFER(pbuffer)) + pbuffer = CPP_PREV_BUFFER(pbuffer); + sprintf(directive, " __BASE_FILE__ \"%s\"\n", pbuffer->nominal_fname); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); + + sprintf(directive, " __VERSION__ \"%s\"\n", version_string); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); + +#ifndef NO_BUILTIN_SIZE_TYPE + sprintf(directive, " __SIZE_TYPE__ %s\n", SIZE_TYPE); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); +#endif + +#ifndef NO_BUILTIN_PTRDIFF_TYPE + sprintf(directive, " __PTRDIFF_TYPE__ %s\n", PTRDIFF_TYPE); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); +#endif + + sprintf(directive, " __WCHAR_TYPE__ %s\n", CPP_WCHAR_TYPE(pfile)); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); + + sprintf(directive, " __DATE__ \"%s %2d %4d\"\n", + monthnames[timebuf->tm_mon], + timebuf->tm_mday, timebuf->tm_year + 1900); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); + + sprintf(directive, " __TIME__ \"%02d:%02d:%02d\"\n", + timebuf->tm_hour, timebuf->tm_min, timebuf->tm_sec); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], pfile, + dp); + + sprintf(directive, " __STDC__ 1"); + output_line_command(pfile, 0, same_file); + pass_thru_directive(directive, &directive[strlen(directive)], + pfile, dp); + } +} + +/* Return 1 iff a token ending in C1 followed directly by a token C2 + * could cause mis-tokenization. */ + +static int +unsafe_chars(int c1, int c2) +{ +// printf("unsafe %c %c ...", c1, c2); + switch (c1) + { + case '+': + case '-': + case '.': +// printf(" no0\n"); + return 0; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'e': + case 'E': + if (c2 == '-' || c2 == '+') + { +// printf(" yes2\n"); + return 1; /* could extend a pre-processing number */ + } + goto letter; + case 'L': + if (c2 == '\'' || c2 == '\"') + { +// printf(" yes3\n"); + return 1; /* Could turn into L"xxx" or L'xxx'. */ + } + goto letter; + letter: + case '_': + case 'a': + case 'b': + case 'c': + case 'd': + case 'f': + case 'g': + case 'h': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'o': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + case 'A': + case 'B': + case 'C': + case 'D': + case 'F': + case 'G': + case 'H': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'O': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + /* We're in the middle of either a name or a pre-processing number. */ + if (is_idchar[c2] || c2 == '.') + { +// printf(" yes4 %i %i\n", is_idchar[c2], c2 == '.'); + return 1; + } + else + { +// printf(" no5\n"); + return 0; + } + case '<': + case '>': + case '!': + case '%': + case '#': + case ':': + case '^': + case '&': + case '|': + case '*': + case '/': + case '=': + if (c2 == c1 || c2 == '=') + { +// printf(" yes6\n"); + return 1; + } + else + { +// printf(" no7\n"); + return 0; + } + } +// printf(" no8\n"); + return 0; +} + +/* Expand a macro call. + * HP points to the symbol that is the macro being called. + * Put the result of expansion onto the input stack + * so that subsequent input by our caller will use it. + * + * If macro wants arguments, caller has already verified that + * an argument list follows; arguments come from the input stack. */ + +static void +macroexpand(cpp_reader * pfile, HASHNODE * hp) +{ + int nargs; + DEFINITION *defn = hp->value.defn; + unsigned char *xbuf; + long start_line, start_column; + int xbuf_len; + struct argdata *args; + long old_written = CPP_WRITTEN(pfile); + + int rest_args, rest_zero; + int i; + + pfile->output_escapes++; + cpp_buf_line_and_col(cpp_file_buffer(pfile), &start_line, &start_column); + + rest_zero = 0; + args = NULL; + nargs = defn->nargs; + + if (nargs >= 0) + { + enum cpp_token token; + + token = CPP_OTHER; + + args = (struct argdata *)alloca((nargs + 1) * sizeof(struct argdata)); + + for (i = 0; i < nargs; i++) + { + args[i].raw = args[i].expanded = 0; + args[i].raw_length = 0; + args[i].expand_length = args[i].stringified_length = -1; + args[i].use_count = 0; + } + + /* Parse all the macro args that are supplied. I counts them. + * The first NARGS args are stored in ARGS. + * The rest are discarded. If rest_args is set then we assume + * macarg absorbed the rest of the args. */ + i = 0; + rest_args = 0; + rest_args = 0; + FORWARD(1); /* Discard the open-parenthesis before the first arg. */ + do + { + if (rest_args) + continue; + if (i < nargs || (nargs == 0 && i == 0)) + { + unsigned char *bp; + + /* if we are working on last arg which absorbs rest of args... */ + if (i == nargs - 1 && defn->rest_args) + rest_args = 1; + args[i].raw = CPP_WRITTEN(pfile); + token = macarg(pfile, rest_args); + args[i].raw_length = CPP_WRITTEN(pfile) - args[i].raw; + args[i].newlines = 0; /* FIXME */ + bp = ARG_BASE + args[i].raw; + while (is_space[(unsigned char)(*bp)]) { bp++; } + args[i].raw_length -= bp - (ARG_BASE + args[i].raw); + args[i].raw = bp - ARG_BASE; + if (args[i].raw_length > 0) + { + bp = ARG_BASE + args[i].raw + args[i].raw_length - 1; + while (is_space[(unsigned char)(*bp)]) + { + bp--; + args[i].raw_length--; + if (args[i].raw_length < 1) break; + } + } + } + else + token = macarg(pfile, 0); + if (token == CPP_EOF || token == CPP_POP) + { + cpp_error_with_line(pfile, start_line, start_column, + "unterminated macro call"); + return; + } + i++; + } + while (token == CPP_COMMA); + + /* If we got one arg but it was just whitespace, call that 0 args. */ + if (i == 1) + { + unsigned char *bp = ARG_BASE + args[0].raw; + unsigned char *lim = bp + args[0].raw_length; + + /* cpp.texi says for foo ( ) we provide one argument. + * However, if foo wants just 0 arguments, treat this as 0. */ + if (nargs == 0) + while (bp != lim && is_space[*bp]) + bp++; + if (bp == lim) + i = 0; + } + /* Don't output an error message if we have already output one for + * a parse error above. */ + if (nargs == 0 && i > 0) + { + cpp_error(pfile, "arguments given to macro `%s'", hp->name); + } + else if (i < nargs) + { + if (i == nargs - 1 && defn->rest_args) + rest_zero = 1; + else if (i == 0) + cpp_error(pfile, "macro `%s' used without args", hp->name); + else if (i == 1) + cpp_error(pfile, "macro `%s' used with just one arg", hp->name); + else + cpp_error(pfile, "macro `%s' used with only %d args", + hp->name, i); + } + else if (i > nargs) + { + cpp_error(pfile, + "macro `%s' used with too many (%d) args", hp->name, i); + } + } + /* If macro wants zero args, we parsed the arglist for checking only. + * Read directly from the macro definition. */ + if (nargs <= 0) + { + xbuf = defn->expansion; + xbuf_len = defn->length; + } + else + { + unsigned char *exp = defn->expansion; + int offset; /* offset in expansion, + * copied a piece at a time */ + int totlen; /* total amount of exp buffer filled so far */ + reflist *ap, *last_ap; + + /* Macro really takes args. Compute the expansion of this call. */ + + /* Compute length in characters of the macro's expansion. + * Also count number of times each arg is used. */ + xbuf_len = defn->length; + for (ap = defn->pattern; ap; ap = ap->next) + { + if (ap->stringify) + { + struct argdata *arg = &args[ap->argno]; + + /* Stringify it it hasn't already been */ + if (arg->stringified_length < 0) + { + int arglen = arg->raw_length; + int escaped = 0; + int in_string = 0; + int c; + + /* Initially need_space is -1. Otherwise, 1 means the + * previous character was a space, but we suppressed it; + * 0 means the previous character was a non-space. */ + int need_space = -1; + + i = 0; + arg->stringified = CPP_WRITTEN(pfile); + CPP_PUTC(pfile, '\"'); /* insert beginning quote */ + for (; i < arglen; i++) + { + c = (ARG_BASE + arg->raw)[i]; + + if (!in_string) + { + /* Internal sequences of whitespace are replaced by + * one space except within an string or char token. */ + if (is_space[c]) + { + if (CPP_WRITTEN(pfile) > arg->stringified + && (CPP_PWRITTEN(pfile))[-1] == '@') + { + /* "@ " escape markers are removed */ + CPP_ADJUST_WRITTEN(pfile, -1); + continue; + } + if (need_space == 0) + need_space = 1; + continue; + } + else if (need_space > 0) + CPP_PUTC(pfile, ' '); + need_space = 0; + } + if (escaped) + escaped = 0; + else + { + if (c == '\\') + escaped = 1; + if (in_string) + { + if (c == in_string) + in_string = 0; + } + else if (c == '\"' || c == '\'') + in_string = c; + } + + /* Escape these chars */ + if (c == '\"' || (in_string && c == '\\')) + CPP_PUTC(pfile, '\\'); + if (isprint(c)) + CPP_PUTC(pfile, c); + else + { + CPP_RESERVE(pfile, 4); + sprintf((char *)CPP_PWRITTEN(pfile), "\\%03o", + (unsigned int)c); + CPP_ADJUST_WRITTEN(pfile, 4); + } + } + CPP_PUTC(pfile, '\"'); /* insert ending quote */ + arg->stringified_length + = CPP_WRITTEN(pfile) - arg->stringified; + } + xbuf_len += args[ap->argno].stringified_length; + } + else if (ap->raw_before || ap->raw_after) + { + /* Add 4 for two newline-space markers to prevent + * token concatenation. */ + xbuf_len += args[ap->argno].raw_length + 4; + } + else + { + /* We have an ordinary (expanded) occurrence of the arg. + * So compute its expansion, if we have not already. */ + if (args[ap->argno].expand_length < 0) + { + args[ap->argno].expanded = CPP_WRITTEN(pfile); + cpp_expand_to_buffer(pfile, + ARG_BASE + args[ap->argno].raw, + args[ap->argno].raw_length); + + args[ap->argno].expand_length + = CPP_WRITTEN(pfile) - args[ap->argno].expanded; + } + /* Add 4 for two newline-space markers to prevent + * token concatenation. */ + xbuf_len += args[ap->argno].expand_length + 4; + } + if (args[ap->argno].use_count < 10) + args[ap->argno].use_count++; + } + + xbuf = (unsigned char *)xmalloc(xbuf_len + 1); + + /* Generate in XBUF the complete expansion + * with arguments substituted in. + * TOTLEN is the total size generated so far. + * OFFSET is the index in the definition + * of where we are copying from. */ + offset = totlen = 0; + for (last_ap = NULL, ap = defn->pattern; ap; + last_ap = ap, ap = ap->next) + { + struct argdata *arg = &args[ap->argno]; + int count_before = totlen; + + /* Add chars to XBUF. */ + for (i = 0; i < ap->nchars; i++, offset++) + xbuf[totlen++] = exp[offset]; + + /* If followed by an empty rest arg with concatenation, + * delete the last run of nonwhite chars. */ + if (rest_zero && totlen > count_before + && ((ap->rest_args && ap->raw_before) + || (last_ap && last_ap->rest_args && last_ap->raw_after))) + { + /* Delete final whitespace. */ + while (totlen > count_before && is_space[xbuf[totlen - 1]]) + totlen--; + + /* Delete the nonwhites before them. */ + while (totlen > count_before && !is_space[xbuf[totlen - 1]]) + totlen--; + } + if (ap->stringify != 0) + { + memcpy(xbuf + totlen, ARG_BASE + arg->stringified, + arg->stringified_length); + totlen += arg->stringified_length; + } + else if (ap->raw_before || ap->raw_after) + { + unsigned char *p1 = ARG_BASE + arg->raw; + unsigned char *l1 = p1 + arg->raw_length; + + if (ap->raw_before) + { + while (p1 != l1 && is_space[*p1]) + p1++; + while (p1 != l1 && is_idchar[*p1]) + xbuf[totlen++] = *p1++; + } + if (ap->raw_after) + { + /* Arg is concatenated after: delete trailing whitespace, + * whitespace markers, and no-reexpansion markers. */ + while (p1 != l1) + { + if (is_space[l1[-1]]) + l1--; + else if (l1[-1] == '-') + { + unsigned char *p2 = l1 - 1; + + /* If a `-' is preceded by an odd number of newlines then it + * and the last newline are a no-reexpansion marker. */ + while (p2 != p1 && p2[-1] == '\n') + p2--; + if ((l1 - 1 - p2) & 1) + { + l1 -= 2; + } + else + break; + } + else + break; + } + } + memcpy(xbuf + totlen, p1, l1 - p1); + totlen += l1 - p1; + } + else + { + unsigned char *expanded = ARG_BASE + arg->expanded; + + if (!ap->raw_before && totlen > 0 && arg->expand_length + && unsafe_chars(xbuf[totlen - 1], expanded[0])) + { + xbuf[totlen++] = '@'; + xbuf[totlen++] = ' '; + } + memcpy(xbuf + totlen, expanded, arg->expand_length); + totlen += arg->expand_length; + + if (!ap->raw_after && totlen > 0 && offset < defn->length + && unsafe_chars(xbuf[totlen - 1], exp[offset])) + { + xbuf[totlen++] = '@'; + xbuf[totlen++] = ' '; + } + /* If a macro argument with newlines is used multiple times, + * then only expand the newlines once. This avoids creating + * output lines which don't correspond to any input line, + * which confuses gdb and gcov. */ + if (arg->use_count > 1 && arg->newlines > 0) + { + /* Don't bother doing change_newlines for subsequent + * uses of arg. */ + arg->use_count = 1; + arg->expand_length + = change_newlines(expanded, arg->expand_length); + } + } + + if (totlen > xbuf_len) + abort(); + } + /* if there is anything left of the definition + * after handling the arg list, copy that in too. */ + + for (i = offset; i < defn->length; i++) + { + /* if we've reached the end of the macro */ + if (exp[i] == ')') + rest_zero = 0; + if (!(rest_zero && last_ap && last_ap->rest_args + && last_ap->raw_after)) + xbuf[totlen++] = exp[i]; + } + + xbuf[totlen] = 0; + xbuf_len = totlen; + } + + pfile->output_escapes--; + + /* Now put the expansion on the input stack + * so our caller will commence reading from it. */ + push_macro_expansion(pfile, xbuf, xbuf_len, hp); + CPP_BUFFER(pfile)->has_escapes = 1; + + /* Pop the space we've used in the token_buffer for argument expansion. */ + CPP_SET_WRITTEN(pfile, old_written); + + /* Recursive macro use sometimes works traditionally. + * #define foo(x,y) bar (x (y,0), y) + * foo (foo, baz) */ + + hp->type = T_DISABLED; +} + +static void +push_macro_expansion(cpp_reader * pfile, unsigned char *xbuf, int xbuf_len, + HASHNODE * hp) +{ + cpp_buffer *mbuf = cpp_push_buffer(pfile, xbuf, xbuf_len); + + mbuf->cleanup = macro_cleanup; + mbuf->data = hp; + + /* The first chars of the expansion should be a "@ " added by + * collect_expansion. This is to prevent accidental token-pasting + * between the text preceding the macro invocation, and the macro + * expansion text. + * + * We would like to avoid adding unneeded spaces (for the sake of + * tools that use cpp, such as imake). In some common cases we can + * tell that it is safe to omit the space. + * + * The character before the macro invocation cannot have been an + * idchar (or else it would have been pasted with the idchars of + * the macro name). Therefore, if the first non-space character + * of the expansion is an idchar, we do not need the extra space + * to prevent token pasting. + * + * Also, we don't need the extra space if the first char is '(', + * or some other (less common) characters. */ + + if (xbuf[0] == '@' && xbuf[1] == ' ' + && (is_idchar[xbuf[2]] || xbuf[2] == '(' || xbuf[2] == '\'' + || xbuf[2] == '\"')) + mbuf->cur += 2; +} + +/* Like cpp_get_token, except that it does not read past end-of-line. + * Also, horizontal space is skipped, and macros are popped. */ + +static enum cpp_token +get_directive_token(cpp_reader * pfile) +{ + for (;;) + { + long old_written = CPP_WRITTEN(pfile); + enum cpp_token token; + + cpp_skip_hspace(pfile); + if (PEEKC() == '\n') + return CPP_VSPACE; + token = cpp_get_token(pfile); + switch (token) + { + case CPP_POP: + if (!CPP_IS_MACRO_BUFFER(CPP_BUFFER(pfile))) + return token; + /* ... else fall though ... */ + case CPP_HSPACE: + case CPP_COMMENT: + CPP_SET_WRITTEN(pfile, old_written); + break; + default: + return token; + } + } +} + +/* Handle #include and #import. + * This function expects to see "fname" or on the input. + * + * The input is normally in part of the output_buffer following + * CPP_WRITTEN, and will get overwritten by output_line_command. + * I.e. in input file specification has been popped by handle_directive. + * This is safe. */ + +static int +do_include(cpp_reader * pfile, struct directive *keyword, + unsigned char *unused1 __UNUSED__, unsigned char *unused2 __UNUSED__) +{ + int importing = (keyword->type == T_IMPORT); + int skip_dirs = (keyword->type == T_INCLUDE_NEXT); + char *fname; /* Dynamically allocated fname buffer */ + unsigned char *fbeg, *fend; /* Beginning and end of fname */ + enum cpp_token token; + + /* Chain of dirs to search */ + file_name_list *search_start = CPP_OPTIONS(pfile)->include; + file_name_list dsp[1]; /* First in chain, if #include "..." */ + file_name_list *searchptr = 0; + long old_written = CPP_WRITTEN(pfile); + int flen; + int f; /* file number */ + int angle_brackets = 0; /* 0 for "...", 1 for <...> */ + + f = -1; /* JF we iz paranoid! */ + + if (importing && CPP_OPTIONS(pfile)->warn_import + && !CPP_OPTIONS(pfile)->inhibit_warnings + && !CPP_BUFFER(pfile)->system_header_p && !pfile->import_warning) + { + pfile->import_warning = 1; + cpp_warning(pfile, "using `#import' is not recommended"); + fprintf(stderr, + "The fact that a certain header file need not be processed more than once\n"); + fprintf(stderr, + "should be indicated in the header file, not where it is used.\n"); + fprintf(stderr, + "The best way to do this is with a conditional of this form:\n\n"); + fprintf(stderr, " #ifndef _FOO_H_INCLUDED\n"); + fprintf(stderr, " #define _FOO_H_INCLUDED\n"); + fprintf(stderr, " ... ...\n"); + fprintf(stderr, " #endif /* Not _FOO_H_INCLUDED */\n\n"); + fprintf(stderr, "Then users can use `#include' any number of times.\n"); + fprintf(stderr, + "GNU C automatically avoids processing the file more than once\n"); + fprintf(stderr, "when it is equipped with such a conditional.\n"); + } + pfile->parsing_include_directive++; + token = get_directive_token(pfile); + pfile->parsing_include_directive--; + + if (token == CPP_STRING) + { + /* FIXME - check no trailing garbage */ + fbeg = pfile->token_buffer + old_written + 1; + fend = CPP_PWRITTEN(pfile) - 1; + if (fbeg[-1] == '<') + { + angle_brackets = 1; + /* If -I-, start with the first -I dir after the -I-. */ + if (CPP_OPTIONS(pfile)->first_bracket_include) + search_start = CPP_OPTIONS(pfile)->first_bracket_include; + } + /* If -I- was specified, don't search current dir, only spec'd ones. */ + else if (!CPP_OPTIONS(pfile)->ignore_srcdir) + { + cpp_buffer *fp; + + /* We have "filename". Figure out directory this source + * file is coming from and put it on the front of the list. */ + + for (fp = CPP_BUFFER(pfile); fp; fp = CPP_PREV_BUFFER(fp)) + { + int n; + const char *ep, *nam; + + if ((nam = fp->nominal_fname)) + { + /* Found a named file. Figure out dir of the file, + * and put it in front of the search list. */ + dsp[0].next = search_start; + search_start = dsp; +#ifndef VMS + ep = strrchr(nam, '/'); +#else /* VMS */ + ep = strrchr(nam, ']'); + if (!ep) + ep = strrchr(nam, '>'); + if (!ep) + ep = strrchr(nam, ':'); + if (ep) + ep++; +#endif /* VMS */ + if (ep) + { + n = ep - nam; + dsp[0].fname = (char *)alloca(n + 1); + strncpy(dsp[0].fname, nam, n); + dsp[0].fname[n] = '\0'; + if (n + INCLUDE_LEN_FUDGE > pfile->max_include_len) + pfile->max_include_len = n + INCLUDE_LEN_FUDGE; + } + else + { + dsp[0].fname = 0; /* Current directory */ + } + dsp[0].got_name_map = 0; + break; + } + } + } + } + else + { + cpp_error(pfile, + "`#%s' expects \"FILENAME\" or ", keyword->name); + CPP_SET_WRITTEN(pfile, old_written); + skip_rest_of_line(pfile); + return 0; + } + + *fend = 0; + + token = get_directive_token(pfile); + if (token != CPP_VSPACE) + { + cpp_error(pfile, "junk at end of `#include'"); + while (token != CPP_VSPACE && token != CPP_EOF && token != CPP_POP) + token = get_directive_token(pfile); + } + /* For #include_next, skip in the search path + * past the dir in which the containing file was found. */ + if (skip_dirs) + { + cpp_buffer *fp; + + for (fp = CPP_BUFFER(pfile); fp; fp = CPP_PREV_BUFFER(fp)) + if (fp->fname) + { + /* fp->dir is null if the containing file was specified with + * an absolute file name. In that case, don't skip anything. */ + if (fp->dir == SELF_DIR_DUMMY) + search_start = CPP_OPTIONS(pfile)->include; + else if (fp->dir) + search_start = fp->dir->next; + break; + } + } + CPP_SET_WRITTEN(pfile, old_written); + + flen = fend - fbeg; + + if (flen == 0) + { + cpp_error(pfile, "empty file name in `#%s'", keyword->name); + return 0; + } + /* Allocate this permanently, because it gets stored in the definitions + * of macros. */ + fname = (char *)xmalloc(pfile->max_include_len + flen + 4); + /* + 2 above for slash and terminating null. */ + /* + 2 added for '.h' on VMS (to support '#include filename') */ + + /* If specified file name is absolute, just open it. */ + +#ifndef __EMX__ + if (*fbeg == '/') +#else + if (_fnisabs(fbeg)) +#endif + { + strncpy(fname, (const char *)fbeg, flen); + fname[flen] = 0; + if (redundant_include_p(pfile, fname)) + return 0; + if (importing) + f = lookup_import(pfile, fname, NULL); + else + f = open_include_file(pfile, fname, NULL); + if (f == -2) + return 0; /* Already included this file */ + } + else + { + /* Search directory path, trying to open the file. + * Copy each filename tried into FNAME. */ + + for (searchptr = search_start; searchptr; searchptr = searchptr->next) + { + if (searchptr->fname) + { + /* The empty string in a search path is ignored. + * This makes it possible to turn off entirely + * a standard piece of the list. */ + if (searchptr->fname[0] == 0) + continue; + strcpy(fname, searchptr->fname); + strcat(fname, "/"); + fname[strlen(fname) + flen] = 0; + } + else + { + fname[0] = 0; + } + strncat(fname, (const char *)fbeg, flen); +#ifdef VMS + /* Change this 1/2 Unix 1/2 VMS file specification into a + * full VMS file specification */ + if (searchptr->fname && (searchptr->fname[0] != 0)) + { + /* Fix up the filename */ + hack_vms_include_specification(fname); + } + else + { + /* This is a normal VMS filespec, so use it unchanged. */ + strncpy(fname, fbeg, flen); + fname[flen] = 0; + /* if it's '#include filename', add the missing .h */ + if (!strchr(fname, '.')) + { + strcat(fname, ".h"); + } + } +#endif /* VMS */ + /* ??? There are currently 3 separate mechanisms for avoiding processing + * of redundant include files: #import, #pragma once, and + * redundant_include_p. It would be nice if they were unified. */ + if (redundant_include_p(pfile, fname)) + return 0; + if (importing) + f = lookup_import(pfile, fname, searchptr); + else + f = open_include_file(pfile, fname, searchptr); + if (f == -2) + return 0; /* Already included this file */ +#ifdef EACCES + else if (f == -1 && errno == EACCES) + cpp_warning(pfile, "Header file %s exists, but is not readable", + fname); +#endif + if (f >= 0) + break; + } + } + + if (f < 0) + { + /* A file that was not found. */ + strncpy(fname, (const char *)fbeg, flen); + fname[flen] = 0; + /* If generating dependencies and -MG was specified, we assume missing + * files are leaf files, living in the same directory as the source file + * or other similar place; these missing files may be generated from + * other files and may not exist yet (eg: y.tab.h). */ + + if (CPP_OPTIONS(pfile)->print_deps_missing_files + && CPP_PRINT_DEPS(pfile) + > (angle_brackets || (pfile->system_include_depth > 0))) + { + /* If it was requested as a system header file, + * then assume it belongs in the first place to look for such. */ + if (angle_brackets) + { + for (searchptr = search_start; searchptr; + searchptr = searchptr->next) + { + if (searchptr->fname) + { + char *p; + + if (searchptr->fname[0] == 0) + continue; + p = (char *)alloca(strlen(searchptr->fname) + + strlen(fname) + 2); + strcpy(p, searchptr->fname); + strcat(p, "/"); + strcat(p, fname); + deps_output(pfile, p, ' '); + break; + } + } + } + else + { + /* Otherwise, omit the directory, as if the file existed + * in the directory with the source. */ + deps_output(pfile, fname, ' '); + } + } + /* If -M was specified, and this header file won't be added to the + * dependency list, then don't count this as an error, because we can + * still produce correct output. Otherwise, we can't produce correct + * output, because there may be dependencies we need inside the missing + * file, and we don't know what directory this missing file exists in. */ + else if (CPP_PRINT_DEPS(pfile) + && (CPP_PRINT_DEPS(pfile) + <= (angle_brackets || (pfile->system_include_depth > 0)))) + cpp_warning(pfile, "No include path in which to find %s", fname); + else if (search_start) + cpp_error_from_errno(pfile, fname); + else + cpp_error(pfile, "No include path in which to find %s", fname); + } + else + { + /* Check to see if this include file is a once-only include file. + * If so, give up. */ + + file_name_list *ptr; + + for (ptr = pfile->dont_repeat_files; ptr; ptr = ptr->next) + { + if (!strcmp(ptr->fname, fname)) + { + close(f); + return 0; /* This file was once'd. */ + } + } + + for (ptr = pfile->all_include_files; ptr; ptr = ptr->next) + { + if (!strcmp(ptr->fname, fname)) + break; /* This file was included before. */ + } + + if (!ptr) + { + /* This is the first time for this file. */ + /* Add it to list of files included. */ + + ptr = (file_name_list *) xmalloc(sizeof(file_name_list)); + + ptr->control_macro = 0; + ptr->c_system_include_path = 0; + ptr->next = pfile->all_include_files; + pfile->all_include_files = ptr; + ptr->fname = savestring(fname); + ptr->got_name_map = 0; + + /* For -M, add this file to the dependencies. */ + if (CPP_PRINT_DEPS(pfile) + > (angle_brackets || (pfile->system_include_depth > 0))) + deps_output(pfile, fname, ' '); + } + /* Handle -H option. */ + if (CPP_OPTIONS(pfile)->print_include_names) + { + cpp_buffer *buf = CPP_BUFFER(pfile); + + while ((buf = CPP_PREV_BUFFER(buf))) + putc('.', stderr); + fprintf(stderr, "%s\n", fname); + } + if (angle_brackets) + pfile->system_include_depth++; + + /* Actually process the file. */ + + /* Record file on "seen" list for #import. */ + add_import(pfile, f, fname); + + /* Actually process the file */ + cpp_push_buffer(pfile, NULL, 0); + if (finclude(pfile, f, fname, is_system_include(pfile, fname), + searchptr != dsp ? searchptr : SELF_DIR_DUMMY)) + { + output_line_command(pfile, 0, enter_file); + pfile->only_seen_white = 2; + } + if (angle_brackets) + pfile->system_include_depth--; + } + return 0; +} + +/* Return nonzero if there is no need to include file NAME + * because it has already been included and it contains a conditional + * to make a repeated include do nothing. */ + +static int +redundant_include_p(cpp_reader * pfile, char *name) +{ + file_name_list *l = pfile->all_include_files; + + for (; l; l = l->next) + if (!strcmp(name, l->fname) + && l->control_macro + && cpp_lookup((const char *)l->control_macro, -1, -1)) + return 1; + return 0; +} + +/* Return nonzero if the given FILENAME is an absolute pathname which + * designates a file within one of the known "system" include file + * directories. We assume here that if the given FILENAME looks like + * it is the name of a file which resides either directly in a "system" + * include file directory, or within any subdirectory thereof, then the + * given file must be a "system" include file. This function tells us + * if we should suppress pedantic errors/warnings for the given FILENAME. + * + * The value is 2 if the file is a C-language system header file + * for which C++ should (on most systems) assume `extern "C"'. */ + +static int +is_system_include(cpp_reader * pfile, char *filename) +{ + file_name_list *searchptr; + + for (searchptr = CPP_OPTIONS(pfile)->first_system_include; searchptr; + searchptr = searchptr->next) + if (searchptr->fname) + { + char *sys_dir = searchptr->fname; + unsigned length = strlen(sys_dir); + + if (!strncmp(sys_dir, filename, length) && filename[length] == '/') + { + if (searchptr->c_system_include_path) + return 2; + else + return 1; + } + } + return 0; +} + +/* + * Install a name in the assertion hash table. + * + * If LEN is >= 0, it is the length of the name. + * Otherwise, compute the length by scanning the entire name. + * + * If HASH is >= 0, it is the precomputed hash code. + * Otherwise, compute the hash code. + */ +static ASSERTION_HASHNODE * +assertion_install(cpp_reader * pfile, const char *name, int len, int hash) +{ + ASSERTION_HASHNODE *hp; + int i, bucket; + + i = sizeof(ASSERTION_HASHNODE) + len + 1; + hp = (ASSERTION_HASHNODE *) xmalloc(i); + bucket = hash; + hp->bucket_hdr = &pfile->assertion_hashtab[bucket]; + hp->next = pfile->assertion_hashtab[bucket]; + pfile->assertion_hashtab[bucket] = hp; + hp->prev = NULL; + if (hp->next) + hp->next->prev = hp; + hp->length = len; + hp->value = 0; + hp->name = ((char *)hp) + sizeof(ASSERTION_HASHNODE); + memcpy(hp->name, name, len); + hp->name[len] = 0; + return hp; +} +/* + * find the most recent hash node for name name (ending with first + * non-identifier char) installed by install + * + * If LEN is >= 0, it is the length of the name. + * Otherwise, compute the length by scanning the entire name. + * + * If HASH is >= 0, it is the precomputed hash code. + * Otherwise, compute the hash code. + */ + +static ASSERTION_HASHNODE * +assertion_lookup(cpp_reader * pfile, const char *name, int len, int hash) +{ + ASSERTION_HASHNODE *bucket; + + bucket = pfile->assertion_hashtab[hash]; + while (bucket) + { + if (bucket->length == len && strncmp(bucket->name, name, len) == 0) + return bucket; + bucket = bucket->next; + } + return NULL; +} + +static void +delete_assertion(ASSERTION_HASHNODE * hp) +{ + struct tokenlist_list *tail; + + if (hp->prev) + hp->prev->next = hp->next; + if (hp->next) + hp->next->prev = hp->prev; + + for (tail = hp->value; tail;) + { + struct tokenlist_list *next = tail->next; + + free_token_list(tail->tokens); + free(tail); + tail = next; + } + + /* make sure that the bucket chain header that + * the deleted guy was on points to the right thing afterwards. */ + if (hp == *hp->bucket_hdr) + *hp->bucket_hdr = hp->next; + + free(hp); +} + +/* Convert a character string literal into a nul-terminated string. + * The input string is [IN ... LIMIT). + * The result is placed in RESULT. RESULT can be the same as IN. + * The value returned in the end of the string written to RESULT, + * or NULL on error. */ + +static char * +convert_string(cpp_reader * pfile, char *result, char *in, char *limit, + int handle_escapes) +{ + unsigned char c; + + c = *in++; + if (c != '\"') + return NULL; + while (in < limit) + { + c = *in++; + + switch (c) + { + case '\0': + return NULL; + case '\"': + limit = in; + break; + case '\\': + if (handle_escapes) + { + char *bpc = in; + int i = + (unsigned char)cpp_parse_escape(pfile, &bpc); + + in = bpc; + if (i >= 0) + *result++ = (unsigned char)c; + break; + } + /* else fall through */ + default: + *result++ = c; + } + } + *result = 0; + return result; +} + +/* + * interpret #line command. Remembers previously seen fnames + * in its very own hash table. + */ +#define FNAME_HASHSIZE 37 + +static int +do_line(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *unused1 __UNUSED__, unsigned char *unused2 __UNUSED__) +{ + cpp_buffer *ip = CPP_BUFFER(pfile); + int new_lineno; + long old_written = CPP_WRITTEN(pfile); + enum file_change_code file_change = same_file; + enum cpp_token token; + + token = get_directive_token(pfile); + + if (token != CPP_NUMBER || !isdigit(pfile->token_buffer[old_written])) + { + cpp_error(pfile, "invalid format `#line' command"); + goto bad_line_directive; + } + /* The Newline at the end of this line remains to be processed. + * To put the next line at the specified line number, + * we must store a line number now that is one less. */ + new_lineno = atoi((char *)(pfile->token_buffer + old_written)) - 1; + CPP_SET_WRITTEN(pfile, old_written); + + /* NEW_LINENO is one less than the actual line number here. */ + if (CPP_PEDANTIC(pfile) && new_lineno < 0) + cpp_pedwarn(pfile, "line number out of range in `#line' command"); + + token = get_directive_token(pfile); + + if (token == CPP_STRING) + { + char *fname = (char *)pfile->token_buffer + old_written; + char *end_name; + static HASHNODE *fname_table[FNAME_HASHSIZE]; + HASHNODE *hp, **hash_bucket; + unsigned char *p; + long num_start; + int fname_length; + + /* Turn the file name, which is a character string literal, + * into a null-terminated string. Do this in place. */ + end_name = + convert_string(pfile, fname, fname, (char *)CPP_PWRITTEN(pfile), 1); + if (!end_name) + { + cpp_error(pfile, "invalid format `#line' command"); + goto bad_line_directive; + } + fname_length = end_name - fname; + + num_start = CPP_WRITTEN(pfile); + token = get_directive_token(pfile); + if (token != CPP_VSPACE && token != CPP_EOF && token != CPP_POP) + { + p = pfile->token_buffer + num_start; + if (CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "garbage at end of `#line' command"); + + if (token != CPP_NUMBER || *p < '0' || *p > '4' || p[1] != '\0') + { + cpp_error(pfile, "invalid format `#line' command"); + goto bad_line_directive; + } + if (*p == '1') + file_change = enter_file; + else if (*p == 2) + file_change = leave_file; + else if (*p == 3) + ip->system_header_p = 1; + else /* if (*p == 4) */ + ip->system_header_p = 2; + + CPP_SET_WRITTEN(pfile, num_start); + token = get_directive_token(pfile); + p = pfile->token_buffer + num_start; + if (token == CPP_NUMBER && p[1] == '\0' + && (*p == '3' || *p == '4')) + { + ip->system_header_p = *p == 3 ? 1 : 2; + token = get_directive_token(pfile); + } + if (token != CPP_VSPACE) + { + cpp_error(pfile, "invalid format `#line' command"); + goto bad_line_directive; + } + } + hash_bucket = &fname_table[hashf(fname, fname_length, FNAME_HASHSIZE)]; + for (hp = *hash_bucket; hp; hp = hp->next) + if (hp->length == fname_length && + strncmp(hp->value.cpval, fname, fname_length) == 0) + { + ip->nominal_fname = hp->value.cpval; + break; + } + if (!hp) + { + /* Didn't find it; cons up a new one. */ + hp = (HASHNODE *) xcalloc(1, sizeof(HASHNODE) + fname_length + 1); + hp->next = *hash_bucket; + *hash_bucket = hp; + + hp->length = fname_length; + ip->nominal_fname = hp->value.cpval = + ((char *)hp) + sizeof(HASHNODE); + memcpy(hp->value.cpval, fname, fname_length); + } + } + else if (token != CPP_VSPACE && token != CPP_EOF) + { + cpp_error(pfile, "invalid format `#line' command"); + goto bad_line_directive; + } + ip->lineno = new_lineno; + bad_line_directive: + skip_rest_of_line(pfile); + CPP_SET_WRITTEN(pfile, old_written); + output_line_command(pfile, 0, file_change); + return 0; +} + +/* + * remove the definition of a symbol from the symbol table. + * according to un*x /lib/cpp, it is not an error to undef + * something that has no definitions, so it isn't one here either. + */ + +static int +do_undef(cpp_reader * pfile, struct directive *keyword, unsigned char *buf, + unsigned char *limit) +{ + int sym_length; + HASHNODE *hp; + unsigned char *orig_buf = buf; + + SKIP_WHITE_SPACE(buf); + sym_length = check_macro_name(pfile, buf, "macro"); + + while ((hp = cpp_lookup((const char *)buf, sym_length, -1))) + { + /* If we are generating additional info for debugging (with -g) we + * need to pass through all effective #undef commands. */ + if (CPP_OPTIONS(pfile)->debug_output && keyword) + pass_thru_directive((char *)orig_buf, (char *)limit, pfile, keyword); + if (hp->type != T_MACRO) + cpp_warning(pfile, "undefining `%s'", hp->name); + delete_macro(hp); + } + + if (CPP_PEDANTIC(pfile)) + { + buf += sym_length; + SKIP_WHITE_SPACE(buf); + if (buf != limit) + cpp_pedwarn(pfile, "garbage after `#undef' directive"); + } + return 0; +} + +/* + * Report an error detected by the program we are processing. + * Use the text of the line in the error message. + * (We use error because it prints the filename & line#.) + */ + +static int +do_error(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf, unsigned char *limit) +{ + int length = limit - buf; + unsigned char *copy = (unsigned char *)xmalloc(length + 1); + + memcpy(copy, buf, length); + copy[length] = 0; + SKIP_WHITE_SPACE(copy); + cpp_error(pfile, "#error %s", copy); + return 0; +} + +/* + * Report a warning detected by the program we are processing. + * Use the text of the line in the warning message, then continue. + * (We use error because it prints the filename & line#.) + */ + +static int +do_warning(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf, unsigned char *limit) +{ + int length = limit - buf; + unsigned char *copy = (unsigned char *)xmalloc(length + 1); + + memcpy(copy, buf, length); + copy[length] = 0; + SKIP_WHITE_SPACE(copy); + cpp_warning(pfile, "#warning %s", copy); + return 0; +} + +/* Remember the name of the current file being read from so that we can + * avoid ever including it again. */ + +static int +do_once(cpp_reader * pfile) +{ + cpp_buffer *ip = NULL; + file_name_list *new_; + + for (ip = CPP_BUFFER(pfile);; ip = CPP_PREV_BUFFER(ip)) + { + if (!ip) + return 0; + if (ip->fname) + break; + } + + new_ = (file_name_list *) xmalloc(sizeof(file_name_list)); + + new_->next = pfile->dont_repeat_files; + pfile->dont_repeat_files = new_; + new_->fname = savestring(ip->fname); + new_->control_macro = 0; + new_->got_name_map = 0; + new_->c_system_include_path = 0; + + return 0; +} + +/* #ident has already been copied to the output file, so just ignore it. */ + +static int +do_ident(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf __UNUSED__, unsigned char *limit __UNUSED__) +{ +/* long old_written = CPP_WRITTEN (pfile); */ + + /* Allow #ident in system headers, since that's not user's fault. */ + if (CPP_PEDANTIC(pfile) && !CPP_BUFFER(pfile)->system_header_p) + cpp_pedwarn(pfile, "ANSI C does not allow `#ident'"); + + /* Leave rest of line to be read by later calls to cpp_get_token. */ + + return 0; +} + +/* #pragma and its argument line have already been copied to the output file. + * Just check for some recognized pragmas that need validation here. */ + +static int +do_pragma(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf, unsigned char *limit __UNUSED__) +{ + while (*buf == ' ' || *buf == '\t') + buf++; + + if (!strncmp((const char *)buf, "once", 4)) + { + /* Allow #pragma once in system headers, since that's not the user's + * fault. */ + if (!CPP_BUFFER(pfile)->system_header_p) + cpp_warning(pfile, "`#pragma once' is obsolete"); + do_once(pfile); + } + if (!strncmp((const char *)buf, "implementation", 14)) + { + /* Be quiet about `#pragma implementation' for a file only if it hasn't + * been included yet. */ + file_name_list *ptr; + char *p = (char *)buf + 14, *fname, *inc_fname; + int fname_len; + + SKIP_WHITE_SPACE(p); + if (*p == '\n' || *p != '\"') + return 0; + + fname = p + 1; + p = strchr(fname, '\"'); + fname_len = (p) ? (int)(p - fname) : (int)strlen(fname); + + for (ptr = pfile->all_include_files; ptr; ptr = ptr->next) + { + inc_fname = strrchr(ptr->fname, '/'); + inc_fname = inc_fname ? inc_fname + 1 : (char *)ptr->fname; + if (inc_fname && !strncmp(inc_fname, fname, fname_len)) + cpp_warning(pfile, + "`#pragma implementation' for `%s' appears after file is included", + fname); + } + } + return 0; +} + +/* Just ignore #sccs, on systems where we define it at all. */ + +/* + * handle #if command by + * 1) inserting special `defined' keyword into the hash table + * that gets turned into 0 or 1 by special_symbol (thus, + * if the luser has a symbol called `defined' already, it won't + * work inside the #if command) + * 2) rescan the input into a temporary output buffer + * 3) pass the output buffer to the yacc parser and collect a value + * 4) clean up the mess left from steps 1 and 2. + * 5) call conditional_skip to skip til the next #endif (etc.), + * or not, depending on the value from step 3. + */ + +static int +do_if(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf, unsigned char *limit) +{ + HOST_WIDE_INT value = eval_if_expression(pfile, buf, limit - buf); + + conditional_skip(pfile, value == 0, T_IF, NULL); + return 0; +} + +/* + * handle a #elif directive by not changing if_stack either. + * see the comment above do_else. + */ + +static int +do_elif(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf, unsigned char *limit) +{ + if (pfile->if_stack == CPP_BUFFER(pfile)->if_stack) + { + cpp_error(pfile, "`#elif' not within a conditional"); + return 0; + } + else + { + if (pfile->if_stack->type != T_IF && pfile->if_stack->type != T_ELIF) + { + cpp_error(pfile, "`#elif' after `#else'"); + if (pfile->if_stack->fname + && CPP_BUFFER(pfile)->fname + && strcmp(pfile->if_stack->fname, + CPP_BUFFER(pfile)->nominal_fname) != 0) + fprintf(stderr, ", file %s", pfile->if_stack->fname); + fprintf(stderr, ")\n"); + } + pfile->if_stack->type = T_ELIF; + } + + if (pfile->if_stack->if_succeeded) + skip_if_group(pfile, 0); + else + { + HOST_WIDE_INT value = eval_if_expression(pfile, buf, limit - buf); + + if (value == 0) + skip_if_group(pfile, 0); + else + { + ++pfile->if_stack->if_succeeded; /* continue processing input */ + output_line_command(pfile, 1, same_file); + } + } + return 0; +} + +/* + * evaluate a #if expression in BUF, of length LENGTH, + * then parse the result as a C expression and return the value as an int. + */ +static HOST_WIDE_INT +eval_if_expression(cpp_reader * pfile, unsigned char *buf __UNUSED__, + int length __UNUSED__) +{ + HASHNODE *save_defined; + HOST_WIDE_INT value; + long old_written = CPP_WRITTEN(pfile); + + save_defined = install("defined", -1, T_SPEC_DEFINED, 0, 0, -1); + pfile->pcp_inside_if = 1; + + value = cpp_parse_expr(pfile); + pfile->pcp_inside_if = 0; + delete_macro(save_defined); /* clean up special symbol */ + + CPP_SET_WRITTEN(pfile, old_written); /* Pop */ + + return value; +} + +/* + * routine to handle ifdef/ifndef. Try to look up the symbol, + * then do or don't skip to the #endif/#else/#elif depending + * on what directive is actually being processed. + */ + +static int +do_xifdef(cpp_reader * pfile, struct directive *keyword, + unsigned char *unused1 __UNUSED__, unsigned char *unused2 __UNUSED__) +{ + int skip; + cpp_buffer *ip = CPP_BUFFER(pfile); + char *ident; + int ident_length; + enum cpp_token token; + int start_of_file = 0; + unsigned char *control_macro = 0; + int old_written = CPP_WRITTEN(pfile); + int c; + + /* Detect a #ifndef at start of file (not counting comments). */ + if (ip->fname != 0 && keyword->type == T_IFNDEF) + start_of_file = pfile->only_seen_white == 2; + + pfile->no_macro_expand++; + token = get_directive_token(pfile); + pfile->no_macro_expand--; + + ident = (char *)pfile->token_buffer + old_written; + ident_length = CPP_WRITTEN(pfile) - old_written; + CPP_SET_WRITTEN(pfile, old_written); /* Pop */ + + if (token == CPP_VSPACE || token == CPP_POP || token == CPP_EOF) + { + skip = (keyword->type == T_IFDEF); + cpp_pedwarn(pfile, "`#%s' with no argument", keyword->name); + } + else if (token == CPP_NAME) + { + HASHNODE *hp = cpp_lookup(ident, ident_length, -1); + + skip = (!hp) ^ (keyword->type == T_IFNDEF); + if (start_of_file && !skip) + { + control_macro = (unsigned char *)xmalloc(ident_length + 1); + memcpy(control_macro, ident, ident_length + 1); + } + } + else + { + skip = (keyword->type == T_IFDEF); + cpp_error(pfile, "`#%s' with invalid argument", keyword->name); + } + + cpp_skip_hspace(pfile); + c = PEEKC(); + if (c != EOF && c != '\n') + cpp_pedwarn(pfile, "garbage at end of `#%s' argument", + keyword->name); + skip_rest_of_line(pfile); + + conditional_skip(pfile, skip, T_IF, control_macro); + return 0; +} + +/* Push TYPE on stack; then, if SKIP is nonzero, skip ahead. + * If this is a #ifndef starting at the beginning of a file, + * CONTROL_MACRO is the macro name tested by the #ifndef. + * Otherwise, CONTROL_MACRO is 0. */ + +static void +conditional_skip(cpp_reader * pfile, int skip, enum node_type type, + unsigned char *control_macro) +{ + IF_STACK_FRAME *temp; + + temp = (IF_STACK_FRAME *) xcalloc(1, sizeof(IF_STACK_FRAME)); + temp->fname = CPP_BUFFER(pfile)->nominal_fname; + temp->next = pfile->if_stack; + temp->control_macro = control_macro; + pfile->if_stack = temp; + + pfile->if_stack->type = type; + + if (skip != 0) + { + skip_if_group(pfile, 0); + return; + } + else + { + ++pfile->if_stack->if_succeeded; + output_line_command(pfile, 1, same_file); + } +} + +/* + * skip to #endif, #else, or #elif. adjust line numbers, etc. + * leaves input ptr at the sharp sign found. + * If ANY is nonzero, return at next directive of any sort. + */ + +static void +skip_if_group(cpp_reader * pfile, int any) +{ + int c; + struct directive *kt; + IF_STACK_FRAME *save_if_stack = pfile->if_stack; /* don't pop past here */ + + int ident_length; + char *ident; + struct parse_marker line_start_mark; + + parse_set_mark(&line_start_mark, pfile); + + if (CPP_OPTIONS(pfile)->output_conditionals) + { + static char failed[] = "#failed\n"; + + CPP_PUTS(pfile, failed, sizeof(failed) - 1); + pfile->lineno++; + output_line_command(pfile, 1, same_file); + } + beg_of_line: + if (CPP_OPTIONS(pfile)->output_conditionals) + { + cpp_buffer *pbuf = CPP_BUFFER(pfile); + unsigned char *start_line = pbuf->buf + line_start_mark.position; + + CPP_PUTS(pfile, start_line, pbuf->cur - start_line); + } + parse_move_mark(&line_start_mark, pfile); + cpp_skip_hspace(pfile); + c = GETC(); + if (c == '#') + { + int old_written = CPP_WRITTEN(pfile); + + cpp_skip_hspace(pfile); + + parse_name(pfile, GETC()); + ident_length = CPP_WRITTEN(pfile) - old_written; + ident = (char *)pfile->token_buffer + old_written; + pfile->limit = (unsigned char *)ident; + + for (kt = directive_table; kt->length >= 0; kt++) + { + IF_STACK_FRAME *temp; + + if (ident_length == kt->length + && strncmp(ident, kt->name, kt->length) == 0) + { + /* If we are asked to return on next directive, do so now. */ + if (any) + goto done; + + switch (kt->type) + { + case T_IF: + case T_IFDEF: + case T_IFNDEF: + temp + = + (IF_STACK_FRAME *) xcalloc(1, sizeof(IF_STACK_FRAME)); + temp->next = pfile->if_stack; + pfile->if_stack = temp; + temp->fname = CPP_BUFFER(pfile)->nominal_fname; + temp->type = kt->type; + break; + case T_ELSE: + case T_ENDIF: + if (CPP_PEDANTIC(pfile) + && pfile->if_stack != save_if_stack) + validate_else(pfile, + kt->type == + T_ELSE ? "#else" : "#endif"); + case T_ELIF: + if (pfile->if_stack == CPP_BUFFER(pfile)->if_stack) + { + cpp_error(pfile, + "`#%s' not within a conditional", + kt->name); + break; + } + else if (pfile->if_stack == save_if_stack) + goto done; /* found what we came for */ + + if (kt->type != T_ENDIF) + { + if (pfile->if_stack->type == T_ELSE) + cpp_error(pfile, + "`#else' or `#elif' after `#else'"); + pfile->if_stack->type = kt->type; + break; + } + temp = pfile->if_stack; + pfile->if_stack = temp->next; + free(temp); + break; + default:; + } + break; + } + /* Don't let erroneous code go by. */ + if (kt->length < 0 && !CPP_OPTIONS(pfile)->lang_asm + && CPP_PEDANTIC(pfile)) + cpp_pedwarn(pfile, "invalid preprocessor directive name"); + } + c = GETC(); + } + /* We're in the middle of a line. Skip the rest of it. */ + for (;;) + { + switch (c) + { + long old; + + case EOF: + goto done; + case '/': /* possible comment */ + c = skip_comment(pfile, NULL); + if (c == EOF) + goto done; + break; + case '\"': + case '\'': + FORWARD(-1); + old = CPP_WRITTEN(pfile); + cpp_get_token(pfile); + CPP_SET_WRITTEN(pfile, old); + break; + case '\\': + /* Char after backslash loses its special meaning. */ + if (PEEKC() == '\n') + FORWARD(1); + break; + case '\n': + goto beg_of_line; + break; + } + c = GETC(); + } + done: + if (CPP_OPTIONS(pfile)->output_conditionals) + { + static char end_failed[] = "#endfailed\n"; + + CPP_PUTS(pfile, end_failed, sizeof(end_failed) - 1); + pfile->lineno++; + } + pfile->only_seen_white = 1; + parse_goto_mark(&line_start_mark, pfile); + parse_clear_mark(&line_start_mark); +} + +/* + * handle a #else directive. Do this by just continuing processing + * without changing if_stack ; this is so that the error message + * for missing #endif's etc. will point to the original #if. It + * is possible that something different would be better. + */ + +static int +do_else(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf __UNUSED__, unsigned char *limit __UNUSED__) +{ + cpp_buffer *ip = CPP_BUFFER(pfile); + + if (CPP_PEDANTIC(pfile)) + validate_else(pfile, "#else"); + skip_rest_of_line(pfile); + + if (pfile->if_stack == CPP_BUFFER(pfile)->if_stack) + { + cpp_error(pfile, "`#else' not within a conditional"); + return 0; + } + else + { + /* #ifndef can't have its special treatment for containing the whole file + * if it has a #else clause. */ + pfile->if_stack->control_macro = 0; + + if (pfile->if_stack->type != T_IF && pfile->if_stack->type != T_ELIF) + { + cpp_error(pfile, "`#else' after `#else'"); + fprintf(stderr, " (matches line %d", pfile->if_stack->lineno); + if (strcmp(pfile->if_stack->fname, ip->nominal_fname) != 0) + fprintf(stderr, ", file %s", pfile->if_stack->fname); + fprintf(stderr, ")\n"); + } + pfile->if_stack->type = T_ELSE; + } + + if (pfile->if_stack->if_succeeded) + skip_if_group(pfile, 0); + else + { + ++pfile->if_stack->if_succeeded; /* continue processing input */ + output_line_command(pfile, 1, same_file); + } + return 0; +} + +/* + * unstack after #endif command + */ + +static int +do_endif(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf __UNUSED__, unsigned char *limit __UNUSED__) +{ + if (CPP_PEDANTIC(pfile)) + validate_else(pfile, "#endif"); + skip_rest_of_line(pfile); + + if (pfile->if_stack == CPP_BUFFER(pfile)->if_stack) + { + cpp_error(pfile, "unbalanced `#endif'"); + } + else + { + IF_STACK_FRAME *temp = pfile->if_stack; + + pfile->if_stack = temp->next; + if (temp->control_macro) + { + /* This #endif matched a #ifndef at the start of the file. + * See if it is at the end of the file. */ + struct parse_marker start_mark; + int c; + + parse_set_mark(&start_mark, pfile); + + for (;;) + { + cpp_skip_hspace(pfile); + c = GETC(); + if (c != '\n') + break; + } + parse_goto_mark(&start_mark, pfile); + parse_clear_mark(&start_mark); + + if (c == EOF) + { + /* If we get here, this #endif ends a #ifndef + * that contains all of the file (aside from whitespace). + * Arrange not to include the file again + * if the macro that was tested is defined. + * + * Do not do this for the top-level file in a -include or any + * file in a -imacros. */ + { + file_name_list *ifile = pfile->all_include_files; + + for (; ifile; ifile = ifile->next) + { + if (!strcmp(ifile->fname, CPP_BUFFER(pfile)->fname)) + { + ifile->control_macro = temp->control_macro; + break; + } + } + } + } + } + free(temp); + output_line_command(pfile, 1, same_file); + } + return 0; +} + +/* When an #else or #endif is found while skipping failed conditional, + * if -pedantic was specified, this is called to warn about text after + * the command name. P points to the first char after the command name. */ + +static void +validate_else(cpp_reader * pfile, const char *directive) +{ + int c; + + cpp_skip_hspace(pfile); + c = PEEKC(); + if (c != EOF && c != '\n') + cpp_pedwarn(pfile, + "text following `%s' violates ANSI standard", directive); +} + +/* Get the next token, and add it to the text in pfile->token_buffer. + * Return the kind of token we got. */ + +enum cpp_token +cpp_get_token(cpp_reader * pfile) +{ + int c, c2, c3; + long old_written = 0; + long start_line = 0, start_column = 0; + enum cpp_token token; + struct cpp_options *opts = CPP_OPTIONS(pfile); + + CPP_BUFFER(pfile)->prev = CPP_BUFFER(pfile)->cur; + get_next: + c = GETC(); + if (c == EOF) + { + handle_eof: + if (CPP_BUFFER(pfile)->seen_eof) + { + if (cpp_pop_buffer(pfile) != CPP_NULL_BUFFER(pfile)) + goto get_next; + else + return CPP_EOF; + } + else + { + cpp_buffer *next_buf = CPP_PREV_BUFFER(CPP_BUFFER(pfile)); + + CPP_BUFFER(pfile)->seen_eof = 1; + if (CPP_BUFFER(pfile)->nominal_fname && next_buf) + { + /* We're about to return from an #include file. + * Emit #line information now (as part of the CPP_POP) result. + * But the #line refers to the file we will pop to. */ + cpp_buffer *cur_buffer = CPP_BUFFER(pfile); + + CPP_BUFFER(pfile) = next_buf; + pfile->input_stack_listing_current = 0; + output_line_command(pfile, 0, leave_file); + CPP_BUFFER(pfile) = cur_buffer; + } + return CPP_POP; + } + } + else + { + switch (c) + { + long newlines; + struct parse_marker start_mark; + + case '/': + if (PEEKC() == '=') + goto op2; + if (opts->put_out_comments) + parse_set_mark(&start_mark, pfile); + newlines = 0; + cpp_buf_line_and_col(cpp_file_buffer(pfile), + &start_line, &start_column); + c = skip_comment(pfile, &newlines); + if (opts->put_out_comments && (c == '/' || c == EOF)) + parse_clear_mark(&start_mark); + if (c == '/') + goto randomchar; + if (c == EOF) + { + cpp_error_with_line(pfile, start_line, start_column, + "unterminated comment"); + goto handle_eof; + } + c = '/'; /* Initial letter of comment. */ + return_comment: + /* Comments are equivalent to spaces. + * For -traditional, a comment is equivalent to nothing. */ + if (opts->put_out_comments) + { + cpp_buffer *pbuf = CPP_BUFFER(pfile); + unsigned char *start = pbuf->buf + start_mark.position; + int len = pbuf->cur - start; + + CPP_RESERVE(pfile, 1 + len); + CPP_PUTC_Q(pfile, c); + CPP_PUTS_Q(pfile, start, len); + pfile->lineno += newlines; + parse_clear_mark(&start_mark); + return CPP_COMMENT; + } + else if (newlines > 0) + { + output_line_command(pfile, 0, same_file); + CPP_RESERVE(pfile, 1); + CPP_PUTC_Q(pfile, ' '); + return CPP_VSPACE; + } + else + { + CPP_RESERVE(pfile, 1); + CPP_PUTC_Q(pfile, ' '); + return CPP_HSPACE; + } + + case '#': + if (!pfile->only_seen_white) + goto randomchar; + if (handle_directive(pfile)) + return CPP_DIRECTIVE; + pfile->only_seen_white = 0; + return CPP_OTHER; + + case '\"': + case '\'': + /* A single quoted string is treated like a double -- some + * programs (e.g., troff) are perverse this way */ + cpp_buf_line_and_col(cpp_file_buffer(pfile), + &start_line, &start_column); + old_written = CPP_WRITTEN(pfile); + string: + CPP_PUTC(pfile, c); + while (1) + { + int cc = GETC(); + + if (cc == EOF) + { + if (CPP_IS_MACRO_BUFFER(CPP_BUFFER(pfile))) + { + /* try harder: this string crosses a macro expansion + * boundary. This can happen naturally if -traditional. + * Otherwise, only -D can make a macro with an unmatched + * quote. */ + cpp_buffer *next_buf + = CPP_PREV_BUFFER(CPP_BUFFER(pfile)); + + (*CPP_BUFFER(pfile)->cleanup) + (CPP_BUFFER(pfile), pfile); + CPP_BUFFER(pfile) = next_buf; + continue; + } + cpp_error_with_line(pfile, start_line, start_column, + "unterminated string or character constant"); + if (pfile->multiline_string_line != start_line + && pfile->multiline_string_line != 0) + cpp_error_with_line(pfile, + pfile->multiline_string_line, + -1, + "possible real start of unterminated constant"); + pfile->multiline_string_line = 0; + break; + } + CPP_PUTC(pfile, cc); + switch (cc) + { + case '\n': + /* Traditionally, end of line ends a string constant with + * no error. So exit the loop and record the new line. */ + if (c == '\'') + { + cpp_error_with_line(pfile, start_line, start_column, + "unterminated character constant"); + goto while2end; + } + if (CPP_PEDANTIC(pfile) + && pfile->multiline_string_line == 0) + { + cpp_pedwarn_with_line(pfile, start_line, + start_column, + "string constant runs past end of line"); + } + if (pfile->multiline_string_line == 0) + pfile->multiline_string_line = start_line; + break; + + case '\\': + cc = GETC(); + if (cc == '\n') + { + /* Backslash newline is replaced by nothing at all. */ + CPP_ADJUST_WRITTEN(pfile, -1); + pfile->lineno++; + } + else + { + /* ANSI stupidly requires that in \\ the second \ + * is *not* prevented from combining with a newline. */ + NEWLINE_FIX1(cc); + if (cc != EOF) + CPP_PUTC(pfile, cc); + } + break; + + case '\"': + case '\'': + if (cc == c) + goto while2end; + break; + } + } + while2end: + pfile->lineno += count_newlines(pfile->token_buffer + old_written, + CPP_PWRITTEN(pfile)); + pfile->only_seen_white = 0; + return c == '\'' ? CPP_CHAR : CPP_STRING; + + case '$': + if (!opts->dollars_in_ident) + goto randomchar; + goto letter; + + case ':': + if (opts->cplusplus && PEEKC() == ':') + goto op2; + goto randomchar; + + case '&': + case '+': + case '|': + NEWLINE_FIX; + c2 = PEEKC(); + if (c2 == c || c2 == '=') + goto op2; + goto randomchar; + + case '*': + case '!': + case '%': + case '=': + case '^': + NEWLINE_FIX; + if (PEEKC() == '=') + goto op2; + goto randomchar; + + case '-': + NEWLINE_FIX; + c2 = PEEKC(); + if (c2 == '-' && opts->chill) + { + /* Chill style comment */ + if (opts->put_out_comments) + parse_set_mark(&start_mark, pfile); + FORWARD(1); /* Skip second '-'. */ + for (;;) + { + c = GETC(); + if (c == EOF) + break; + if (c == '\n') + { + /* Don't consider final '\n' to be part of comment. */ + FORWARD(-1); + break; + } + } + c = '-'; + goto return_comment; + } + if (c2 == '-' || c2 == '=' || c2 == '>') + goto op2; + goto randomchar; + + case '<': + if (pfile->parsing_include_directive) + { + for (;;) + { + CPP_PUTC(pfile, c); + if (c == '>') + break; + c = GETC(); + NEWLINE_FIX1(c); + if (c == '\n' || c == EOF) + { + cpp_error(pfile, + "missing '>' in `#include '"); + break; + } + } + return CPP_STRING; + } + /* else fall through */ + case '>': + NEWLINE_FIX; + c2 = PEEKC(); + if (c2 == '=') + goto op2; + if (c2 != c) + goto randomchar; + FORWARD(1); + CPP_RESERVE(pfile, 4); + CPP_PUTC(pfile, c); + CPP_PUTC(pfile, c2); + NEWLINE_FIX; + c3 = PEEKC(); + if (c3 == '=') + CPP_PUTC_Q(pfile, GETC()); + CPP_NUL_TERMINATE_Q(pfile); + pfile->only_seen_white = 0; + return CPP_OTHER; + + case '@': + if (CPP_BUFFER(pfile)->has_escapes) + { + c = GETC(); + // fix macro expansions starting with - losing the - + if (c == '-') + { + CPP_PUTS(pfile, "-", 1); + return CPP_OTHER; + } + // fix macro expansions starting with - losing the + + else if (c == '+') + { + CPP_PUTS(pfile, "+", 1); + return CPP_OTHER; + } + // fix macro expansions starting with - losing the . + else if (c == '.') + { + CPP_PUTS(pfile, ".", 1); + return CPP_OTHER; + } + else if (is_space[c]) + { + CPP_RESERVE(pfile, 1); + if (pfile->output_escapes) + CPP_PUTC_Q(pfile, '@'); + return CPP_HSPACE; + } + } + if (pfile->output_escapes) + { + CPP_PUTS(pfile, "@@", 2); + return CPP_OTHER; + } + goto randomchar; + + case '.': + NEWLINE_FIX; + c2 = PEEKC(); + if (isdigit(c2)) + { + CPP_RESERVE(pfile, 2); + CPP_PUTC_Q(pfile, '.'); + c = GETC(); + goto number; + } + /* FIXME - misses the case "..\\\n." */ + if (c2 == '.' && PEEKN(1) == '.') + { + CPP_RESERVE(pfile, 4); + CPP_PUTC_Q(pfile, '.'); + CPP_PUTC_Q(pfile, '.'); + CPP_PUTC_Q(pfile, '.'); + FORWARD(2); + CPP_NUL_TERMINATE_Q(pfile); + pfile->only_seen_white = 0; + return CPP_3DOTS; + } + goto randomchar; + + op2: + token = CPP_OTHER; + pfile->only_seen_white = 0; + op2any: + CPP_RESERVE(pfile, 3); + CPP_PUTC_Q(pfile, c); + CPP_PUTC_Q(pfile, GETC()); + CPP_NUL_TERMINATE_Q(pfile); + return token; + + case 'L': + NEWLINE_FIX; + c2 = PEEKC(); + if ((c2 == '\'' || c2 == '\"')) + { + CPP_PUTC(pfile, c); + c = GETC(); + goto string; + } + goto letter; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + number: + c2 = '.'; + for (;;) + { + CPP_RESERVE(pfile, 2); + CPP_PUTC_Q(pfile, c); + NEWLINE_FIX; + c = PEEKC(); + if (c == EOF) + break; + if (!is_idchar[c] && c != '.' + && ((c2 != 'e' && c2 != 'E') || (c != '+' && c != '-'))) + break; + FORWARD(1); + c2 = c; + } + CPP_NUL_TERMINATE_Q(pfile); + pfile->only_seen_white = 0; + return CPP_NUMBER; + case 'b': + case 'c': + case 'd': + case 'h': + case 'o': + case 'B': + case 'C': + case 'D': + case 'H': + case 'O': + if (opts->chill && PEEKC() == '\'') + { + pfile->only_seen_white = 0; + CPP_RESERVE(pfile, 2); + CPP_PUTC_Q(pfile, c); + CPP_PUTC_Q(pfile, '\''); + FORWARD(1); + for (;;) + { + c = GETC(); + if (c == EOF) + goto chill_number_eof; + if (!is_idchar[c]) + { + if (c == '\\' && PEEKC() == '\n') + { + FORWARD(2); + continue; + } + break; + } + CPP_PUTC(pfile, c); + } + if (c == '\'') + { + CPP_RESERVE(pfile, 2); + CPP_PUTC_Q(pfile, c); + CPP_NUL_TERMINATE_Q(pfile); + return CPP_STRING; + } + else + { + FORWARD(-1); + chill_number_eof: + CPP_NUL_TERMINATE(pfile); + return CPP_NUMBER; + } + } + else + goto letter; + case '_': + case 'a': + case 'e': + case 'f': + case 'g': + case 'i': + case 'j': + case 'k': + case 'l': + case 'm': + case 'n': + case 'p': + case 'q': + case 'r': + case 's': + case 't': + case 'u': + case 'v': + case 'w': + case 'x': + case 'y': + case 'z': + case 'A': + case 'E': + case 'F': + case 'G': + case 'I': + case 'J': + case 'K': + case 'M': + case 'N': + case 'P': + case 'Q': + case 'R': + case 'S': + case 'T': + case 'U': + case 'V': + case 'W': + case 'X': + case 'Y': + case 'Z': + letter: + { + HASHNODE *hp; + char *ident; + int before_name_written = CPP_WRITTEN(pfile); + int ident_len; + + parse_name(pfile, c); + pfile->only_seen_white = 0; + if (pfile->no_macro_expand) + return CPP_NAME; + ident = (char *)pfile->token_buffer + before_name_written; + ident_len = CPP_PWRITTEN(pfile) - (unsigned char *)ident; + hp = cpp_lookup(ident, ident_len, -1); + if (!hp) + return CPP_NAME; + if (hp->type == T_DISABLED) + { + if (pfile->output_escapes) + { /* Return "@-IDENT", followed by '\0'. */ + int i; + + CPP_RESERVE(pfile, 3); + ident = + (char *)pfile->token_buffer + before_name_written; + CPP_ADJUST_WRITTEN(pfile, 2); + for (i = ident_len; i >= 0; i--) + ident[i + 2] = ident[i]; + ident[0] = '@'; + ident[1] = '-'; + } + return CPP_NAME; + } + /* If macro wants an arglist, verify that a '(' follows. + * first skip all whitespace, copying it to the output + * after the macro name. Then, if there is no '(', + * decide this is not a macro call and leave things that way. */ + if (hp->type == T_MACRO && hp->value.defn->nargs >= 0) + { + struct parse_marker macro_mark; + int is_macro_call; + + while (CPP_IS_MACRO_BUFFER(CPP_BUFFER(pfile))) + { + cpp_buffer *next_buf; + + cpp_skip_hspace(pfile); + if (PEEKC() != EOF) + break; + next_buf = CPP_PREV_BUFFER(CPP_BUFFER(pfile)); + (*CPP_BUFFER(pfile)->cleanup) (CPP_BUFFER(pfile), + pfile); + CPP_BUFFER(pfile) = next_buf; + } + parse_set_mark(¯o_mark, pfile); + for (;;) + { + cpp_skip_hspace(pfile); + c = PEEKC(); + is_macro_call = c == '('; + if (c != '\n') + break; + FORWARD(1); + } + if (!is_macro_call) + parse_goto_mark(¯o_mark, pfile); + parse_clear_mark(¯o_mark); + if (!is_macro_call) + return CPP_NAME; + } + /* This is now known to be a macro call. */ + + /* it might not actually be a macro. */ + if (hp->type != T_MACRO) + { + int xbuf_len; + unsigned char *xbuf; + + CPP_SET_WRITTEN(pfile, before_name_written); + special_symbol(hp, pfile); + xbuf_len = CPP_WRITTEN(pfile) - before_name_written; + xbuf = (unsigned char *)xmalloc(xbuf_len + 1); + CPP_SET_WRITTEN(pfile, before_name_written); + memcpy(xbuf, CPP_PWRITTEN(pfile), xbuf_len + 1); + push_macro_expansion(pfile, xbuf, xbuf_len, hp); + } + else + { + /* Expand the macro, reading arguments as needed, + * and push the expansion on the input stack. */ + macroexpand(pfile, hp); + CPP_SET_WRITTEN(pfile, before_name_written); + } + + /* An extra "@ " is added to the end of a macro expansion + * to prevent accidental token pasting. We prefer to avoid + * unneeded extra spaces (for the sake of cpp-using tools like + * imake). Here we remove the space if it is safe to do so. */ + if (pfile->buffer->rlimit - pfile->buffer->cur >= 3 + && pfile->buffer->rlimit[-2] == '@' + && pfile->buffer->rlimit[-1] == ' ') + { + int c1 = pfile->buffer->rlimit[-3]; + + c2 = CPP_BUF_PEEK(CPP_PREV_BUFFER(CPP_BUFFER(pfile))); + + if (c2 == EOF || !unsafe_chars(c1, c2)) + pfile->buffer->rlimit -= 2; + } + } + goto get_next; + + case ' ': + case '\t': + case '\v': + case '\r': + for (;;) + { + CPP_PUTC(pfile, c); + c = PEEKC(); + if (c == EOF || !is_hor_space[c]) + break; + FORWARD(1); + } + return CPP_HSPACE; + + case '\\': + c2 = PEEKC(); + if (c2 != '\n') + goto randomchar; + token = CPP_HSPACE; + goto op2any; + + case '\n': + CPP_PUTC(pfile, c); + if (pfile->only_seen_white == 0) + pfile->only_seen_white = 1; + pfile->lineno++; + output_line_command(pfile, 1, same_file); + return CPP_VSPACE; + + case '(': + token = CPP_LPAREN; + goto char1; + case ')': + token = CPP_RPAREN; + goto char1; + case '{': + token = CPP_LBRACE; + goto char1; + case '}': + token = CPP_RBRACE; + goto char1; + case ',': + token = CPP_COMMA; + goto char1; + case ';': + token = CPP_SEMICOLON; + goto char1; + + randomchar: + default: + token = CPP_OTHER; + char1: + pfile->only_seen_white = 0; + CPP_PUTC(pfile, c); + return token; + } + } +} + +#if 0 /* Unused */ +/* Like cpp_get_token, but skip spaces and comments. */ +enum cpp_token +cpp_get_non_space_token(cpp_reader * pfile) +{ + int old_written = CPP_WRITTEN(pfile); + + for (;;) + { + enum cpp_token token = cpp_get_token(pfile); + + if (token != CPP_COMMENT && token != CPP_POP + && token != CPP_HSPACE && token != CPP_VSPACE) + return token; + CPP_SET_WRITTEN(pfile, old_written); + } +} +#endif + +/* Parse an identifier starting with C. */ + +int +parse_name(cpp_reader * pfile, int c) +{ + for (;;) + { + if (!is_idchar[c]) + { + if (c == '\\' && PEEKC() == '\n') + { + FORWARD(2); + continue; + } + FORWARD(-1); + break; + } + CPP_RESERVE(pfile, 2); /* One more for final NUL. */ + CPP_PUTC_Q(pfile, c); + c = GETC(); + if (c == EOF) + break; + } + CPP_NUL_TERMINATE_Q(pfile); + return 1; +} + +/* Maintain and search list of included files, for #import. */ + +/* Hash a file name for import_hash_table. */ + +static int +import_hash(char *f) +{ + int val = 0; + + while (*f) + val += *f++; + return (val % IMPORT_HASH_SIZE); +} + +/* Search for file FILENAME in import_hash_table. + * Return -2 if found, either a matching name or a matching inode. + * Otherwise, open the file and return a file descriptor if successful + * or -1 if unsuccessful. */ + +static int +lookup_import(cpp_reader * pfile, char *filename, file_name_list * searchptr) +{ + struct import_file *i; + int h; + int hashval; + struct stat sb; + int fd; + + hashval = import_hash(filename); + + /* Attempt to find file in list of already included files */ + i = pfile->import_hash_table[hashval]; + + while (i) + { + if (!strcmp(filename, i->name)) + return -2; /* return found */ + i = i->next; + } + /* Open it and try a match on inode/dev */ + fd = open_include_file(pfile, filename, searchptr); + if (fd < 0) + return fd; + fstat(fd, &sb); + for (h = 0; h < IMPORT_HASH_SIZE; h++) + { + i = pfile->import_hash_table[h]; + while (i) + { + /* Compare the inode and the device. + * Supposedly on some systems the inode is not a scalar. */ + if (!memcmp + ((char *)&i->inode, (char *)&sb.st_ino, sizeof(sb.st_ino)) + && i->dev == sb.st_dev) + { + close(fd); + return -2; /* return found */ + } + i = i->next; + } + } + return fd; /* Not found, return open file */ +} + +/* Add the file FNAME, open on descriptor FD, to import_hash_table. */ + +static void +add_import(cpp_reader * pfile, int fd, char *fname) +{ + struct import_file *i; + int hashval; + struct stat sb; + + hashval = import_hash(fname); + fstat(fd, &sb); + i = (struct import_file *)xmalloc(sizeof(struct import_file)); + + i->name = (char *)xmalloc(strlen(fname) + 1); + strcpy(i->name, fname); + memcpy((char *)&i->inode, (char *)&sb.st_ino, sizeof(sb.st_ino)); + i->dev = sb.st_dev; + i->next = pfile->import_hash_table[hashval]; + pfile->import_hash_table[hashval] = i; +} + +/* The file_name_map structure holds a mapping of file names for a + * particular directory. This mapping is read from the file named + * FILE_NAME_MAP_FILE in that directory. Such a file can be used to + * map filenames on a file system with severe filename restrictions, + * such as DOS. The format of the file name map file is just a series + * of lines with two tokens on each line. The first token is the name + * to map, and the second token is the actual name to use. */ + +struct file_name_map { + struct file_name_map *map_next; + char *map_from; + char *map_to; +}; + +#if USE_FILE_NAME_MAPS + +#define FILE_NAME_MAP_FILE "header.gcc" + +/* Read a space delimited string of unlimited length from a stdio + * file. */ + +static char * +read_filename_string(int ch, FILE * f) +{ + char *alloc, *set; + int len; + + len = 20; + set = alloc = (char *)xmalloc(len + 1); + if (!is_space[ch]) + { + *set++ = ch; + while ((ch = getc(f)) != EOF && !is_space[ch]) + { + if (set - alloc == len) + { + len *= 2; + alloc = (char *)xrealloc(alloc, len + 1); + set = alloc + len / 2; + } + *set++ = ch; + } + } + *set = '\0'; + ungetc(ch, f); + return alloc; +} + +/* This structure holds a linked list of file name maps, one per directory. */ +struct file_name_map_list { + struct file_name_map_list *map_list_next; + char *map_list_name; + struct file_name_map *map_list_map; +}; + +/* Read the file name map file for DIRNAME. */ + +static struct file_name_map * +read_name_map(cpp_reader * pfile, const char *dirname) +{ + struct file_name_map_list *map_list_ptr; + char *name; + FILE *f; + + for (map_list_ptr = CPP_OPTIONS(pfile)->map_list; map_list_ptr; + map_list_ptr = map_list_ptr->map_list_next) + if (!strcmp(map_list_ptr->map_list_name, dirname)) + return map_list_ptr->map_list_map; + + map_list_ptr = + ((struct file_name_map_list *)xmalloc(sizeof(struct file_name_map_list))); + + map_list_ptr->map_list_name = savestring(dirname); + map_list_ptr->map_list_map = NULL; + + name = (char *)alloca(strlen(dirname) + strlen(FILE_NAME_MAP_FILE) + 2); + strcpy(name, dirname); + if (*dirname) + strcat(name, "/"); + strcat(name, FILE_NAME_MAP_FILE); +#ifndef __EMX__ + f = fopen(name, "rb"); +#else + f = fopen(name, "rtb"); +#endif + if (!f) + map_list_ptr->map_list_map = NULL; + else + { + int ch; + int dirlen = strlen(dirname); + + while ((ch = getc(f)) != EOF) + { + char *from, *to; + struct file_name_map *ptr; + + if (is_space[ch]) + continue; + from = read_filename_string(ch, f); + while ((ch = getc(f)) != EOF && is_hor_space[ch]); + to = read_filename_string(ch, f); + + ptr = + ((struct file_name_map *)xmalloc(sizeof(struct file_name_map))); + + ptr->map_from = from; + + /* Make the real filename absolute. */ + if (*to == '/') + ptr->map_to = to; + else + { + ptr->map_to = (char *)xmalloc(dirlen + strlen(to) + 2); + strcpy(ptr->map_to, dirname); + ptr->map_to[dirlen] = '/'; + strcpy(ptr->map_to + dirlen + 1, to); + free(to); + } + + ptr->map_next = map_list_ptr->map_list_map; + map_list_ptr->map_list_map = ptr; + + while ((ch = getc(f)) != '\n') + if (ch == EOF) + break; + } + fclose(f); + } + + map_list_ptr->map_list_next = CPP_OPTIONS(pfile)->map_list; + CPP_OPTIONS(pfile)->map_list = map_list_ptr; + + return map_list_ptr->map_list_map; +} + +/* Try to open include file FILENAME. SEARCHPTR is the directory + * being tried from the include file search path. This function maps + * filenames on file systems based on information read by + * read_name_map. */ + +static int +open_include_file(cpp_reader * pfile, char *filename, + file_name_list * searchptr) +{ + struct file_name_map *map; + const char *from; + const char *p, *dir; + + if (searchptr && !searchptr->got_name_map) + { + searchptr->name_map = read_name_map(pfile, + searchptr->fname + ? searchptr->fname : "."); + searchptr->got_name_map = 1; + } + /* First check the mapping for the directory we are using. */ + if (searchptr && searchptr->name_map) + { + from = filename; + if (searchptr->fname) + from += strlen(searchptr->fname) + 1; + for (map = searchptr->name_map; map; map = map->map_next) + { + if (!strcmp(map->map_from, from)) + { + /* Found a match. */ + return open(map->map_to, O_RDONLY | O_BINARY, 0666); + } + } + } + /* Try to find a mapping file for the particular directory we are + * looking in. Thus #include will look up sys/types.h + * in /usr/include/header.gcc and look up types.h in + * /usr/include/sys/header.gcc. */ + p = strrchr(filename, '/'); + if (!p) + p = filename; + if (searchptr + && searchptr->fname + && strlen(searchptr->fname) == (unsigned)(p - filename) + && !strncmp(searchptr->fname, filename, p - filename)) + { + /* FILENAME is in SEARCHPTR, which we've already checked. */ + using_file(filename); + return open(filename, O_RDONLY | O_BINARY, 0666); + } + if (p == filename) + { + dir = "."; + from = filename; + } + else + { + char *s; + + s = (char *)alloca(p - filename + 1); + memcpy(s, filename, p - filename); + s[p - filename] = '\0'; + from = p + 1; + dir = s; + } + for (map = read_name_map(pfile, dir); map; map = map->map_next) + if (!strcmp(map->map_from, from)) + { + using_file(map->map_to); + return open(map->map_to, O_RDONLY | O_BINARY, 0666); + } + + using_file(filename); + return open(filename, O_RDONLY | O_BINARY, 0666); +} + +#else + +static int +open_include_file(cpp_reader * pfile __UNUSED__, char *filename, + file_name_list * searchptr __UNUSED__) +{ + using_file(filename); + return open(filename, O_RDONLY | O_BINARY, 0666); +} + +#endif /* USE_FILE_NAME_MAPS */ + +static int +dos2unix(cpp_buffer *fp, int length) +{ + unsigned char *tbuf; + int nlen = 0, i; + + tbuf = xmalloc(length + 4); + if (!tbuf) return length; + for (i = 0; i < length; i++) + { + if ((fp->buf[i] == '\r') && + (fp->buf[i + 1] == '\n')) + { + // skip \r in \r\n + continue; + } + tbuf[nlen] = fp->buf[i]; + nlen++; + } + tbuf[nlen] = 0; + + free(fp->buf); + fp->buf = tbuf; + return nlen; +} + +/* Process the contents of include file FNAME, already open on descriptor F, + * with output to OP. + * SYSTEM_HEADER_P is 1 if this file resides in any one of the known + * "system" include directories (as decided by the `is_system_include' + * function above). + * DIRPTR is the link in the dir path through which this file was found, + * or 0 if the file name was absolute or via the current directory. + * Return 1 on success, 0 on failure. + * + * The caller is responsible for the cpp_push_buffer. */ + +static int +finclude(cpp_reader * pfile, int f, const char *fname, int system_header_p, + file_name_list * dirptr) +{ + int st_mode; + long st_size; + long i; + int length; + cpp_buffer *fp; /* For input stack frame */ + + if (file_size_and_mode(f, &st_mode, &st_size) < 0) + { + cpp_perror_with_name(pfile, fname); + close(f); + cpp_pop_buffer(pfile); + return 0; + } + fp = CPP_BUFFER(pfile); + fp->nominal_fname = fp->fname = fname; + fp->dir = dirptr; + fp->system_header_p = system_header_p; + fp->lineno = 1; + fp->colno = 1; + fp->cleanup = file_cleanup; + + if (S_ISREG(st_mode)) + { + fp->buf = (unsigned char *)xmalloc(st_size + 2); + /* Read the file contents, knowing that st_size is an upper bound + * on the number of bytes we can read. */ + length = safe_read(f, (char *)fp->buf, st_size); + length = dos2unix(fp, length); + + fp->alimit = fp->buf + st_size + 2; + fp->cur = fp->buf; + fp->rlimit = fp->buf + length; + if (length < 0) + goto nope; + } + else if (S_ISDIR(st_mode)) + { + cpp_error(pfile, "directory `%s' specified in #include", fname); + close(f); + return 0; + } + else + { + /* Cannot count its file size before reading. + * First read the entire file into heap and + * copy them into buffer on stack. */ + + int bsize = 2000; + + st_size = 0; + fp->buf = (unsigned char *)xmalloc(bsize + 2); + + for (;;) + { + i = safe_read(f, (char *)(fp->buf + st_size), bsize - st_size); + if (i < 0) + goto nope; /* error! */ + st_size += i; + if (st_size != bsize) + break; /* End of file */ + bsize *= 2; + fp->buf = (unsigned char *)xrealloc(fp->buf, bsize + 2); + } + length = st_size; + length = dos2unix(fp, length); + } + + if ((length > 0 && fp->buf[length - 1] != '\n') + /* Backslash-newline at end is not good enough. */ + || (length > 1 && fp->buf[length - 2] == '\\')) + { + fp->buf[length++] = '\n'; + } + fp->buf[length] = '\0'; + + fp->rlimit = fp->buf + length; + + /* Close descriptor now, so nesting does not use lots of descriptors. */ + close(f); + + /* Must do this before calling trigraph_pcp, so that the correct file name + * will be printed in warning messages. */ + + pfile->input_stack_listing_current = 0; + + return 1; + + nope: + + cpp_perror_with_name(pfile, fname); + close(f); + free(fp->buf); + return 1; +} + +int +push_parse_file(cpp_reader * pfile, const char *fname) +{ + struct cpp_options *opts = CPP_OPTIONS(pfile); + struct cpp_pending *pend; + char *p; + int f; + cpp_buffer *fp; + + /* The code looks at the defaults through this pointer, rather than through + * the constant structure above. This pointer gets changed if an environment + * variable specifies other defaults. */ + struct default_include *include_defaults = include_defaults_array; + + /* Add dirs from CPATH after dirs from -I. */ + /* There seems to be confusion about what CPATH should do, + * so for the moment it is not documented. */ + /* Some people say that CPATH should replace the standard include dirs, + * but that seems pointless: it comes before them, so it overrides them + * anyway. */ + p = (char *)getenv("CPATH"); + if (p && !opts->no_standard_includes) + path_include(pfile, p); + + /* Now that dollars_in_ident is known, initialize is_idchar. */ + initialize_char_syntax(opts); + + /* Do partial setup of input buffer for the sake of generating + * early #line directives (when -g is in effect). */ + fp = cpp_push_buffer(pfile, NULL, 0); + if (!opts->in_fname) + opts->in_fname = ""; + fp->nominal_fname = fp->fname = opts->in_fname; + fp->lineno = 0; + + /* Install __LINE__, etc. Must follow initialize_char_syntax + * and option processing. */ + initialize_builtins(pfile); + + /* Do standard #defines and assertions + * that identify system and machine type. */ + + if (!opts->inhibit_predefs) + { + p = (char *)alloca(strlen(predefs) + 1); + + strcpy(p, predefs); + while (*p) + { + char *q; + + while (*p == ' ' || *p == '\t') + p++; + /* Handle -D options. */ + if (p[0] == '-' && p[1] == 'D') + { + q = &p[2]; + while (*p && *p != ' ' && *p != '\t') + p++; + if (*p != 0) + *p++ = 0; + if (opts->debug_output) + output_line_command(pfile, 0, same_file); + cpp_define(pfile, (unsigned char *)q); + while (*p == ' ' || *p == '\t') + p++; + } + else if (p[0] == '-' && p[1] == 'A') + { + /* Handle -A options (assertions). */ + char *assertion; + char *past_name; + char *value; + char *past_value; + char *termination; + int save_char; + + assertion = &p[2]; + past_name = assertion; + /* Locate end of name. */ + while (*past_name && *past_name != ' ' + && *past_name != '\t' && *past_name != '(') + past_name++; + /* Locate `(' at start of value. */ + value = past_name; + while (*value && (*value == ' ' || *value == '\t')) + value++; + if (*value++ != '(') + abort(); + while (*value && (*value == ' ' || *value == '\t')) + value++; + past_value = value; + /* Locate end of value. */ + while (*past_value && *past_value != ' ' + && *past_value != '\t' && *past_value != ')') + past_value++; + termination = past_value; + while (*termination + && (*termination == ' ' || *termination == '\t')) + termination++; + if (*termination++ != ')') + abort(); + if (*termination && *termination != ' ' + && *termination != '\t') + abort(); + /* Temporarily null-terminate the value. */ + save_char = *termination; + *termination = '\0'; + /* Install the assertion. */ + make_assertion(pfile, "-A", assertion); + *termination = (char)save_char; + p = termination; + while (*p == ' ' || *p == '\t') + p++; + } + else + { + abort(); + } + } + } + /* Now handle the command line options. */ + + /* Do -U's, -D's and -A's in the order they were seen. */ + /* First reverse the list. */ + opts->pending = nreverse_pending(opts->pending); + + for (pend = opts->pending; pend; pend = pend->next) + { + if (pend->cmd && pend->cmd[0] == '-') + { + switch (pend->cmd[1]) + { + case 'U': + if (opts->debug_output) + output_line_command(pfile, 0, same_file); + do_undef(pfile, NULL, (unsigned char *)pend->arg, + (unsigned char *)pend->arg + strlen(pend->arg)); + break; + case 'D': + if (opts->debug_output) + output_line_command(pfile, 0, same_file); + cpp_define(pfile, (unsigned char *)pend->arg); + break; + case 'A': + make_assertion(pfile, "-A", pend->arg); + break; + } + } + } + + opts->done_initializing = 1; + + { /* read the appropriate environment variable and if it exists + * replace include_defaults with the listed path. */ + char *epath = 0; + + switch ((opts->objc << 1) + opts->cplusplus) + { + case 0: + epath = getenv("C_INCLUDE_PATH"); + break; + case 1: + epath = getenv("CPLUS_INCLUDE_PATH"); + break; + case 2: + epath = getenv("OBJC_INCLUDE_PATH"); + break; + case 3: + epath = getenv("OBJCPLUS_INCLUDE_PATH"); + break; + } + /* If the environment var for this language is set, + * add to the default list of include directories. */ + if (epath) + { + char *nstore = (char *)alloca(strlen(epath) + 2); + int num_dirs; + char *startp, *endp; + + for (num_dirs = 1, startp = epath; *startp; startp++) + if (*startp == PATH_SEPARATOR) + num_dirs++; + include_defaults + = (struct default_include *)xmalloc((num_dirs + * + sizeof(struct + default_include)) + + sizeof + (include_defaults_array)); + + startp = endp = epath; + num_dirs = 0; + while (1) + { + /* Handle cases like c:/usr/lib:d:/gcc/lib */ + if ((*endp == PATH_SEPARATOR) || *endp == 0) + { + strncpy(nstore, startp, endp - startp); + if (endp == startp) + strcpy(nstore, "."); + else + nstore[endp - startp] = '\0'; + + include_defaults[num_dirs].fname = savestring(nstore); + include_defaults[num_dirs].cplusplus = opts->cplusplus; + include_defaults[num_dirs].cxx_aware = 1; + num_dirs++; + if (*endp == '\0') + break; + endp = startp = endp + 1; + } + else + endp++; + } + /* Put the usual defaults back in at the end. */ + memcpy((char *)&include_defaults[num_dirs], + (char *)include_defaults_array, + sizeof(include_defaults_array)); + } + } + + append_include_chain(pfile, opts->before_system, opts->last_before_system); + opts->first_system_include = opts->before_system; + + /* Unless -fnostdinc, + * tack on the standard include file dirs to the specified list */ + if (!opts->no_standard_includes) + { + struct default_include *di = include_defaults; + char *specd_prefix = opts->include_prefix; + char *default_prefix = savestring(GCC_INCLUDE_DIR); + int default_len = 0; + + /* Remove the `include' from /usr/local/lib/gcc.../include. */ + if (!strcmp(default_prefix + strlen(default_prefix) - 8, "/include")) + { + default_len = strlen(default_prefix) - 7; + default_prefix[default_len] = 0; + } + /* Search "translated" versions of GNU directories. + * These have /usr/local/lib/gcc... replaced by specd_prefix. */ + if (specd_prefix && default_len != 0) + for (di = include_defaults; di->fname; di++) + { + /* Some standard dirs are only for C++. */ + if (!di->cplusplus + || (opts->cplusplus + && !opts->no_standard_cplusplus_includes)) + { + /* Does this dir start with the prefix? */ + if (!strncmp(di->fname, default_prefix, default_len)) + { + /* Yes; change prefix and add to search list. */ + file_name_list *new_ + = + (file_name_list *) xmalloc(sizeof(file_name_list)); + int this_len = + strlen(specd_prefix) + strlen(di->fname) - + default_len; + char *str = + (char *)xmalloc(this_len + 1); + + strcpy(str, specd_prefix); + strcat(str, di->fname + default_len); + new_->fname = str; + new_->control_macro = 0; + new_->c_system_include_path = !di->cxx_aware; + new_->got_name_map = 0; + append_include_chain(pfile, new_, new_); + if (!opts->first_system_include) + opts->first_system_include = new_; + } + } + } + /* Search ordinary names for GNU include directories. */ + for (di = include_defaults; di->fname; di++) + { + /* Some standard dirs are only for C++. */ + if (!di->cplusplus + || (opts->cplusplus && !opts->no_standard_cplusplus_includes)) + { + file_name_list *new_ + = (file_name_list *) xmalloc(sizeof(file_name_list)); + + new_->control_macro = 0; + new_->c_system_include_path = !di->cxx_aware; + new_->fname = (char *)di->fname; + new_->got_name_map = 0; + append_include_chain(pfile, new_, new_); + if (!opts->first_system_include) + opts->first_system_include = new_; + } + } + } + /* Tack the after_include chain at the end of the include chain. */ + append_include_chain(pfile, opts->after_include, opts->last_after_include); + if (!opts->first_system_include) + opts->first_system_include = opts->after_include; + + /* With -v, print the list of dirs to search. */ + if (opts->verbose) + { + file_name_list *fl; + + fprintf(stderr, "#include \"...\" search starts here:\n"); + for (fl = opts->include; fl; fl = fl->next) + { + if (fl == opts->first_bracket_include) + fprintf(stderr, "#include <...> search starts here:\n"); + fprintf(stderr, " %s\n", fl->fname); + } + fprintf(stderr, "End of search list.\n"); + } + /* Scan the -imacros files before the main input. + * Much like #including them, but with no_output set + * so that only their macro definitions matter. */ + + opts->no_output++; + pfile->no_record_file++; + for (pend = opts->pending; pend; pend = pend->next) + { + if (pend->cmd && strcmp(pend->cmd, "-imacros") == 0) + { + int fd = open(pend->arg, O_RDONLY | O_BINARY, 0666); + + if (fd < 0) + { + cpp_perror_with_name(pfile, pend->arg); + return FATAL_EXIT_CODE; + } + cpp_push_buffer(pfile, NULL, 0); + finclude(pfile, fd, pend->arg, 0, NULL); + cpp_scan_buffer(pfile); + } + } + opts->no_output--; + pfile->no_record_file--; + + /* Copy the entire contents of the main input file into + * the stacked input buffer previously allocated for it. */ + if (!fname || *fname == 0) + { + fname = ""; + f = 0; + } + else if ((f = open(fname, O_RDONLY | O_BINARY, 0666)) < 0) + cpp_pfatal_with_name(pfile, fname); + + /* -MG doesn't select the form of output and must be specified with one of + * -M or -MM. -MG doesn't make sense with -MD or -MMD since they don't + * inhibit compilation. */ + if (opts->print_deps_missing_files + && (opts->print_deps == 0 || !opts->no_output)) + cpp_fatal("-MG must be specified with one of -M or -MM"); + + /* Either of two environment variables can specify output of deps. + * Its value is either "OUTPUT_FILE" or "OUTPUT_FILE DEPS_TARGET", + * where OUTPUT_FILE is the file to write deps info to + * and DEPS_TARGET is the target to mention in the deps. */ + + if (opts->print_deps == 0 + && (getenv("SUNPRO_DEPENDENCIES") != 0 + || getenv("DEPENDENCIES_OUTPUT") != 0)) + { + char *spec = getenv("DEPENDENCIES_OUTPUT"); + char *s; + char *output_file; + + if (!spec) + { + spec = getenv("SUNPRO_DEPENDENCIES"); + opts->print_deps = 2; + } + else + opts->print_deps = 1; + + s = spec; + /* Find the space before the DEPS_TARGET, if there is one. */ + /* This should use index. (mrs) */ + while (*s != 0 && *s != ' ') + s++; + if (*s != 0) + { + opts->deps_target = s + 1; + output_file = (char *)xmalloc(s - spec + 1); + memcpy(output_file, spec, s - spec); + output_file[s - spec] = 0; + } + else + { + opts->deps_target = 0; + output_file = spec; + } + + opts->deps_file = output_file; + opts->print_deps_append = 1; + } + /* For -M, print the expected object file name + * as the target of this Make-rule. */ + if (opts->print_deps) + { + pfile->deps_allocated_size = 200; + pfile->deps_buffer = (char *)xmalloc(pfile->deps_allocated_size); + pfile->deps_buffer[0] = 0; + pfile->deps_size = 0; + pfile->deps_column = 0; + + if (opts->deps_target) + deps_output(pfile, opts->deps_target, ':'); + else if (*opts->in_fname == 0) + deps_output(pfile, "-", ':'); + else + { + char *q; + int len; + + /* Discard all directory prefixes from filename. */ + if ((q = (char *)strrchr(opts->in_fname, '/')) +#ifdef DIR_SEPARATOR + && (q = strrchr(opts->in_fname, DIR_SEPARATOR)) +#endif + ) + ++q; + else + q = (char *)opts->in_fname; + + /* Copy remainder to mungable area. */ + p = (char *)alloca(strlen(q) + 8); + strcpy(p, q); + + /* Output P, but remove known suffixes. */ + len = strlen(p); + q = p + len; + if (len >= 2 && p[len - 2] == '.' && strchr("cCsSm", p[len - 1])) + q = p + (len - 2); + else if (len >= 3 + && p[len - 3] == '.' + && p[len - 2] == 'c' && p[len - 1] == 'c') + q = p + (len - 3); + else if (len >= 4 + && p[len - 4] == '.' + && p[len - 3] == 'c' + && p[len - 2] == 'x' && p[len - 1] == 'x') + q = p + (len - 4); + else if (len >= 4 + && p[len - 4] == '.' + && p[len - 3] == 'c' + && p[len - 2] == 'p' && p[len - 1] == 'p') + q = p + (len - 4); + + /* Supply our own suffix. */ + strcpy(q, ".o"); + + deps_output(pfile, p, ':'); + deps_output(pfile, opts->in_fname, ' '); + } + } + + /* Scan the -include files before the main input. + * We push these in reverse order, so that the first one is handled first. */ + + pfile->no_record_file++; + opts->pending = nreverse_pending(opts->pending); + for (pend = opts->pending; pend; pend = pend->next) + { + if (pend->cmd && strcmp(pend->cmd, "-include") == 0) + { + int fd = open(pend->arg, O_RDONLY | O_BINARY, 0666); + + if (fd < 0) + { + cpp_perror_with_name(pfile, pend->arg); + return FATAL_EXIT_CODE; + } + cpp_push_buffer(pfile, NULL, 0); + finclude(pfile, fd, pend->arg, 0, NULL); + } + } + pfile->no_record_file--; + + /* Free the pending list. */ + for (pend = opts->pending; pend;) + { + struct cpp_pending *next = pend->next; + + free(pend); + pend = next; + } + opts->pending = NULL; + + if (finclude(pfile, f, fname, 0, NULL)) + output_line_command(pfile, 0, same_file); + return SUCCESS_EXIT_CODE; +} + +void +init_parse_file(cpp_reader * pfile) +{ + memset((char *)pfile, 0, sizeof(cpp_reader)); + pfile->get_token = cpp_get_token; + + pfile->token_buffer_size = 200; + pfile->token_buffer = (unsigned char *)xmalloc(pfile->token_buffer_size); + CPP_SET_WRITTEN(pfile, 0); + + pfile->system_include_depth = 0; + pfile->dont_repeat_files = 0; + pfile->all_include_files = 0; + pfile->max_include_len = 0; + pfile->timebuf = NULL; + pfile->only_seen_white = 1; + pfile->buffer = CPP_NULL_BUFFER(pfile); +} + +static struct cpp_pending * +nreverse_pending(struct cpp_pending *list) +{ + struct cpp_pending *prev = 0, *next, *pend; + + for (pend = list; pend; pend = next) + { + next = pend->next; + pend->next = prev; + prev = pend; + } + return prev; +} + +static void +push_pending(cpp_reader * pfile, const char *cmd, const char *arg) +{ + struct cpp_pending *pend + = (struct cpp_pending *)xmalloc(sizeof(struct cpp_pending)); + + pend->cmd = cmd; + pend->arg = arg; + pend->next = CPP_OPTIONS(pfile)->pending; + CPP_OPTIONS(pfile)->pending = pend; +} + +/* Handle command-line options in (argc, argv). + * Can be called multiple times, to handle multiple sets of options. + * Returns if an unrecognized option is seen. + * Returns number of handled arguments. */ + +int +cpp_handle_options(cpp_reader * pfile, int argc, char **argv) +{ + int i; + struct cpp_options *opts = CPP_OPTIONS(pfile); + + for (i = 0; i < argc; i++) + { + if (argv[i][0] != '-') + { + if (opts->out_fname) + cpp_fatal("Usage: %s [switches] input output", argv[0]); + else if (opts->in_fname) + opts->out_fname = argv[i]; + else + opts->in_fname = argv[i]; + } + else + { + switch (argv[i][1]) + { + + case 'i': + if (!strcmp(argv[i], "-include") + || !strcmp(argv[i], "-imacros")) + { + if (i + 1 == argc) + cpp_fatal("Filename missing after `%s' option", + argv[i]); + else + push_pending(pfile, argv[i], argv[i + 1]), i++; + } + if (!strcmp(argv[i], "-iprefix")) + { + if (i + 1 == argc) + cpp_fatal("Filename missing after `-iprefix' option"); + else + opts->include_prefix = argv[++i]; + } + if (!strcmp(argv[i], "-ifoutput")) + { + opts->output_conditionals = 1; + } + if (!strcmp(argv[i], "-isystem")) + { + file_name_list *dirtmp; + + if (i + 1 == argc) + cpp_fatal("Filename missing after `-isystem' option"); + + dirtmp = + (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 1; + dirtmp->fname = (char *)xmalloc(strlen(argv[i + 1]) + 1); + strcpy(dirtmp->fname, argv[++i]); + dirtmp->got_name_map = 0; + + if (!opts->before_system) + opts->before_system = dirtmp; + else + opts->last_before_system->next = dirtmp; + opts->last_before_system = dirtmp; /* Tail follows the last one */ + } + /* Add directory to end of path for includes, + * with the default prefix at the front of its name. */ + if (!strcmp(argv[i], "-iwithprefix")) + { + file_name_list *dirtmp; + char *prefix; + + if (opts->include_prefix) + prefix = opts->include_prefix; + else + { + prefix = savestring(GCC_INCLUDE_DIR); + /* Remove the `include' from /usr/local/lib/gcc.../include. */ + if (!strcmp + (prefix + strlen(prefix) - 8, "/include")) + prefix[strlen(prefix) - 7] = 0; + } + + dirtmp = + (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; /* New one goes on the end */ + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 0; + if (i + 1 == argc) + cpp_fatal + ("Directory name missing after `-iwithprefix' option"); + + dirtmp->fname = (char *)xmalloc(strlen(argv[i + 1]) + + strlen(prefix) + 1); + strcpy(dirtmp->fname, prefix); + strcat(dirtmp->fname, argv[++i]); + dirtmp->got_name_map = 0; + + if (!opts->after_include) + opts->after_include = dirtmp; + else + opts->last_after_include->next = dirtmp; + opts->last_after_include = dirtmp; /* Tail follows the last one */ + } + /* Add directory to main path for includes, + * with the default prefix at the front of its name. */ + if (!strcmp(argv[i], "-iwithprefixbefore")) + { + file_name_list *dirtmp; + char *prefix; + + if (opts->include_prefix) + prefix = opts->include_prefix; + else + { + prefix = savestring(GCC_INCLUDE_DIR); + /* Remove the `include' from /usr/local/lib/gcc.../include. */ + if (!strcmp + (prefix + strlen(prefix) - 8, "/include")) + prefix[strlen(prefix) - 7] = 0; + } + + dirtmp = + (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; /* New one goes on the end */ + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 0; + if (i + 1 == argc) + cpp_fatal + ("Directory name missing after `-iwithprefixbefore' option"); + + dirtmp->fname = (char *)xmalloc(strlen(argv[i + 1]) + + strlen(prefix) + 1); + strcpy(dirtmp->fname, prefix); + strcat(dirtmp->fname, argv[++i]); + dirtmp->got_name_map = 0; + + append_include_chain(pfile, dirtmp, dirtmp); + } + /* Add directory to end of path for includes. */ + if (!strcmp(argv[i], "-idirafter")) + { + file_name_list *dirtmp; + + dirtmp = + (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; /* New one goes on the end */ + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 0; + if (i + 1 == argc) + cpp_fatal + ("Directory name missing after `-idirafter' option"); + else + dirtmp->fname = argv[++i]; + dirtmp->got_name_map = 0; + + if (!opts->after_include) + opts->after_include = dirtmp; + else + opts->last_after_include->next = dirtmp; + opts->last_after_include = dirtmp; /* Tail follows the last one */ + } + break; + + case 'o': + if (opts->out_fname) + cpp_fatal("Output filename specified twice"); + if (i + 1 == argc) + cpp_fatal("Filename missing after -o option"); + opts->out_fname = argv[++i]; + if (!strcmp(opts->out_fname, "-")) + opts->out_fname = ""; + break; + + case 'p': + if (!strcmp(argv[i], "-pedantic")) + CPP_PEDANTIC(pfile) = 1; + else if (!strcmp(argv[i], "-pedantic-errors")) + { + CPP_PEDANTIC(pfile) = 1; + opts->pedantic_errors = 1; + } + break; + + case 't': + if (!strcmp(argv[i], "-trigraphs")) + { + if (!opts->chill) + opts->no_trigraphs = 0; + } + break; + + case 'l': + if (!strcmp(argv[i], "-lang-c")) + opts->cplusplus = 0, opts->cplusplus_comments = + 0, opts->objc = 0; + if (!strcmp(argv[i], "-lang-c++")) + opts->cplusplus = 1, opts->cplusplus_comments = + 1, opts->objc = 0; + if (!strcmp(argv[i], "-lang-c-c++-comments")) + opts->cplusplus = 0, opts->cplusplus_comments = + 1, opts->objc = 0; + if (!strcmp(argv[i], "-lang-objc")) + opts->objc = 1, opts->cplusplus = + 0, opts->cplusplus_comments = 1; + if (!strcmp(argv[i], "-lang-objc++")) + opts->objc = 1, opts->cplusplus = + 1, opts->cplusplus_comments = 1; + if (!strcmp(argv[i], "-lang-asm")) + opts->lang_asm = 1; + if (!strcmp(argv[i], "-lint")) + opts->for_lint = 1; + if (!strcmp(argv[i], "-lang-chill")) + opts->objc = 0, opts->cplusplus = 0, opts->chill = 1, + opts->traditional = 1, opts->no_trigraphs = 1; + break; + + case '+': + opts->cplusplus = 1, opts->cplusplus_comments = 1; + break; + + case 'w': + opts->inhibit_warnings = 1; + break; + + case 'W': + if (!strcmp(argv[i], "-Wtrigraphs")) + opts->warn_trigraphs = 1; + else if (!strcmp(argv[i], "-Wno-trigraphs")) + opts->warn_trigraphs = 0; + else if (!strcmp(argv[i], "-Wcomment")) + opts->warn_comments = 1; + else if (!strcmp(argv[i], "-Wno-comment")) + opts->warn_comments = 0; + else if (!strcmp(argv[i], "-Wcomments")) + opts->warn_comments = 1; + else if (!strcmp(argv[i], "-Wno-comments")) + opts->warn_comments = 0; + else if (!strcmp(argv[i], "-Wtraditional")) + opts->warn_stringify = 1; + else if (!strcmp(argv[i], "-Wno-traditional")) + opts->warn_stringify = 0; + else if (!strcmp(argv[i], "-Wimport")) + opts->warn_import = 1; + else if (!strcmp(argv[i], "-Wno-import")) + opts->warn_import = 0; + else if (!strcmp(argv[i], "-Werror")) + opts->warnings_are_errors = 1; + else if (!strcmp(argv[i], "-Wno-error")) + opts->warnings_are_errors = 0; + else if (!strcmp(argv[i], "-Wall")) + { + opts->warn_trigraphs = 1; + opts->warn_comments = 1; + } + break; + + case 'M': + /* The style of the choices here is a bit mixed. + * The chosen scheme is a hybrid of keeping all options in one string + * and specifying each option in a separate argument: + * -M|-MM|-MD file|-MMD file [-MG]. An alternative is: + * -M|-MM|-MD file|-MMD file|-MG|-MMG; or more concisely: + * -M[M][G][D file]. This is awkward to handle in specs, and is not + * as extensible. */ + /* ??? -MG must be specified in addition to one of -M or -MM. + * This can be relaxed in the future without breaking anything. + * The converse isn't true. */ + + /* -MG isn't valid with -MD or -MMD. This is checked for later. */ + if (!strcmp(argv[i], "-MG")) + { + opts->print_deps_missing_files = 1; + break; + } + if (!strcmp(argv[i], "-M")) + opts->print_deps = 2; + else if (!strcmp(argv[i], "-MM")) + opts->print_deps = 1; + else if (!strcmp(argv[i], "-MD")) + opts->print_deps = 2; + else if (!strcmp(argv[i], "-MMD")) + opts->print_deps = 1; + /* For -MD and -MMD options, write deps on file named by next arg. */ + if (!strcmp(argv[i], "-MD") || !strcmp(argv[i], "-MMD")) + { + if (i + 1 == argc) + cpp_fatal("Filename missing after %s option", + argv[i]); + opts->deps_file = argv[++i]; + } + else + { + /* For -M and -MM, write deps on standard output + * and suppress the usual output. */ + opts->no_output = 1; + } + break; + + case 'd': + { + char *p = argv[i] + 2; + char c; + + while ((c = *p++) != 0) + { + /* Arg to -d specifies what parts of macros to dump */ + switch (c) + { + case 'M': + opts->dump_macros = dump_only; + opts->no_output = 1; + break; + case 'N': + opts->dump_macros = dump_names; + break; + case 'D': + opts->dump_macros = dump_definitions; + break; + } + } + } + break; + + case 'g': + if (argv[i][2] == '3') + opts->debug_output = 1; + break; + + case 'v': + fprintf(stderr, "GNU CPP version %s", version_string); +#ifdef TARGET_VERSION + TARGET_VERSION; +#endif + fprintf(stderr, "\n"); + opts->verbose = 1; + break; + + case 'H': + opts->print_include_names = 1; + break; + + case 'D': + if (argv[i][2] != 0) + push_pending(pfile, "-D", argv[i] + 2); + else if (i + 1 == argc) + cpp_fatal("Macro name missing after -D option"); + else + i++, push_pending(pfile, "-D", argv[i]); + break; + + case 'a': + { + if (!strcmp(argv[i], "-a")) + { + if (i + 1 == argc) + cpp_fatal("Filename missing after `-a` option"); + else if (strcmp(argv[++i], "/dev/null")) + { + opts->watchfile = argv[i]; + } + } + break; + } + + case 'A': + { + char *p = NULL; + + if (argv[i][2] != 0) + p = argv[i] + 2; + else if (i + 1 == argc) + cpp_fatal("Assertion missing after -A option"); + else + p = argv[++i]; + + if (!strcmp(p, "-")) + { + struct cpp_pending **ptr; + + /* -A- eliminates all predefined macros and assertions. + * Let's include also any that were specified earlier + * on the command line. That way we can get rid of any + * that were passed automatically in from GCC. */ + + opts->inhibit_predefs = 1; + for (ptr = &opts->pending; *ptr;) + { + struct cpp_pending *pend = *ptr; + + if (pend->cmd && pend->cmd[0] == '-' + && (pend->cmd[1] == 'D' + || pend->cmd[1] == 'A')) + { + *ptr = pend->next; + free(pend); + } + else + ptr = &pend->next; + } + } + else + { + push_pending(pfile, "-A", p); + } + } + break; + + case 'U': /* JF #undef something */ + if (argv[i][2] != 0) + push_pending(pfile, "-U", argv[i] + 2); + else if (i + 1 == argc) + cpp_fatal("Macro name missing after -U option"); + else + push_pending(pfile, "-U", argv[i + 1]), i++; + break; + + case 'C': + opts->put_out_comments = 1; + break; + + case 'E': /* -E comes from cc -E; ignore it. */ + break; + + case 'P': + opts->no_line_commands = 1; + break; + + case '$': /* Don't include $ in identifiers. */ + opts->dollars_in_ident = 0; + break; + + case 'I': /* Add directory to path for includes. */ + { + file_name_list *dirtmp; + + if (!CPP_OPTIONS(pfile)->ignore_srcdir + && !strcmp(argv[i] + 2, "-")) + { + CPP_OPTIONS(pfile)->ignore_srcdir = 1; + /* Don't use any preceding -I directories for #include <...>. */ + CPP_OPTIONS(pfile)->first_bracket_include = 0; + } + else + { + dirtmp = + (file_name_list *) xmalloc(sizeof(file_name_list)); + + dirtmp->next = 0; /* New one goes on the end */ + dirtmp->control_macro = 0; + dirtmp->c_system_include_path = 0; + if (argv[i][2] != 0) + dirtmp->fname = argv[i] + 2; + else if (i + 1 == argc) + cpp_fatal + ("Directory name missing after -I option"); + else + dirtmp->fname = argv[++i]; + dirtmp->got_name_map = 0; + append_include_chain(pfile, dirtmp, dirtmp); + } + } + break; + + case 'n': + if (!strcmp(argv[i], "-nostdinc")) + /* -nostdinc causes no default include directories. + * You must specify all include-file directories with -I. */ + opts->no_standard_includes = 1; + else if (!strcmp(argv[i], "-nostdinc++")) + /* -nostdinc++ causes no default C++-specific include directories. */ + opts->no_standard_cplusplus_includes = 1; + break; + + case 'u': + /* Sun compiler passes undocumented switch "-undef". + * Let's assume it means to inhibit the predefined symbols. */ + opts->inhibit_predefs = 1; + break; + + case '\0': /* JF handle '-' as file name meaning stdin or stdout */ + if (!opts->in_fname) + { + opts->in_fname = ""; + break; + } + else if (!opts->out_fname) + { + opts->out_fname = ""; + break; + } /* else fall through into error */ + default: + return i; + } + } + } + return i; +} + +void +cpp_finish(cpp_reader * pfile) +{ + struct cpp_options *opts = CPP_OPTIONS(pfile); + + if (opts->print_deps) + { + /* Stream on which to print the dependency information. */ + FILE *deps_stream; + + /* Don't actually write the deps file if compilation has failed. */ + if (pfile->errors == 0) + { + const char *deps_mode = + opts->print_deps_append ? "ab" : "wb"; + + if (!opts->deps_file) + deps_stream = stdout; + else if (!(deps_stream = fopen(opts->deps_file, deps_mode))) + cpp_pfatal_with_name(pfile, opts->deps_file); + fputs(pfile->deps_buffer, deps_stream); + putc('\n', deps_stream); + if (opts->deps_file) + { + if (ferror(deps_stream) || fclose(deps_stream) != 0) + cpp_fatal("I/O error on output"); + } + } + } +} + +static int +do_assert(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf __UNUSED__, unsigned char *limit __UNUSED__) +{ + long symstart; /* remember where symbol name starts */ + int c; + int sym_length; /* and how long it is */ + struct arglist *tokens = NULL; + + if (CPP_PEDANTIC(pfile) && CPP_OPTIONS(pfile)->done_initializing + && !CPP_BUFFER(pfile)->system_header_p) + cpp_pedwarn(pfile, "ANSI C does not allow `#assert'"); + + cpp_skip_hspace(pfile); + symstart = CPP_WRITTEN(pfile); /* remember where it starts */ + parse_name(pfile, GETC()); + sym_length = check_macro_name(pfile, pfile->token_buffer + symstart, + "assertion"); + + cpp_skip_hspace(pfile); + if (PEEKC() != '(') + { + cpp_error(pfile, "missing token-sequence in `#assert'"); + goto error; + } + { + int error_flag = 0; + + tokens = read_token_list(pfile, &error_flag); + if (error_flag) + goto error; + if (!tokens) + { + cpp_error(pfile, "empty token-sequence in `#assert'"); + goto error; + } + cpp_skip_hspace(pfile); + c = PEEKC(); + if (c != EOF && c != '\n') + cpp_pedwarn(pfile, "junk at end of `#assert'"); + skip_rest_of_line(pfile); + } + + /* If this name isn't already an assertion name, make it one. + * Error if it was already in use in some other way. */ + + { + ASSERTION_HASHNODE *hp; + const char *symname = (char *)pfile->token_buffer + symstart; + int hashcode = + hashf(symname, sym_length, ASSERTION_HASHSIZE); + struct tokenlist_list *value = + (struct tokenlist_list *)xmalloc(sizeof(struct tokenlist_list)); + + hp = assertion_lookup(pfile, symname, sym_length, hashcode); + if (!hp) + { + if (sym_length == 7 && !strncmp(symname, "defined", sym_length)) + cpp_error(pfile, "`defined' redefined as assertion"); + hp = assertion_install(pfile, symname, sym_length, hashcode); + } + /* Add the spec'd token-sequence to the list of such. */ + value->tokens = tokens; + value->next = hp->value; + hp->value = value; + } + CPP_SET_WRITTEN(pfile, symstart); /* Pop */ + return 0; + error: + CPP_SET_WRITTEN(pfile, symstart); /* Pop */ + skip_rest_of_line(pfile); + return 1; +} + +static int +do_unassert(cpp_reader * pfile, struct directive *keyword __UNUSED__, + unsigned char *buf __UNUSED__, unsigned char *limit __UNUSED__) +{ + long symstart; /* remember where symbol name starts */ + int sym_length; /* and how long it is */ + int c; + + struct arglist *tokens = NULL; + int tokens_specified = 0; + + if (CPP_PEDANTIC(pfile) && CPP_OPTIONS(pfile)->done_initializing + && !CPP_BUFFER(pfile)->system_header_p) + cpp_pedwarn(pfile, "ANSI C does not allow `#unassert'"); + + cpp_skip_hspace(pfile); + + symstart = CPP_WRITTEN(pfile); /* remember where it starts */ + parse_name(pfile, GETC()); + sym_length = check_macro_name(pfile, pfile->token_buffer + symstart, + "assertion"); + + cpp_skip_hspace(pfile); + if (PEEKC() == '(') + { + int error_flag = 0; + + tokens = read_token_list(pfile, &error_flag); + if (error_flag) + goto error; + if (!tokens) + { + cpp_error(pfile, "empty token list in `#unassert'"); + goto error; + } + tokens_specified = 1; + } + cpp_skip_hspace(pfile); + c = PEEKC(); + if (c != EOF && c != '\n') + cpp_error(pfile, "junk at end of `#unassert'"); + skip_rest_of_line(pfile); + + { + ASSERTION_HASHNODE *hp; + const char *symname = (char *)pfile->token_buffer + symstart; + int hashcode = + hashf(symname, sym_length, ASSERTION_HASHSIZE); + struct tokenlist_list *tail, *prev; + + hp = assertion_lookup(pfile, symname, sym_length, hashcode); + if (!hp) + return 1; + + /* If no token list was specified, then eliminate this assertion + * entirely. */ + if (!tokens_specified) + delete_assertion(hp); + else + { + /* If a list of tokens was given, then delete any matching list. */ + + tail = hp->value; + prev = 0; + while (tail) + { + struct tokenlist_list *next = tail->next; + + if (compare_token_lists(tail->tokens, tokens)) + { + if (prev) + prev->next = next; + else + hp->value = tail->next; + free_token_list(tail->tokens); + free(tail); + } + else + { + prev = tail; + } + tail = next; + } + } + } + + CPP_SET_WRITTEN(pfile, symstart); /* Pop */ + return 0; + error: + CPP_SET_WRITTEN(pfile, symstart); /* Pop */ + skip_rest_of_line(pfile); + return 1; +} + +/* Test whether there is an assertion named NAME + * and optionally whether it has an asserted token list TOKENS. + * NAME is not null terminated; its length is SYM_LENGTH. + * If TOKENS_SPECIFIED is 0, then don't check for any token list. */ + +static int +check_assertion(cpp_reader * pfile, const char *name, int sym_length, + int tokens_specified, struct arglist *tokens) +{ + ASSERTION_HASHNODE *hp; + int hashcode = hashf(name, sym_length, ASSERTION_HASHSIZE); + + if (CPP_PEDANTIC(pfile) && !CPP_BUFFER(pfile)->system_header_p) + cpp_pedwarn(pfile, "ANSI C does not allow testing assertions"); + + hp = assertion_lookup(pfile, name, sym_length, hashcode); + if (!hp) + /* It is not an assertion; just return false. */ + return 0; + + /* If no token list was specified, then value is 1. */ + if (!tokens_specified) + return 1; + + { + struct tokenlist_list *tail; + + tail = hp->value; + + /* If a list of tokens was given, + * then succeed if the assertion records a matching list. */ + + while (tail) + { + if (compare_token_lists(tail->tokens, tokens)) + return 1; + tail = tail->next; + } + + /* Fail if the assertion has no matching list. */ + return 0; + } +} + +/* Compare two lists of tokens for equality including order of tokens. */ + +static int +compare_token_lists(struct arglist *l1, struct arglist *l2) +{ + while (l1 && l2) + { + if (l1->length != l2->length) + return 0; + if (strncmp(l1->name, l2->name, l1->length)) + return 0; + l1 = l1->next; + l2 = l2->next; + } + + /* Succeed if both lists end at the same time. */ + return l1 == l2; +} + +struct arglist * +reverse_token_list(struct arglist *tokens) +{ + struct arglist *prev = 0, *cur, *next; + + for (cur = tokens; cur; cur = next) + { + next = cur->next; + cur->next = prev; + prev = cur; + } + return prev; +} + +/* Read a space-separated list of tokens ending in a close parenthesis. + * Return a list of strings, in the order they were written. + * (In case of error, return 0 and store -1 in *ERROR_FLAG.) */ + +static struct arglist * +read_token_list(cpp_reader * pfile, int *error_flag) +{ + struct arglist *token_ptrs = 0; + int depth = 1; + int length; + + *error_flag = 0; + FORWARD(1); /* Skip '(' */ + + /* Loop over the assertion value tokens. */ + while (depth > 0) + { + struct arglist *temp; + long name_written = CPP_WRITTEN(pfile); + int c; + + cpp_skip_hspace(pfile); + + c = GETC(); + + /* Find the end of the token. */ + if (c == '(') + { + CPP_PUTC(pfile, c); + depth++; + } + else if (c == ')') + { + depth--; + if (depth == 0) + break; + CPP_PUTC(pfile, c); + } + else if (c == '"' || c == '\'') + { + FORWARD(-1); + cpp_get_token(pfile); + } + else if (c == '\n') + break; + else + { + while (c != EOF && !is_space[c] && c != '(' && c != ')' + && c != '"' && c != '\'') + { + CPP_PUTC(pfile, c); + c = GETC(); + } + if (c != EOF) + FORWARD(-1); + } + + length = CPP_WRITTEN(pfile) - name_written; + temp = (struct arglist *)xmalloc(sizeof(struct arglist) + length + 1); + + temp->name = (char *)(temp + 1); + memcpy(temp->name, (char *)(pfile->token_buffer + name_written), + length); + temp->name[length] = 0; + temp->next = token_ptrs; + token_ptrs = temp; + temp->length = length; + + CPP_ADJUST_WRITTEN(pfile, -length); /* pop */ + + if (c == EOF || c == '\n') + { /* FIXME */ + cpp_error(pfile, + "unterminated token sequence following `#' operator"); + return 0; + } + } + + /* We accumulated the names in reverse order. + * Now reverse them to get the proper order. */ + return reverse_token_list(token_ptrs); +} + +static void +free_token_list(struct arglist *tokens) +{ + while (tokens) + { + struct arglist *next = tokens->next; + + free(tokens->name); + free(tokens); + tokens = next; + } +} + +/* Get the file-mode and data size of the file open on FD + * and store them in *MODE_POINTER and *SIZE_POINTER. */ + +static int +file_size_and_mode(int fd, int *mode_pointer, long int *size_pointer) +{ + struct stat sbuf; + + if (fstat(fd, &sbuf) < 0) + return (-1); + if (mode_pointer) + *mode_pointer = sbuf.st_mode; + if (size_pointer) + *size_pointer = sbuf.st_size; + return 0; +} + +/* Read LEN bytes at PTR from descriptor DESC, for file FILENAME, + * retrying if necessary. Return a negative value if an error occurs, + * otherwise return the actual number of bytes read, + * which must be LEN unless end-of-file was reached. */ + +static int +safe_read(int desc, char *ptr, int len) +{ + int left = len; + + while (left > 0) + { + int nchars = read(desc, ptr, left); + + if (nchars < 0) + { +#ifdef EINTR + if (errno == EINTR) + continue; +#endif + return nchars; + } + if (nchars == 0) + break; + ptr += nchars; + left -= nchars; + } + return len - left; +} + +static char * +savestring(const char *input) +{ + unsigned size = strlen(input); + char *output = (char *)xmalloc(size + 1); + + strcpy(output, input); + return output; +} + +/* Initialize PMARK to remember the current position of PFILE. */ +void +parse_set_mark(struct parse_marker *pmark, cpp_reader * pfile) +{ + cpp_buffer *pbuf = CPP_BUFFER(pfile); + + pmark->next = pbuf->marks; + pbuf->marks = pmark; + pmark->buf = pbuf; + pmark->position = pbuf->cur - pbuf->buf; +} + +/* Cleanup PMARK - we no longer need it. */ +static void +parse_clear_mark(struct parse_marker *pmark) +{ + struct parse_marker **pp = &pmark->buf->marks; + + for (;; pp = &(*pp)->next) + { + if (!*pp) + cpp_fatal("internal error", "in parse_set_mark"); + if (*pp == pmark) + break; + } + *pp = pmark->next; +} + +/* Backup the current position of PFILE to that saved in PMARK. */ + +static void +parse_goto_mark(struct parse_marker *pmark, cpp_reader * pfile) +{ + cpp_buffer *pbuf = CPP_BUFFER(pfile); + + if (pbuf != pmark->buf) + cpp_fatal("internal error %s", "parse_goto_mark"); + pbuf->cur = pbuf->buf + pmark->position; +} + +/* Reset PMARK to point to the current position of PFILE. (Same + * as parse_clear_mark (PMARK), parse_set_mark (PMARK, PFILE) but faster. */ + +static void +parse_move_mark(struct parse_marker *pmark, cpp_reader * pfile) +{ + cpp_buffer *pbuf = CPP_BUFFER(pfile); + + if (pbuf != pmark->buf) + cpp_fatal("internal error %s", "parse_move_mark"); + pmark->position = pbuf->cur - pbuf->buf; +} + +int +cpp_read_check_assertion(cpp_reader * pfile) +{ + int name_start = CPP_WRITTEN(pfile); + int name_length, name_written; + int result; + + FORWARD(1); /* Skip '#' */ + cpp_skip_hspace(pfile); + parse_name(pfile, GETC()); + name_written = CPP_WRITTEN(pfile); + name_length = name_written - name_start; + cpp_skip_hspace(pfile); + if (CPP_BUF_PEEK(CPP_BUFFER(pfile)) == '(') + { + int error_flag; + struct arglist *token_ptrs = read_token_list(pfile, &error_flag); + + result = check_assertion(pfile, + (char *)pfile->token_buffer + name_start, + name_length, 1, token_ptrs); + } + else + result = check_assertion(pfile, + (char *)pfile->token_buffer + name_start, + name_length, 0, NULL); + CPP_ADJUST_WRITTEN(pfile, -name_length); /* pop */ + return result; +} + +static void +cpp_print_file_and_line(cpp_reader * pfile) +{ + cpp_buffer *ip = cpp_file_buffer(pfile); + + if (ip) + { + long line, col; + + cpp_buf_line_and_col(ip, &line, &col); + cpp_file_line_for_message(pfile, ip->nominal_fname, + line, pfile->show_column ? col : -1); + } +} + +static void +cpp_error_v(cpp_reader * pfile, const char *msg, va_list args) +{ + cpp_print_containing_files(pfile); + cpp_print_file_and_line(pfile); + cpp_message_v(pfile, 1, msg, args); +} + +void +cpp_error(cpp_reader * pfile, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + + cpp_error_v(pfile, msg, args); + + va_end(args); +} + +/* Print error message but don't count it. */ + +static void +cpp_warning_v(cpp_reader * pfile, const char *msg, va_list args) +{ + if (CPP_OPTIONS(pfile)->inhibit_warnings) + return; + + if (CPP_OPTIONS(pfile)->warnings_are_errors) + pfile->errors++; + + cpp_print_containing_files(pfile); + cpp_print_file_and_line(pfile); + cpp_message_v(pfile, 0, msg, args); +} + +void +cpp_warning(cpp_reader * pfile, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + + cpp_warning_v(pfile, msg, args); + + va_end(args); +} + +/* Print an error message and maybe count it. */ + +void +cpp_pedwarn(cpp_reader * pfile, const char *msg, ...) +{ + va_list args; + + va_start(args, msg); + + if (CPP_OPTIONS(pfile)->pedantic_errors) + cpp_error_v(pfile, msg, args); + else + cpp_warning_v(pfile, msg, args); + + va_end(args); +} + +static void +cpp_error_with_line(cpp_reader * pfile, int line, int column, const char *msg) +{ + cpp_buffer *ip = cpp_file_buffer(pfile); + + cpp_print_containing_files(pfile); + + if (ip) + cpp_file_line_for_message(pfile, ip->nominal_fname, line, column); + + cpp_message(pfile, 1, msg, NULL, NULL, NULL); +} + +static void +cpp_warning_with_line(cpp_reader * pfile, int line, int column, const char *msg) +{ + cpp_buffer *ip; + + if (CPP_OPTIONS(pfile)->inhibit_warnings) + return; + + if (CPP_OPTIONS(pfile)->warnings_are_errors) + pfile->errors++; + + cpp_print_containing_files(pfile); + + ip = cpp_file_buffer(pfile); + + if (ip) + cpp_file_line_for_message(pfile, ip->nominal_fname, line, column); + + cpp_message(pfile, 0, msg, NULL, NULL, NULL); +} + +static void +cpp_pedwarn_with_line(cpp_reader * pfile, int line, int column, const char *msg) +{ + if (CPP_OPTIONS(pfile)->pedantic_errors) + cpp_error_with_line(pfile, column, line, msg); + else + cpp_warning_with_line(pfile, line, column, msg); +} + +/* Report a warning (or an error if pedantic_errors) + * giving specified file name and line number, not current. */ + +void +cpp_pedwarn_with_file_and_line(cpp_reader * pfile, + const char *file, int line, + const char *msg, const char *arg1, + const char *arg2, const char *arg3) +{ + if (!CPP_OPTIONS(pfile)->pedantic_errors + && CPP_OPTIONS(pfile)->inhibit_warnings) + return; + if (file) + cpp_file_line_for_message(pfile, file, line, -1); + cpp_message(pfile, CPP_OPTIONS(pfile)->pedantic_errors, + msg, arg1, arg2, arg3); +} + +/* This defines "errno" properly for VMS, and gives us EACCES. */ +#include +#ifndef errno +extern int errno; + +#endif + +#ifndef HAVE_STRERROR +extern int sys_nerr; + +#if defined(bsd4_4) +extern const char *const sys_errlist[]; + +#else +extern char *sys_errlist[]; + +#endif +#endif /* HAVE_STRERROR */ + +/* + * my_strerror - return the descriptive text associated with an `errno' code. + */ + +static const char * +my_strerror(int errnum) +{ + const char *result; + +#ifndef HAVE_STRERROR + result = ((errnum < sys_nerr) ? sys_errlist[errnum] : 0); +#else + result = strerror(errnum); +#endif + + if (!result) + result = "undocumented I/O error"; + + return result; +} + +/* Error including a message from `errno'. */ + +static void +cpp_error_from_errno(cpp_reader * pfile, const char *name) +{ + cpp_buffer *ip = cpp_file_buffer(pfile); + + cpp_print_containing_files(pfile); + + if (ip) + cpp_file_line_for_message(pfile, ip->nominal_fname, ip->lineno, -1); + + cpp_message(pfile, 1, "%s: %s", name, my_strerror(errno), NULL); +} + +void +cpp_perror_with_name(cpp_reader * pfile, const char *name) +{ + cpp_message(pfile, 1, "%s: %s: %s", progname, name, my_strerror(errno)); +} + +/* TODO: + * No pre-compiled header file support. + * + * Possibly different enum token codes for each C/C++ token. + * + * Should clean up remaining directives to that do_XXX functions + * only take two arguments and all have command_reads_line. + * + * Find and cleanup remaining uses of static variables, + * + * Support for trigraphs. + * + * Support -dM flag (dump_all_macros). + * + * Support for_lint flag. + */ + +extern cpp_options options; + +void +using_file(const char *filename) +{ + FILE *f; + + f = fopen(options.watchfile, "a"); + if (!f) return ; + fputs(filename, f); + fputc('\n', f); + fclose(f); +} diff --git a/src/bin/epp/cpplib.h b/src/bin/epp/cpplib.h new file mode 100644 index 0000000..a34a765 --- /dev/null +++ b/src/bin/epp/cpplib.h @@ -0,0 +1,646 @@ +/* Definitions for CPP library. + Copyright (C) 1995 Free Software Foundation, Inc. + Written by Per Bothner, 1994-95. + +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + + In other words, you are welcome to use, share and improve this program. + You are forbidden to forbid anyone else to use, share and improve + what you give them. Help stamp out software-hoarding! */ + +#include +#include +#include + +#ifndef HOST_BITS_PER_WIDE_INT + +#if HOST_BITS_PER_LONG > HOST_BITS_PER_INT +#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_LONG +#define HOST_WIDE_INT long +#else +#define HOST_BITS_PER_WIDE_INT HOST_BITS_PER_INT +#define HOST_WIDE_INT int +#endif + +#endif + +#define STATIC_BUFFERS + +typedef struct cpp_reader cpp_reader; +typedef struct cpp_buffer cpp_buffer; +typedef struct cpp_options cpp_options; + +enum cpp_token { + CPP_EOF = -1, + CPP_OTHER = 0, + CPP_COMMENT = 1, + CPP_HSPACE, + CPP_VSPACE, /* newlines and #line directives */ + CPP_NAME, + CPP_NUMBER, + CPP_CHAR, + CPP_STRING, + CPP_DIRECTIVE, + CPP_LPAREN, /* "(" */ + CPP_RPAREN, /* ")" */ + CPP_LBRACE, /* "{" */ + CPP_RBRACE, /* "}" */ + CPP_COMMA, /* "," */ + CPP_SEMICOLON, /* ";" */ + CPP_3DOTS, /* "..." */ + /* POP_TOKEN is returned when we've popped a cpp_buffer. */ + CPP_POP +}; + +typedef enum cpp_token (*parse_underflow_t) (cpp_reader *); +typedef int (*parse_cleanup_t) (cpp_buffer *, cpp_reader *); + +/* A parse_marker indicates a previous position, + which we can backtrack to. */ + +struct parse_marker { + cpp_buffer *buf; + struct parse_marker *next; + int position; +}; + +extern int cpp_handle_options(cpp_reader * pfile, int, char **); +extern enum cpp_token cpp_get_token(cpp_reader * pfile); +extern void cpp_skip_hspace(cpp_reader * pfile); + +/* Maintain and search list of included files, for #import. */ + +#define IMPORT_HASH_SIZE 31 + +struct import_file { + char *name; + ino_t inode; + dev_t dev; + struct import_file *next; +}; + +/* If we have a huge buffer, may need to cache more recent counts */ +#define CPP_LINE_BASE(BUF) ((BUF)->buf + (BUF)->line_base) + +enum dump_type { + dump_none = 0, dump_only, dump_names, dump_definitions +}; + +struct cpp_buffer { + unsigned char *buf; + unsigned char *cur; + unsigned char *rlimit; /* end of valid data */ + unsigned char *alimit; /* end of allocated buffer */ + unsigned char *prev; /* start of current token */ + + const char *fname; + /* Filename specified with #line command. */ + const char *nominal_fname; + + /* Record where in the search path this file was found. + * For #include_next. */ + struct file_name_list *dir; + + long line_base; + long lineno; /* Line number at CPP_LINE_BASE. */ + long colno; /* Column number at CPP_LINE_BASE. */ +#ifndef STATIC_BUFFERS + cpp_buffer *chain; +#endif + parse_underflow_t underflow; + parse_cleanup_t cleanup; + void *data; + struct parse_marker *marks; + /* Value of if_stack at start of this file. + * Used to prohibit unmatched #endif (etc) in an include file. */ + struct if_stack *if_stack; + + /* True if this is a header file included using . */ + char system_header_p; + char seen_eof; + + /* True if buffer contains escape sequences. + * Currently there are are only two kind: + * "@-" means following identifier should not be macro-expanded. + * "@ " means a token-separator. This turns into " " in final output + * if not stringizing and needed to separate tokens; otherwise nothing. + * "@@" means a normal '@'. + * (An '@' inside a string stands for itself and is never an escape.) */ + char has_escapes; +}; + +struct cpp_pending; /* Forward declaration - for C++. */ +struct file_name_map_list; + +typedef struct assertion_hashnode ASSERTION_HASHNODE; + +#define ASSERTION_HASHSIZE 37 + +#ifdef STATIC_BUFFERS +/* Maximum nesting of cpp_buffers. We use a static limit, partly for + efficiency, and partly to limit runaway recursion. */ +#define CPP_STACK_MAX 200 +#endif + +struct cpp_reader { + unsigned char *limit; + parse_underflow_t get_token; + cpp_buffer *buffer; +#ifdef STATIC_BUFFERS + cpp_buffer buffer_stack[CPP_STACK_MAX]; +#endif + + int errors; /* Error counter for exit code */ + void *data; + + unsigned char *token_buffer; + int token_buffer_size; + + /* Line where a newline was first seen in a string constant. */ + int multiline_string_line; + + /* Current depth in #include directives that use <...>. */ + int system_include_depth; + + /* List of included files that contained #pragma once. */ + struct file_name_list *dont_repeat_files; + + /* List of other included files. + * If ->control_macro if nonzero, the file had a #ifndef + * around the entire contents, and ->control_macro gives the macro name. */ + struct file_name_list *all_include_files; + + /* Current maximum length of directory names in the search path + * for include files. (Altered as we get more of them.) */ + int max_include_len; + + /* Hash table of files already included with #include or #import. */ + struct import_file *import_hash_table[IMPORT_HASH_SIZE]; + + struct if_stack *if_stack; + + /* Nonzero means we are inside an IF during a -pcp run. In this mode + * macro expansion is done, and preconditions are output for all macro + * uses requiring them. */ + char pcp_inside_if; + + /* Nonzero means we have printed (while error reporting) a list of + * containing files that matches the current status. */ + char input_stack_listing_current; + + /* If non-zero, macros are not expanded. */ + char no_macro_expand; + + /* Print column number in error messages. */ + char show_column; + + /* We're printed a warning recommending against using #import. */ + char import_warning; + + /* If true, character between '<' and '>' are a single (string) token. */ + char parsing_include_directive; + + /* True if escape sequences (as described for has_escapes in + * parse_buffer) should be emitted. */ + char output_escapes; + + /* 0: Have seen non-white-space on this line. + * 1: Only seen white space so far on this line. + * 2: Only seen white space so far in this file. */ + char only_seen_white; + + /* Nonzero means this file was included with a -imacros or -include + * command line and should not be recorded as an include file. */ + + int no_record_file; + + long lineno; + + struct tm *timebuf; + + ASSERTION_HASHNODE *assertion_hashtab[ASSERTION_HASHSIZE]; + + /* Buffer of -M output. */ + char *deps_buffer; + + /* Number of bytes allocated in above. */ + int deps_allocated_size; + + /* Number of bytes used. */ + int deps_size; + + /* Number of bytes since the last newline. */ + int deps_column; +}; + +#define CPP_BUF_PEEK(BUFFER) \ + ((BUFFER)->cur < (BUFFER)->rlimit ? *(BUFFER)->cur : EOF) +#define CPP_BUF_GET(BUFFER) \ + ((BUFFER)->cur < (BUFFER)->rlimit ? *(BUFFER)->cur++ : EOF) +#define CPP_FORWARD(BUFFER, N) ((BUFFER)->cur += (N)) + +/* Number of characters currently in PFILE's output buffer. */ +#define CPP_WRITTEN(PFILE) ((PFILE)->limit - (PFILE)->token_buffer) +#define CPP_PWRITTEN(PFILE) ((PFILE)->limit) + +/* Make sure PFILE->token_buffer has space for at least N more characters. */ +#define CPP_RESERVE(PFILE, N) \ + ((unsigned int)(CPP_WRITTEN (PFILE) + N) > (unsigned int) (PFILE)->token_buffer_size \ + && (cpp_grow_buffer (PFILE, N), 0)) + +/* Append string STR (of length N) to PFILE's output buffer. + Assume there is enough space. */ +#define CPP_PUTS_Q(PFILE, STR, N) \ + do { memcpy ((PFILE)->limit, STR, (N)); (PFILE)->limit += (N); } while(0) +/* Append string STR (of length N) to PFILE's output buffer. Make space. */ +#define CPP_PUTS(PFILE, STR, N) \ + do { CPP_RESERVE(PFILE, N); CPP_PUTS_Q(PFILE, STR,N); } while(0) +/* Append character CH to PFILE's output buffer. Assume sufficient space. */ +#define CPP_PUTC_Q(PFILE, CH) (*(PFILE)->limit++ = (CH)) +/* Append character CH to PFILE's output buffer. Make space if need be. */ +#define CPP_PUTC(PFILE, CH) \ + do { CPP_RESERVE (PFILE, 1); CPP_PUTC_Q (PFILE, CH); } while(0) +/* Make sure PFILE->limit is followed by '\0'. */ +#define CPP_NUL_TERMINATE_Q(PFILE) (*(PFILE)->limit = 0) +#define CPP_NUL_TERMINATE(PFILE) \ + do { CPP_RESERVE(PFILE, 1); *(PFILE)->limit = 0; } while(0) +#define CPP_ADJUST_WRITTEN(PFILE,DELTA) ((PFILE)->limit += (DELTA)) +#define CPP_SET_WRITTEN(PFILE,N) ((PFILE)->limit = (PFILE)->token_buffer + (N)) + +#define CPP_OPTIONS(PFILE) ((cpp_options*)(PFILE)->data) +#define CPP_BUFFER(PFILE) ((PFILE)->buffer) +#ifdef STATIC_BUFFERS +#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)+1) +#define CPP_NULL_BUFFER(PFILE) (&(PFILE)->buffer_stack[CPP_STACK_MAX]) +#else +#define CPP_PREV_BUFFER(BUFFER) ((BUFFER)->chain) +#define CPP_NULL_BUFFER(PFILE) ((cpp_buffer*)0) +#endif + +/* Pointed to by parse_file::data. */ +struct cpp_options { + const char *in_fname; + + /* Name of output file, for error messages. */ + const char *out_fname; + + struct file_name_map_list *map_list; + + /* Non-0 means -v, so print the full set of include dirs. */ + char verbose; + + /* Nonzero means use extra default include directories for C++. */ + + char cplusplus; + + /* Nonzero means handle cplusplus style comments */ + + char cplusplus_comments; + + /* Nonzero means handle #import, for objective C. */ + + char objc; + + /* Nonzero means this is an assembly file, and allow + * unknown directives, which could be comments. */ + + int lang_asm; + + /* Nonzero means turn NOTREACHED into #pragma NOTREACHED etc */ + + char for_lint; + + /* Nonzero means handle CHILL comment syntax + * and output CHILL string delimiter for __DATE___ etc. */ + + char chill; + + /* Nonzero means copy comments into the output file. */ + + char put_out_comments; + + /* Nonzero means don't process the ANSI trigraph sequences. */ + + char no_trigraphs; + + /* Nonzero means print the names of included files rather than + * the preprocessed output. 1 means just the #include "...", + * 2 means #include <...> as well. */ + + char print_deps; + + /* Nonzero if missing .h files in -M output are assumed to be generated + * files and not errors. */ + + char print_deps_missing_files; + + /* If true, fopen (deps_file, "a") else fopen (deps_file, "w"). */ + char print_deps_append; + + /* Nonzero means print names of header files (-H). */ + + char print_include_names; + + /* Nonzero means try to make failure to fit ANSI C an error. */ + + char pedantic_errors; + + /* Nonzero means don't print warning messages. -w. */ + + char inhibit_warnings; + + /* Nonzero means warn if slash-star appears in a comment. */ + + char warn_comments; + + /* Nonzero means warn if there are any trigraphs. */ + + char warn_trigraphs; + + /* Nonzero means warn if #import is used. */ + + char warn_import; + + /* Nonzero means warn if a macro argument is (or would be) + * stringified with -traditional. */ + + char warn_stringify; + + /* Nonzero means turn warnings into errors. */ + + char warnings_are_errors; + + /* Nonzero causes output not to be done, + * but directives such as #define that have side effects + * are still obeyed. */ + + char no_output; + + /* Nonzero means don't output line number information. */ + + char no_line_commands; + +/* Nonzero means output the text in failing conditionals, + inside #failed ... #endfailed. */ + + char output_conditionals; + + /* Nonzero means -I- has been seen, + * so don't look for #include "foo" the source-file directory. */ + char ignore_srcdir; + +/* Zero means dollar signs are punctuation. + -$ stores 0; -traditional may store 1. Default is 1 for VMS, 0 otherwise. + This must be 0 for correct processing of this ANSI C program: + #define foo(a) #a + #define lose(b) foo (b) + #define test$ + lose (test) */ + char dollars_in_ident; +#ifndef DOLLARS_IN_IDENTIFIERS +#define DOLLARS_IN_IDENTIFIERS 1 +#endif + + /* Nonzero means try to imitate old fashioned non-ANSI preprocessor. */ + char traditional; + + /* Nonzero means give all the error messages the ANSI standard requires. */ + char pedantic; + + char done_initializing; + + struct file_name_list *include; /* First dir to search */ + /* First dir to search for */ + /* This is the first element to use for #include <...>. + * If it is 0, use the entire chain for such includes. */ + struct file_name_list *first_bracket_include; + /* This is the first element in the chain that corresponds to + * a directory of system header files. */ + struct file_name_list *first_system_include; + struct file_name_list *last_include; /* Last in chain */ + + /* Chain of include directories to put at the end of the other chain. */ + struct file_name_list *after_include; + struct file_name_list *last_after_include; /* Last in chain */ + + /* Chain to put at the start of the system include files. */ + struct file_name_list *before_system; + struct file_name_list *last_before_system; /* Last in chain */ + + /* Directory prefix that should replace `/usr' in the standard + * include file directories. */ + char *include_prefix; + + char inhibit_predefs; + char no_standard_includes; + char no_standard_cplusplus_includes; + +/* dump_only means inhibit output of the preprocessed text + and instead output the definitions of all user-defined + macros in a form suitable for use as input to cccp. + dump_names means pass #define and the macro name through to output. + dump_definitions means pass the whole definition (plus #define) through +*/ + + enum dump_type dump_macros; + +/* Nonzero means pass all #define and #undef directives which we actually + process through to the output stream. This feature is used primarily + to allow cc1 to record the #defines and #undefs for the sake of + debuggers which understand about preprocessor macros, but it may + also be useful with -E to figure out how symbols are defined, and + where they are defined. */ + int debug_output; + + /* Pending -D, -U and -A options, in reverse order. */ + struct cpp_pending *pending; + + /* File name which deps are being written to. + * This is 0 if deps are being written to stdout. */ + char *deps_file; + + /* Target-name to write with the dependency information. */ + char *deps_target; + + /* Target file to write all include file */ + const char *watchfile; +}; + +#define CPP_TRADITIONAL(PFILE) (CPP_OPTIONS(PFILE)-> traditional) +#define CPP_PEDANTIC(PFILE) (CPP_OPTIONS (PFILE)->pedantic) +#define CPP_PRINT_DEPS(PFILE) (CPP_OPTIONS (PFILE)->print_deps) + +/* Name under which this program was invoked. */ + +extern char *progname; + +/* The structure of a node in the hash table. The hash table + has entries for all tokens defined by #define commands (type T_MACRO), + plus some special tokens like __LINE__ (these each have their own + type, and the appropriate code is run when that type of node is seen. + It does not contain control words like "#define", which are recognized + by a separate piece of code. */ + +/* different flavors of hash nodes --- also used in keyword table */ +enum node_type { + T_DEFINE = 1, /* the `#define' keyword */ + T_INCLUDE, /* the `#include' keyword */ + T_INCLUDE_NEXT, /* the `#include_next' keyword */ + T_IMPORT, /* the `#import' keyword */ + T_IFDEF, /* the `#ifdef' keyword */ + T_IFNDEF, /* the `#ifndef' keyword */ + T_IF, /* the `#if' keyword */ + T_ELSE, /* `#else' */ + T_PRAGMA, /* `#pragma' */ + T_ELIF, /* `#elif' */ + T_UNDEF, /* `#undef' */ + T_LINE, /* `#line' */ + T_ERROR, /* `#error' */ + T_WARNING, /* `#warning' */ + T_ENDIF, /* `#endif' */ + T_SCCS, /* `#sccs', used on system V. */ + T_IDENT, /* `#ident', used on system V. */ + T_ASSERT, /* `#assert', taken from system V. */ + T_UNASSERT, /* `#unassert', taken from system V. */ + T_SPECLINE, /* special symbol `__LINE__' */ + T_DATE, /* `__DATE__' */ + T_FILE, /* `__FILE__' */ + T_BASE_FILE, /* `__BASE_FILE__' */ + T_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */ + T_VERSION, /* `__VERSION__' */ + T_SIZE_TYPE, /* `__SIZE_TYPE__' */ + T_PTRDIFF_TYPE, /* `__PTRDIFF_TYPE__' */ + T_WCHAR_TYPE, /* `__WCHAR_TYPE__' */ + T_USER_LABEL_PREFIX_TYPE, /* `__USER_LABEL_PREFIX__' */ + T_REGISTER_PREFIX_TYPE, /* `__REGISTER_PREFIX__' */ + T_TIME, /* `__TIME__' */ + T_CONST, /* Constant value, used by `__STDC__' */ + T_MACRO, /* macro defined by `#define' */ + T_DISABLED, /* macro temporarily turned off for rescan */ + T_SPEC_DEFINED, /* special `defined' macro for use in #if statements */ + T_PCSTRING, /* precompiled string (hashval is KEYDEF *) */ + T_UNUSED /* Used for something not defined. */ +}; + +/* Structure allocated for every #define. For a simple replacement + such as + #define foo bar , + nargs = -1, the `pattern' list is null, and the expansion is just + the replacement text. Nargs = 0 means a functionlike macro with no args, + e.g., + #define getchar() getc (stdin) . + When there are args, the expansion is the replacement text with the + args squashed out, and the reflist is a list describing how to + build the output from the input: e.g., "3 chars, then the 1st arg, + then 9 chars, then the 3rd arg, then 0 chars, then the 2nd arg". + The chars here come from the expansion. Whatever is left of the + expansion after the last arg-occurrence is copied after that arg. + Note that the reflist can be arbitrarily long--- + its length depends on the number of times the arguments appear in + the replacement text, not how many args there are. Example: + #define f(x) x+x+x+x+x+x+x would have replacement text "++++++" and + pattern list + { (0, 1), (1, 1), (1, 1), ..., (1, 1), NULL } + where (x, y) means (nchars, argno). */ + +typedef struct reflist reflist; +struct reflist { + reflist *next; + char stringify; /* nonzero if this arg was preceded by a + * # operator. */ + char raw_before; /* Nonzero if a ## operator before arg. */ + char raw_after; /* Nonzero if a ## operator after arg. */ + char rest_args; /* Nonzero if this arg. absorbs the rest */ + int nchars; /* Number of literal chars to copy before + * this arg occurrence. */ + int argno; /* Number of arg to substitute (origin-0) */ +}; + +typedef struct definition DEFINITION; +struct definition { + int nargs; + int length; /* length of expansion string */ + int predefined; /* True if the macro was builtin or */ + /* came from the command line */ + unsigned char *expansion; + int line; /* Line number of definition */ + const char *file; /* File of definition */ + char rest_args; /* Nonzero if last arg. absorbs the rest */ + reflist *pattern; + union { + /* Names of macro args, concatenated in reverse order + * with comma-space between them. + * The only use of this is that we warn on redefinition + * if this differs between the old and new definitions. */ + unsigned char *argnames; + } args; +}; + +extern unsigned char is_idchar[256]; + +/* Stack of conditionals currently in progress + (including both successful and failing conditionals). */ + +struct if_stack { + struct if_stack *next; /* for chaining to the next stack frame */ + const char *fname; /* copied from input when frame is made */ + int lineno; /* similarly */ + int if_succeeded; /* true if a leg of this if-group + * has been passed through rescan */ + unsigned char *control_macro; /* For #ifndef at start of file, + * this is the macro name tested. */ + enum node_type type; /* type of last directive seen in this group */ +}; +typedef struct if_stack IF_STACK_FRAME; + +extern void cpp_buf_line_and_col(cpp_buffer *, long *, long *); +extern cpp_buffer *cpp_file_buffer(cpp_reader *); +extern void cpp_define(cpp_reader *, unsigned char *); + +extern void cpp_error(cpp_reader * pfile, const char *msg, ...); +extern void cpp_warning(cpp_reader * pfile, const char *msg, ...); +extern void cpp_pedwarn(cpp_reader * pfile, const char *msg, ...); +extern void cpp_fatal(const char *msg, ...); +extern void cpp_file_line_for_message(cpp_reader * pfile, + const char *filename, int line, + int column); +extern void cpp_perror_with_name(cpp_reader * pfile, const char *name); +extern void cpp_pfatal_with_name(cpp_reader * pfile, const char *name); +extern void cpp_message(cpp_reader * pfile, int is_error, + const char *msg, ...); +extern void cpp_message_v(cpp_reader * pfile, int is_error, + const char *msg, va_list args); + +extern void cpp_grow_buffer(cpp_reader * pfile, long n); +extern int cpp_parse_escape(cpp_reader * pfile, char **string_ptr); + +void cpp_print_containing_files(cpp_reader * pfile); +HOST_WIDE_INT cpp_parse_expr(cpp_reader * pfile); +void skip_rest_of_line(cpp_reader * pfile); +void init_parse_file(cpp_reader * pfile); +void init_parse_options(struct cpp_options *opts); +int push_parse_file(cpp_reader * pfile, const char *fname); +void cpp_finish(cpp_reader * pfile); +int cpp_read_check_assertion(cpp_reader * pfile); + +void *xmalloc(unsigned size); +void *xrealloc(void *old, unsigned size); +void *xcalloc(unsigned number, unsigned size); + +void using_file(const char *filename); + +#ifdef __EMX__ +#define PATH_SEPARATOR ';' +#endif diff --git a/src/bin/epp/cppmain.c b/src/bin/epp/cppmain.c new file mode 100644 index 0000000..ea0a0b2 --- /dev/null +++ b/src/bin/epp/cppmain.c @@ -0,0 +1,147 @@ +/* CPP main program, using CPP Library. + * Copyright (C) 1995 Free Software Foundation, Inc. + * Written by Per Bothner, 1994-95. + * Copyright (C) 2003-2011 Kim Woelders + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2, or (at your option) any + * later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + * + * In other words, you are welcome to use, share and improve this program. + * You are forbidden to forbid anyone else to use, share and improve + * what you give them. Help stamp out software-hoarding! */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#include "cpplib.h" + +#define EPP_DEBUG 0 + +cpp_reader parse_in; +cpp_options options; + +int +main(int argc, char **argv) +{ + char *p; + int i; + int argi = 1; /* Next argument to handle. */ + struct cpp_options *opts = &options; + enum cpp_token kind; +#if EPP_DEBUG + int got_text = 0; +#endif + + p = argv[0] + strlen(argv[0]); +#ifndef __EMX__ + while (p != argv[0] && p[-1] != '/') +#else + while (p != argv[0] && p[-1] != '/' && p[-1] != '\\') +#endif + --p; + progname = p; + + init_parse_file(&parse_in); + parse_in.data = opts; + + init_parse_options(opts); + + argi += cpp_handle_options(&parse_in, argc - argi, argv + argi); + if (argi < argc) + cpp_fatal("Invalid option `%s'", argv[argi]); + parse_in.show_column = 1; + + i = push_parse_file(&parse_in, opts->in_fname); + if (i != SUCCESS_EXIT_CODE) + return i; + + /* Now that we know the input file is valid, open the output. */ + + if (!opts->out_fname || !strcmp(opts->out_fname, "")) + opts->out_fname = "stdout"; + else if (!freopen(opts->out_fname, "w", stdout)) + cpp_pfatal_with_name(&parse_in, opts->out_fname); + + for (i = 0;; i++) + { + kind = cpp_get_token(&parse_in); +#if EPP_DEBUG + fprintf(stderr, "%03d: kind=%d len=%d out=%d text=%d\n", i, + kind, CPP_WRITTEN(&parse_in), !opts->no_output, got_text); +#endif + switch (kind) + { + case CPP_EOF: + goto done; + + case CPP_HSPACE: + continue; + + case CPP_VSPACE: + break; + + default: + case CPP_OTHER: + case CPP_NAME: + case CPP_NUMBER: + case CPP_CHAR: + case CPP_STRING: + case CPP_LPAREN: + case CPP_RPAREN: + case CPP_LBRACE: + case CPP_RBRACE: + case CPP_COMMA: + case CPP_SEMICOLON: + case CPP_3DOTS: +#if EPP_DEBUG + got_text = 1; +#endif + continue; + + case CPP_COMMENT: + case CPP_DIRECTIVE: + case CPP_POP: + continue; + } +#if EPP_DEBUG + fprintf(stderr, "'"); + fwrite(parse_in.token_buffer, 1, CPP_WRITTEN(&parse_in), stderr); + fprintf(stderr, "'\n"); +#endif + if (!opts->no_output) + { + size_t n; + + n = CPP_WRITTEN(&parse_in); + if (fwrite(parse_in.token_buffer, 1, n, stdout) != n) + exit(FATAL_EXIT_CODE); + } + parse_in.limit = parse_in.token_buffer; +#if EPP_DEBUG + got_text = 0; +#endif + } + + done: + cpp_finish(&parse_in); + + if (parse_in.errors) + exit(FATAL_EXIT_CODE); + exit(SUCCESS_EXIT_CODE); +} diff --git a/src/examples/Makefile.am b/src/examples/Makefile.am new file mode 100644 index 0000000..b83189e --- /dev/null +++ b/src/examples/Makefile.am @@ -0,0 +1,121 @@ +MAINTAINERCLEANFILES = Makefile.in + +EDJE_CC = @edje_cc@ +EDJE_CC_FLAGS_VERBOSE_0 = +EDJE_CC_FLAGS_VERBOSE_1 = -v +EDJE_CC_FLAGS = $(EDJE_CC_FLAGS_$(V)) -id $(srcdir) -fd $(srcdir) + +examplesdir = $(datadir)/$(PACKAGE)/examples + +if ENABLE_MULTISENSE +MULTISENSE_BIN_FILE = edje-multisense +MULTISENSE_C_FILE = edje-multisense.c +MULTISENSE_EDC_FILE = multisense.edc +SND_DIR = -sd $(srcdir) +endif + +#put here all EDCs one needs to the examples +EDCS = \ + basic.edc \ + swallow.edc \ + text.edc \ + table.edc \ + box.edc \ + drag.edc \ + edje_example.edc \ + embryo_custom_state.edc \ + embryo_pong.edc \ + embryo_run_program.edc \ + embryo_set_state.edc \ + embryo_set_text.edc \ + embryo_timer.edc \ + external_elm_anchorblock.edc \ + external_elm_button.edc \ + external_elm_check.edc \ + external_elm_panes.edc \ + external_emotion_elm.edc \ + toggle_using_filter.edc \ + signals-messages.edc \ + color-class.edc \ + perspective.edc \ + animations.edc \ + lua_script.edc \ + sigtest.edc \ + animations2.edc \ + basic2.edc \ + signalsBubble.edc \ + $(MULTISENSE_EDC_FILE) + +.edc.edj: + $(EDJE_CC) $(EDJE_CC_FLAGS) $(SND_DIR) $< $(builddir)/$(@F) + + +EDJS = $(EDCS:%.edc=%.edj) + +filesdir = $(datadir)/$(PACKAGE)/examples +files_DATA = \ + $(EDCS) \ + bubble.png \ + red.png \ + test.png \ + Vera.ttf \ + duck.wav \ + edje_example.c \ + edje-basic.c \ + edje-swallow.c \ + edje-text.c \ + edje-table.c \ + edje-box.c \ + edje-box2.c \ + edje-drag.c \ + edje-signals-messages.c \ + edje-color-class.c \ + edje-perspective.c \ + edje-animations.c \ + sigtest.c \ + animations2.c \ + edje-basic2.c \ + signals2.c \ + edje-swallow2.c \ + $(MULTISENSE_C_FILE) + +EXTRA_DIST = $(files_DATA) + +if BUILD_EXAMPLES + +AM_CPPFLAGS = \ +-I. \ +-I$(top_srcdir)/src/lib \ +-I$(top_srcdir)/src/lib/include \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \ +@EDJE_CFLAGS@ + +files_DATA += $(EDJS) + +examples_PROGRAMS = \ + edje-animations \ + edje-basic \ + edje-box \ + edje-box2 \ + edje-color-class \ + edje-drag\ + edje-perspective \ + edje-signals-messages \ + edje-swallow \ + edje-table \ + edje-text \ + sigtest \ + animations2 \ + edje-basic2 \ + signals2 \ + edje-swallow2 \ + $(MULTISENSE_BIN_FILE) + +LDADD = $(top_builddir)/src/lib/libedje.la @EDJE_LIBS@ + +endif + +clean-local: + rm -f *.edj diff --git a/src/examples/Vera.ttf b/src/examples/Vera.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58cd6b5e61eff273e920942e28041f8ddcf1e1b5 GIT binary patch literal 65932 zcmdSC33yaR)<0Zz>)zY@nsoN1vlF(2gndgBNFXdBLRb|{$O1t~ViMNKut@^41ca~) zQ2_xF5g81KJAw$z=m0v5IF5?TyfVl*%#1>E`Ty$P?kuP?@AEzX?|Ht@raQN5JzJe~ z>eQ*0P(p|UA0n}j9-EYM?BUx5gnU@tBt8%AS5MEcEGIg=C>@6H=IOH*6q~CC z{T}r<2zlZ+GYV(V?|v)FN(jCZ*RUBy`Guc8{>%qxpNoQ?Gf-g9(3fHUk@y}vV|LYi z!V;FBa=Wf%KNM%$>as^vz}P>v%JqH5@cBJ zeYP0Whxb`W@{IrV zKI=(XNTv7LM3Tdv_C8yj@y6=GW#tPhN~X`Ka(5_5bf+XIr@E&taHp44RaR9L<K-&}mU|3uRp}m6R9RFpx2UjdOB?t2qKbU?*!u4R!KooDG==toyl87Ct|QdcYbAM zSwTrY=5rU870j7kR9cl^#o;L~nN?Kj?!ZS>JGjS|6<5v6uPBO6R3U-jR+JUaDJW8h zDJ%g?N~X=JDpFzKGqiN*>@F!Sm^G)6Lo%lgcXGl||q^T9*J+FZ%aQ&2hxApcy9gl1`my-i)%@ zKZljGp?FS3DJBF((6O-0U0K%IT{&mk%%XxSUZT->)~vF59HD};(!vr>u*$xip}9aN ze_GkxA{7Tsc2y8s1fjI73XA}QIAEMFDrlMvXm#$&8TmkKT9KD-0HmbU&5K$wEh~j& zRJdoCRj3leVQPoCyJ|ssQE@&d>goflef{kG1$>6tWrZchC0y9@XH`M`@PJ|S3ky~3 zRXX#@%kwJ$^_*Gx6)O6LMU^GfOI4CX!Isa!Q-vy}`2`rHlK1dIRO!BNCQa%JHKOIu za{uB0-abA!T1NwTrLz{eOWKJ#Xi!naHLc1q{!r-#DLHR^OQZ;LSEKZScfz1C8SbpH?wm2B$7c=67~+l|G#1~ZJG&=jR8|K1Wx7XYj2S!(BM(Z?8kvs{unTbIMxpM}M$;}!(Zsedb z?woOBaz>BMz!*a?Y<5<5<`~S9F)9N{V4%UHb0&?+8agbuGdks>u(LaN%%C9|qXvx` z(V0UyI(Jyc7`NJ_E1<*}?u_xg^Vng7Mvio+XXTE~9g{I=6mN^B?xESEM{ydB%N{Z) zH*0jZJ3Rxa3`!r#3jrIbFnHvktWllaLk5i+G?b&`n}j#>qSHza-eG7)cE*@NBRjjt z=41@c;t!x>)|iaJfEF!5dr$(U7-{h6?6DaSj6(t1`KACvhGnRD0D(dHH&}&CML!$p z@^NxUj{!lvpiIabo6*@lXiU~v&XLS9qX91GCwg!k$AO+`nw9N^m-C31@w)cXfmXb? zmx@C&293mk5R&Ylw^ijUV}3zVIaXYyZ;@+CQdOv$7KM?*%G8trq0}0}B5u-w6p%#xO@Wh{Oj7YQ4K3Ux z9c`*eCEgXJh~$&mq%%shNGaNP#nT`%3okbr(=t}2`mG3kiqK~+J`2(E=i|7^c(p}7 z+Ktqvb5&t94rQsz|8jM-O79G17_|y@C8*`^>1sZC9~M;@lh07B_T%!yM=Vg=&4%o0qx(kStu@$Z;co$Ya#`U0JCJCS*)m47Dxth@ zp*kMNy$tP3FrJ2=8#TOS4(Q59;jmVrUZYPjp18blXgZ)=gRyl6E{B{8Rb(Feae3!6 zw$g-`l%u>1v&>Q9)ab;aDa6>?Dk%Yt=3opCzi$p74nLoPkIv~(0LbR3qi9r}hf?0V zOdZRO+7jTz%i3b(8^3iWbKEoz&QWQ|$M>L95A`hM^l&=1^)<*NV|Rl^(M(&wro6w;GCp zVFl>Rxx@L*d8N(BC52;Brs7?xQeq}r6rkSM#y1a_V~%ebB*Q1Q9CI#-oF|%uRbrd( zTcNq?Y@BY>(2i@tRz9?H%STr}A77{KH9{$R^0E1f;8bX(m~XwbQmw5XXxoot$k(^V zt!XM8ZRJg)2ruE||2j`Ot{exA|FhM<+IOzCe02JCj`KDPRK6Bt9u1?eKcm)v>d$pP zw@4Ze90E>zzNUSejl<8^9bc!KuG669bmf%w@xE1_wYA6Pjjwl&)^jil|JI5X@5{C9 zbkLwx%BQ0p$7qJPjQ8;AQjVbp32(1a_kJ4jn*WSbE5|hqS|yER>IOXjTL{|Eb3Z*= zG4;{EQe6|A=X?f^L0c~K)xdSDCX<}nZk6Vxpc~gOK03S6N-N^46lzQPd8(Whsxw9Zf^CdOPmRYu>iT-Pp}T#)Lp1z?w(C-}H6t-&TU*2Bimz#o zfd(&^1Wsq)x|@sIk~Y}+<}4!fRc>>vcJLE{S7 z_HK0rbC@`c+^%uSX)ph+P-@uyk{;)LnSpc$xqYbBtP-g)%pMyD_L44E8LW(Tn52+mFIK*9&Pb%3Eh`4;3F-n~y^_ z3g5OTH47t*Lofb~myW~V9JCvY zUK$*nejM6tw9UpCW7NMxQO_aJIHA#MFk0ncZr)-j;L25@;4^XTcuNjdF6sw?BD_DJ zb%a`~LB?sqxy)f{9fj|b_}m&Coc`mz<8c|__>aVk)0We5tU5ymN=Kng8&@0E4X8LK z9Bz#ovY4EY$mj&p_6b7V_Pjc%GOaGnlAi%}}%yg$c;Q>0ZI+G64xtvz>s zNjiMe#>e7(b`BTv`e5&*h3s{$OCxDsh_Jb9(#QYEteoQlS+KKGp=46RrHvIKUy~a=~Zx(X5sGd`=Ft4<0VfT*`cWXr&5Ye_Y1+Ok4{1 zH$DSjBV5Kfmw26TeQI;~_&84O>l>B#YcKs=%J@3+we$7+Pr5^+k#BB3b}Q~&S~)E> z2sxKEYW(+cTeW=#Y#g_io z-?r^qOF3ovZiw5j);$n!>$A^4-#c?mwMYeT*VYsEc_W%PsqK}xebnIR9uoK2HJ_0C zewvq}`5N3S*LK-_H=ylQeY+UGJLI;x{r;~KFmgYDL!r&(v;VDQ@x2$1WpK}d&&DaN zLBnU$sQI64?fpAOzEkDhYm;ziO+tQ0Sbd156^WzR_CrG0q!Vebk~a*jljM*10uc#{2< zrLt4v5Yb9LV;9*$@)c$gG5&c{NA{3vz~WEK$YP;d7=x0t(nYczuQJqMq`T-PKzEWZ zCs)W;CJMvIE_wxcohSby%UQ0l80Yn=LNVY!i?J@E|8`O-66p#x5=H2QGC+^Hrm3Id ztc!F-ecd99F>@~2BR9(ax){vDDYlQkLvP3%NdvjW9%7HOPv{CUM%*tBBXt@DSRSdv z*xPv@xtJ~h?)+8FM;GRadGsLptC**ohOyt}7-8mP!WdvwOitlFPqqW6esl#}1xR^q zIJu}BE+(NrM$jz+)`XO?9%Lq-s>xw;lyqU6NgYN~@s)c?|3c55;^)A*j;ld`H$iLSPa1_Ko_lu{cE_Ln6vuu{VgKID{$*wVRM>5W{UeV3U}b;b%x=Z8@1GbX zeXp>ao7vwsvm1BVcX!zTDD1C&*|+KJ8-;zH!oIpbR{Cl)yN-s}$FeWKNRqz1!@fvj zpDXMy3i~XD{n?*=x|v;5*e6c*r$y}QtL%>o`v}cHTEwng9x7c~#4ZnIm;MkcT~gQ| zLfMB3`#@p8SJ>|qc5ySia6Ur1ps@21?EMsWPGM(OIHWUS?A-u%T4C=f>}`d;rLZ>@ z_J+bsdldHUGgj%@6!wgjJzdBe(4=8A+pVx&Pno4%3VX`TcJ2t4b{4W7+wIbhV7A@P zwi(%0g>Bhvk+vvovxU{8Q~hSPX`@xz)PZfZvM2Ab4eMW(HYjX;-4tp4t8D!ev2Iu1l(pV+$3wKw|v66+F1`1>mI>UEi9#*NlH;zHxo-vGD*o6mSkdGyBMUdcGktfI;XHs z9pj`wX0$d3Fq6WJc4knR9?kR$)A=*Gkcp@iAptIiQl>Bg--RxW+8I$8 zZKQ=O*3wS@fB295e;UZ}zOV50lINl{%o-}lvR*SU|7oFkS6 z?#6rfawdwQ(xf9&*bx?|KO)A(eEw^dpLgjzB4?ueNOQ&z@2DAhLr^w$A|}8;UX0l? zhIE1HA;rpOu~^!Jye1t9@tDQCM7~S)(qcg*NvAL0=tk_9Z(P2S?B|Gb#6>xxibc{? z$wHgHQa0r+=iLPN7jO%0#35QdyJ>k9f!UsqY?9eo=Uf zfy$@3G;YWY8e7sZo%U9q9zzEzJ7zRYS3a5k^bF-)nwP7*PD_f}3gsxPRr2X>C4ake zbel4b?&9xlGq490k;GDHwE^;eI49Mx_;yIIW@ozf2^>2>A zJ}rO5zfFn;GYwpBl2tz90N2Y$l$*h1d+viHj@VRAqXv@2k9a+*WYHMbl_vCvpn;CA zv`6=zy?Ug&@Wq8fM+9~G%R1(;;%`8pV<76|g=2-Zz7+@CHKPB}bw?28Y5 z`O%jj6;>^L^z+3_tCdT%i_oRZG0z}M--|u8`Poy}@4giyLtpIJRaC~s9NT%|9UIaU zw_9dT9G`bZ8SN;YJQ1mr5_$CAm%2ph7BL~?F@_|-Tdw!?jJ3tZ$Hm(cViVHIljevg zyRHp-GFE=lyf)ssrbFz8?g>$$aRz2_Sq&Cjl%TYj3edG2G`^|sdT(X zb?VjKyHA`HHf(x)S$+Mo<@JlNz541WpS*hN6CuBT+2flwJ-&4F;-CH@TRwU9wLg7w z>f|-P?v~#BQc^%M14*VAJ)14mYOZlO9i|$i$?0?$YKXxV;L=f9UlS1E5-6iJ;Su4a z#y}z>!rhTVRD{FmXT-8(LH-UuqfRf#28W-YQJ?}NT9pvwLJeyDjOk93fyu-e!8*9C za)$)DKB!ZD!lu{_L2Imj#;zu-fpm4c608xdt1}_W>abx|Iz#Q<>`jp8%Qx(2G+scS zxk&Tne&+hWzJ`q3&u}S+hzEK_9GsCf32*nO-50z5XX}8Mw3JSYK59#$bc*Mw&Ll+} z62nLsjT8b+9Z5$T@9ayuJBOI2l1X&3ah!8<$mGaL$rES7^#S$K z+qy&=Oa`;wVNNi22ogdK!KPqyup`Vr%oPwGnUX*fXrdv;+0n0~e+O4mNb&xLl>AAIyRDxbc;|g?bPkm@78ZO z>@aONuTN=6Ig-+63YkLHB?lSnWuOCTuT)vk(U=4)jfp0FjjAg(H6?&A(->9k=noH$ zyWH^bzAUAhHuX!FPnu^;p@B_xGp;ZHyYjo5n&gx}H;&yqZo;l1CCmGnQB$iJx2OC zS&E&YAd28DHzqgQn-Wo7F4)ofOo_!K-XRhH{^7lLeQ* zGcYDz=+WKTOQ^0{wtPjy=K4)rWarn)z;C`$`hE2sJ@c2(=;<4PV-MgcQ{jk&mF95h zC^0!jKcrgQul2v(3Wr~6fYaqK=wf<0dvq7}V95H-4J(!}mz_71{-6Ct>HFPR^xbd1 zp>Jc<0m5+h4%VoHWP3W>EhZwG4LT9Vm~E3B=50o5-Qd)ljm#iB7-a(Sw}~c$zeRT1 zFZaKmat&{;{JD9w-@XjHefkCp@I9GIk}eJgSxShD>m|V_h{NV?8=c-)IZ~k<=}V_8 z+xpU+3YsH+_Vzo|&MUQa!TD+Lyj^gfE>LRE1G1}7x}QiQ^lgmCK@4=Kj!A+`B!NcR zr8nEJHNh5hdvqCpPbX6cOfB~TdPF(cVWCU&rTxv9;0ue*mk#oWgNS)hvg@9czC#pf z^I(se?IO!%c+SBjNCx{ZU(mSNE7b*)ee2SmrDK#s%A1sXI)(HzVX?3rHrH{S>=Z;w zMEf<~o;z2VxKIdf{z_QBhs(<+_&AI?(DoIwT;RiNqL_3e8DqzMa_N$ypdGoFE*w>* zwu{G~gixrp5Jp(Kup0s_5XzEHtAYgqRxN9bL4fWS^aq=NgpB?)o9o%ydtZumKFj3s zlN+3*!Mwq_Cdd$Gi(p}{&>*09n=gjz-0CFLXu)B3rl!Ez5fV~}!%nbn@hPm{`P5VR z_taB&sX_Vo-Mh-asX@w7E-DxBzDQH?>P}M|luD&WsZ}cJTDpKPq-#0WpW_C@WME?? zBRsBj)*uQE(o!91Fz6%YFgRY+1X`WuD>CUu%5CnH0x8uoP?v^DT^c4ZTQmE|Y|JJK zQ+h=?q#kjpoVN-c4)G~^pAK)@b5N`t);R3Wm4kfd&6s&Oun!}9Jqf`fp)4rO0kLsN zl9+CP+Of&f;J-mc1dP~WIgDX}b|#0z0AIfG=9{YRRpDtvWL1x=kh$QR1b9s@mT$Pa ztiwsTPjjS<6UR&AbqmFX(%jJ6U>%f7uowbQKdg$(mFI+1hE|0wBQ?RxLY9Rt3)@fj zhdQ7;JdeD2&LD%y$t|2wJ$$@=*Rxy4zFtvzZqnD(ypF|1o?idy4{>qtbW7P>_jvujdF7SW zvGK>;?hlVX_B^D%5PaVQi4&li*LcFIg;@w=mUO~Qx(4iCmKvzpNWx^jXoh~g+#i}r zHS5>8nrd-Z&%w(&r*hi_6g7|Pe*Nv~Xd)ePTr&xw*Lma#q6?s%NIdPtdeUq<+C17a zo)*(NbRk2n?e}7KY839HC0C{q#+~nE7f3pA@*_ zkmUAkicr}UK_c$6LHLeYQSM!6TzkQDPE8>$Y$Vz;j`QnN7Tny>d1B`~G*-E+d_VP_ z8I#|9l_zaB<>vqVUHPZmeZE`r@tr%5$HsGwR0pg!s~RbmO!UP1 z$;47)CJg~{Ls-CGdxLpZ^oFoCapq`4Sa5`27>kMwjf0AU3|?22)b*z8e0QOtAVbj9E}jBV5il_p{1&)Aut~%F>bEVqEZ5cJu7$bUWqp~jNCEuy-T)! zM<4l|O3JM-lxF27&7q+qcd&jZpLzP#SD$|7q_ChdHeUHb`F_F_<@@ixR{lp-antDD z2+phhkhmG(l}rjeL6SpY0&|GaG7|X2Bt~HtWF0n(r&W(2sf|wYdGZ0=4bZ8q!9_CP z3UW>qsLVp7KGHC0Iy*v+$U2A-I74G-)PDA6^B0$>(wr(?8GmP~gdHs-t3lt@Dt%+H z^Be4m3j%c$7f40FYX*$mMCFaoxyQ0(Ne?Klk!0K)o~y85jT zgr^NL#0sb4;NpQ{m#hB<=l=%6!6%Y+!_4>Vg*RS8VSJ}I4!@WO$rfgXH}-+P8_SiWrI#%0Sl2=8vMt=+z(rgr;y_t7OUfAGP}OOCpu&(vN0_S>siVb8{KxBh`L%^CiU07I@Uj&Jc4zs8Ng9YHT zYF{h=^vO%W>EO3R-VA*+?9K4EBTh%^4mwXc|LSCrm|m(@a{754Rg$VnNpw6_cS}GE zJEzY_?i>L*>3ek6UzEGl{ss0W4&^1~tC2hDK(8!CLQ1HGI>$dmZQp%O15|^!TX`@- z*y58Uj?*m&%{yWY_@yIZ9;>`u+y{q14Xgwq*a0=fts%sOy9Hcf+`5GS6h(|t&|CFY z)ZPXX=kbI0q1z=cC;PAwl4!7q`)}$Hs@rnCiQ9EQZ5Y*ixy1b!4Agwp=fhkjQ>9M; zfsDvYM`0%u8QqC%c>Iq*C0QanWhq?}5!{m4e)%~a6-cZY19?XL2dnb-4e$Pk@9=$l z8NRnS2rk-#N}t^QQPkg2B!S&hHYgj9(+~I24>=XC(md%C_KcSb7PwFHP7x@GB!&~= zG>G7hQb85*7Y?BKICm8G%>G*kvF=(SAMNQR?<8>An6wj+`{8rlQ12=$|;UN}-BpM^AB`ib?17}Hmh+mxj8XO&LDfuendq=** zPrCUp<@QbcMHF%8nD6DG3gT2%5J%#?s^Itn!$RXiw-!h9i@};p!~O~z`4;2J*Q5>G zFCBJZwD$b@ci-qed2*lB<+Db=oImxg>5ZQan>;ZoK`+aSLN{zLS~h-CkEz`zm1Yh; z)u;E{yGO1XKR&5Pu&aM}&Y4MB9oRP~I7YZVBu#EvcDopp~@uU)@zL7foQf5-Gg zAOG?B={x(?J-Ii{Gefy@r231zr(UX@T|)hzTKdzB$%~Y$TTdvBOP18E{LNB2=C#Z8 zk?IknmA92|h2Xkp_pDp9caJh`RMt=Ly?1BC$mPxMfX`lf$T%__@c$Nha0ASU9J42d?0iB+xe|r)q^pTlb%8R-ZIRIz&%&$ zFft=?2=Hi(I=HhkFEluqQO_&jSwr5cbnNJeD}^QIt-?08Sq#+t9c&C@7^0lQDdnaRr&NC>^!dZe=7(2ak*v+Z?C_mVbg{A& zE9o38=nY`3$9~fdyA=~m>Wzka=Tcg4d?C_d(hGjUkrJ_n1xUeRT@576DMoPx#FrCy zPx(UPZi4-0pX8&qXuytrpQgK89^zp2x#3b>(U>T@kq&wGsi&S*PSH-AHf-3Wm;~{g zJ4+s`->clZ+x)F?uKCm2)oWG=#md04ibu=$z4_9rXZ+pgx4!o$Xr4+$uo9pHf=N$L zh~;VPVPn06K1~jbSpJSRA-Z4-N%psga1gzQh{N`;o5{y)p^>2iz~g?2*B9y8%LNhk zIVMs<@i)uv5#<)OQ?l%v;+cPYTzNrRNNecWn!icYt~@+dIjj6pxvHF<`tYS;!{}}b zKG5AmAvd6+bi_-=t{xYuH-LV2yo_vbv++F2BRBDqQ~hSU3>xNLLC|=j}NVxO<266HdEVyW6rV3&E-N)^O5)Yn8OY> z_u_sV=OXu(!bu;Gn@FLwo`u%yoliRsyXvhQ^lKsn66WYGrUnI@>~OGeG+l4P6nwJ` zZYq~m6&9yP7NA{6YC$oQAp7Po-;TkH5ZNcmYQvMufM+ zq}~Qx@Yl!+^npC0E(kXr%~7d}-7%so>gmV1_k};d|9*2cuy5We6yE8?Daw#d$H5dvapi9M`O5nGZaEi_gq?M7hC50jjGA4A{iMCiTEO0hbk z3EqUCNg%p<=?GbBmh^HTAF$U|9}}(#Hvzs`%<3#={DOd2-CL3^9!riT&r)aEZBb{j z%icZXx%V%AIV!ED6jN?gez<*b^V?orq?y3QNWS-U&^zF{=o~VPKX=7d-I=b36T--g z1{qFY(o>^pv{mhYFd} zVEs5@x-eImCoLCNN_F~8!Vdj6f(zPGGRUDUSSLX@>w;JZsgvAM*Hi2%^^|+)lFfsd zN6e5svPb7JPh)x5LrmArlgiDj*=lK>T&JruZ)Z=*Pw9@c-|F6F@9I8gAL+hje-*!# z{zv{d`%(Hy?mXpDGUZWlfJR|=iL)+ndKVR&Ls^LOujW+F?^VLQ=3z}=3cqje=B1Lz zsU*R7H1j1Y(lFMSh&-^f2g+(26QGawNtu zlQ%rwnM0@72@Wdg`5z`2j0PAfqaod>6PO<4)|+6Ba5gF#gp1)c~UkfwqIUPd}l1)`En zbwZffQwJQmMp7l5>- z&!iCft9O!mE%Fy^OJ%_>JCFRSVQ^pMk8g{y*~e#srpeS#mT*mJrtI1^N|k%pXkR*C zS*e^+-sMqQX{6Gqe5HJ?G}2)-goe^#dz1&2T?+O)bPt_|*IvygiEBYIJ^!5$PY~=8 zH%m^tQIE4|Sfw-vH%tBi2dYaG2{j7nG1**^t~A%ft`}VrH|O495v({uVqz!oi*8ib zZr{FE=}q6e%i+7Lye}m+|NhC^nkV;t`N^kWH1Fq>P=54MBAkrzbVOv+M$Hzpm0B$3 zbX$a3B~1{5qLv6ts12TOaHvWkRo`&s zoYKHeU4We2PN3EvIW)lf^F(kdO<(9oB_dG?4xmnS5f}9r0$8Ak{Rxc|;#qLMYxhye!r@l#vQJ4ck8J7X&d1#xM&?BjHbv? z9f=MNwsz44`$u=c<_s(1IyPl0U0~(C=dNd3)KlB@YY@iEO_6)x zWqBmM{W9WYP&>D^YzZSb;y+82@FRvuVuu2W)Y*|TQEu36FihcT37j{w_uBE0@5Xa}j)oR?G#DgK6 z#Od44M*7wH?e=5bx@bE&Xf%Z7uxO5+Km5+yhtDgYL9u+Ldce0_=&z<5R`H2!HF+mp<0_9 zJ(u=rgmq*?#i7zlzYrpZNF5R4jTaKdL@7>o>w6QNehB@={!%X) zS14$PkR@i}*O(@e@p7?HB9=%C$y{ub7KjU^Ir0)c&gbMrtcEC>YQXMD7~Xv561__Q z^oQoN(BXmNU%3~BYXL;J57ai(YEPCFB1^EUVu;beLXgNI;7ka495Oe&SoxCI@WOYZ z4*dL7x)E-U40~kKn@vW8Udvc9>4?RC*_*F|B$Zz_xh*?E%@RY%iE4p=kOf&1kk>t5atqH`e3u&>K3CUx9rxr^)ZH6W1PutbzA!jeOV7NRZ7

B-* zC^QzD=7A5@!hAMQtdbVU3v~1J<@)*N#pcD<8ljf06jwpfN)(KwZpZzF^0u2a0p-|!ObcW!}m_*E{=TZbfN8XRDk9()43 z^bP|YgmykD6|i~dJ`>KjIO|O5Cb*~wU%^FHpFlKXG(&K&oz_fa8y~g3ucYqeTf%SN z{1Bc(gOdw2D+D^=XD)Ul1RKt5us+a~pieM$7kcY^nnvg+N)PIbg-7)Bgn6bKVTn*H zt=6wFZ4%ZCTcoG-n@yqcQkY(+GawWI=Qhw_x5U#9LL!ToI_MG%i6*zD2jN~o=NqTVAwyT6x1cLziBqm2}Qk#f_k%@{ls=PlC&v=#|>^ zqfp(vf`vn4HbG;4gEgfmn>-!7yMh)DKqff{^y%D@L)L=mk)TU;2341;ak^hu8^p-f zMt@207kUWELNcT^Q}75L$)kTjctCnUUnD#(Y!vJPG=xPO<7p!6MSC-k5&L#FpOqVT z8~N!FQzZ@BSG<(Jc``@lvoS78Pzkp`_uJ29xQTQkS-A(w&s@((;Fma(i2kv z3(?z6Nv0mGk3P*blnvL9HjQJG^u?@1UuK%e=Ia-mcAEk?XK+3NJJN$jRf_dZIqdA+ z0qjWAbm_|WyJZKriyJs5Ja=LuGSqZrtj8uEkdF!n$V=GFv%y4<6Z{K2_R9kmEdfy^ z_@NuP#Uk}!7=FXv9km8sKhZKgGE_QSnPj|$9;S#*su^0-{f}qemoF9!2Y?1 zP^L`${(IT~$3NG}B8T-V+m9>9kL6!KYIHDj2H!2_{UBOk>`|Q z%CK_+groTqU9HSPQUfIZh7vCND~GVVxBZqJfK?RjJo<7OWCedj|GR%w4%O9hYz~UI zgjI4eT6Xgo=rQuL$c9j)GH@io1#g@d$z?#{{&)aifwYWjcN16f+R&pRvK4EpZYa&mEorr04tO+!eKo(>%=uMGK@1GG5dR@2-+oXvu zeC{U1Sy-f$cxB}%yZ{Ol}D6Emb=TNmP9OxT;g65 z71Z`DaRBWFHnoJBquRyZh1Wkjw6tv7iN?mXQ!5XhZ@x=~=eFb>&nS<}K77x+HXc zXhSI9ytTN-JPyx;o$9U$@mTgv_ER}8pE>h#&QsZ=_D*SrgV%-1fs|Bi({63DFBf9ZpjQrxyHQ9u(84 zb-Eq3cwkIrrk3y$(DpomJ=56O_oc_q-@AAIv6q_9f^7TugLLe;F!iS!`wR2w5UR&( zNWS9ol84cfS8g#Js!WJsBZ5Z5d%I zh^N(4AWl5(X#2K$Wba8#3oj3E2>&4bR=AW#(rB8H=1L2dI_r}3NrukGGEzp%gfdrI zsA0;ZoWN0PT19Ih89P!PBFs1f5f?WdHD7#X=GkclA3UPmR?gDIrZ1?jQP{h3`w6Qs zb@J_SdZhAmXW_>q1*2$^^5KaiM-IOx`)|vcQBc>E#6GOce)V~k z2g-PHGI(G@w##swA(+Dr&Kkdf6E=1tKBh6@l;MQ!wUF@mV4^n-IxB7~zS_RQY;O?&rls^8nFD0lJ?J@CM; zF~2?5=jdanv=1?6LYoCr+flJm;-5!k*@bgk8ILy}qZpR`ze+RaE#rr{7y(`U1?$&!szI zSNXd55;=u)X}w4?Th65sx5fJAdqyqI9_yP&fcY`?TaEZn%)8ql`~MZ=-TOotua0LT zHZsH$W)gJ7`np+HE4@ZenP0N&?UFp&LiJ{nX;+V|uS3a0k$?~UjFdA06FEGN97mp` z+@Ve6?+XHJ6F&Rf%x)zk)mhhk^ybd|ZE}adLZUbYcLEb5tWV;v$AV9hExur|o@BNU z24DB>kocK!yI`rx3ev}gX}r!xb9uuN4kHrTkPNBEir^gc6neI zZXpj&o;)GMeb;Z%=vT-VfdZSBIKIbX_r~kX zrCSJ5s_X)*WdEP=d&DZObm3Sv(PXkGUUnLSY(x&%xy-fUZq^ujD%h?g4x3&t=Q#AX zoUkC6q8Mndl%^)c>r~IUfB);Z)i5p>L62W@Y)))>?E2USyxxfYEcRZk0Wzsdp{uQA zwu-1r6Vb$sHl+eR?MsSYg*QJKlJ< zxmL_OJbl_@UJS%SVBm+-xOVI1)Gx0WZa&rZaxBmFdnB0Ow_?2D{OXFq#C*YMI)9F; zZvvrj{Nxi(a>Crm^DCXU2bj~9abJF=CnhbpnpDe+b&K_jvDaB_sx~jSEVeGTEw(Rq zR684jZv{I5O`DXPc4?TEn+`o+zwywajkl;%xq0jF%JR!NLdJLL> z@s|i31n`{QRFyP5Jru4*JC~#K#EBNqLg?*tH}*FlmW>D7_!jg#pUDLETC}wao6qlQ zw5h%nT|I@~n`(T6X(+;+_=KDUKj4*MM&x8w=Eq1+cV`Gc=(|ov%Q7=6B z)4#kj#fF1&4wCHgmk~X2;JT%?(QryP>kVR# zMKseJ#DovFO7yRBtqS5kSR8yXUlempsNSm6`$uPV;80y|7sZ5Ah772G-sFo@-3e+@ zO!bq;cM|yKb#|CB%oJws3fH2usk6DCp`Wpzsh`>8CTb@WT}PjYn(=n&B% zGSQtF6`N3FtTEM?Yb;IzdI^GTlugXcEX>Mm%+7*Y2n%IlxK5Rjl$e(IaN^>`C5h`3 z8xn6N24R!EnLb|&DiSf{gYR%nzkwJ^xl8}aq>H}iqGUPTT}GB z=lQLF`CaibG3{`N4!OCWtSD>8ZL4-3kBND`M~_JljL3md zcoYiWXdc3CPEW%9u?`uz1=iaodL%ppG!Q^5Ueb>{rB!F8#- z!=EKFt{aBHAP))hP|^lrkD%xC8<0uD4-!IHh!~H6Y9dP%-TEG+2kp!HiU^<}%$LQo z#7t?J?9q=W&Bp;PJ9ca(?jhKjBw-PoFD?Sp7t0HEixD|oU|4LZ zHqJFIGS~7Gc^q!>6=H1qPWFOrl>|xJ~&r1j71G?w+d(1Cd ze=EGiUK8=#0fslMr-gUe1@V1pfhs7WG!_47jETmKZ~XeJt6zWBsC;tu?>}6H$ZTda z`TK4I+uSr0#O{YRhhKm|D0i|aQ{utfK#8aPI%<^^8cgAuMz7J_a?nJC?P`-n)}1Q5HNqf2SdgMV8ZEv zPgJ%VMbQ`{x{UG00b)1fIB|k*qOsUGmo60N>Z*)u#bw5A;%;$^?n&c%<34&od{Nx1 zd)C-s3`3ww!cm0@L4C<(2r==HaGaqd0>X%zvtCkn9S`FtTe4WDlwlZd@>p<8LMI86 z*aT_3JV`fRKi)9Olw&Eg%%_VjJLo3e^K_5yh~@W|&n)*WNnnXV;1ORnEH4%+kI;ix zm6OWJtMp~1;wnv~iDF*!XU%WXMrD{VTnJDer97540GEgXk6jfGjY_V z2B%u0tgS~%>S+qjiBr^j1e_;&l@oS#`P$)?wJcwi6Zj5jQSRf!E!=EIDpwZvtZw|4B*b+!A zOt@QgONmH^h%?5TV$BJbj@FJgx1$&IEkf2}veety)6~=4+tSC{$Cm6EL_8D$Y^0}n zyvsG+kYOBZ$+BkIJdRxQ0DV9h$8y9RaBUp8Ho-6fOLm-jl68_T$5Bj+g&D>YYl$t- zQLUeEoo`!3o-nL1tuU{$tg^1MZ8OxH>do7&+iiPHd(6*UpSK-x{NC}I5)v$PqHwFKf!s7g%2QJcLMcf}2$4XJ}@8MQEX5*(|-W;WL zu2kcNp+c5UGU;umAQr0cq<5QoB1oQW;xx=qX*gIv0ip7TO?fm=C}w$Lo-_^N@+GDh zO`%-Pv;@o_Wiy*c3dfoj3CEg?#Jv4YpKRREkOM}EauheT{gH9J%+o#C<}%4~h7h|e z+$6c97%?3%AiVpg!F9mzr8u*}D8&W@lW?QtC-@V0@L;1&io>lu9-)DA15cH2t@#^! zZCrBYn{7CU{KmGgvL)<}{9|AY{qDv1C`|PfiMv1p;QniT!c$MxEke9TO|QhCfK)MX z;7#wn7JNY`L2Zc(L53drIm$S=}GE%efc z(?xZG?$6Igxf;*jV~Ot{FGEtZeeQHJNEYJvVFJz=7*# zJ@-@E>*MQw+_^3^c->P!uA5M|@zY!Nm338HzW;O+_;QtALI!;|w1TXq5EU9aG02VBL<69@0+~m^5(I*rTH}`m2v4$-R5fR>)P>WeZR<;0lhd zDI=%o9Pm)9nT=?il|+&Ao?NrTVh#-pwK~E=Bk&G)goTA#98tC?v%_k(*`nMITT~?f zo^B4cSq$tgmm#9wVp!)6iwF-3az{p4oU#?$!ca0kD9k30cZNkpa|?MR#eVrF4h`_~ z2{8{t_W$~$o2cNpw;uTWPEEZ59sJQsuoH6Q7-NdZ9b&FD?=bU>v(TKFVoQm2j-}eV zAZ$VST=(3lB{60!*tR=ghO|4L+TptvqvboZ+(~Jk2@})OCT&%22~o<#0RwkeRy>{7 zU+~xRpXJGElO_yGn>bPV2NI#P6DzYS8=kJnoSS%OwVDzQ%2q0Kc#bhBi-ZqOS@J2x zu?}i@F6?UEBdF=1)j+g&(K%X;l&YJGnr_}2i70A~nh~b*DaBjEXo6a!W_GAGy?r(0 zrdp$(;vkD5f#)OOKOI?%p9tg-{JduHuhx9rt_C+tTSi;guBKO;nm@L!K^A{&pKIQl zN0mAJbOJS*Uf4dxFJW=m)JVJv^{^JGSN}@QVDf7 zQAYz;@E_+7e)Y>sgZ4Fpf3@c0b~PLV-)QUF)o=)WHGlNhsQX(L0@z?L1o#~@K=AXL z!TcA_ezE4`b~PLV-)QT24K!V!d;J*lW1veCkOM8AFycofn?mt4ylnqCe4gBW-l!vz6eO8>Z4Fo6eusLjinkN}T+#ZMg zj_Wje$GjobFxmMan;aCXUSxq9y^YMKc30u>0~&$+1{@DtVDSqir?fODr?hOeXKtsi zT~E~19&41!%5p}}o;`YW`Ori18U&^Va!5IgT=uOv+l?X*cslt7_!FC% znshiYGTCcvE6peT1578vBf}a4)9q16xb31!EQvCt~gnb+L>=Eq4R}P_>tA-6)HLCdU z{6_cRi)q%XmirWhpe# zG|(@U&;>V*%Z9NZf>v=i@~G|GNZ~^94OVm%{33iwJ z<1&z%NDmXLUVREvT@L*2h1cac#&Ze7 z5V|x)-Z*>qqi+Xnk&YctOx$t#<2ohj;6eIf-AyX}Ba+kqp?d@H`-D6@b|Bf{>7SI` z5&yTk@Z_GNCE%{*vX?KfqgE#khOi{ zgiU>mAN@4=qa{-w?APzTeOcSs{;rd|j$BdO<-x8aRtg*UBqZbvom^?t&)Z%!c})+$DV)wu|w|s1V zs(uI_a}wF^N$!#mWfoZ(w z&(kv_eQ;XJxnarY`V1fZzPZo)&dL_?J_sOqu%7 z)Gr_3N_Dem&zd!Rw(`@~t;$c@Gu17st}dN0vG~a0lDwe7T~{4i+AphT`VOgh>eQ)U zEnE8K)Ts|YJax(!%U66kW$M)FrRaTU`&Q-d?AfJwrqb5!RK~M1O}Q~}#K^Si^A?OR zcj!lDefD8qsxO@$=rE_yOk!_PsFZ{n&2jle=FS`hL(k@?PvYbFcg%1Cpn9 zG{{4y;^wGxI5K+Fi;D z1)ob_mR|qd^E*5X(+980{Nvrbf6Q7bUHmnYO#dYU{&Q)R`^BerAC8P(93FQ2gAacQ zgWjbHY@?is^=`(A|3FU^#ie+o=(HlZc+LWYj+6;$8Z%5YSqf~^{0bZ{HTmu`bgP-F7Q!R*Z%lE^L{@wc|+a_353Li5CTC)L<^{hC8O==)e2QFYBg{zy;UlYO#a{Xotf~^d++alKL3GPIdjh5 zXYak%+H0-7_TFn(NRTxz_{h&mXT*~OALL_}P8G?u)bN#lTw=YGu4layW!L|<-bws{y0zix&Yxqs(?g<9 z-ZNgUFGeg^nKyr2R%5?wP=B^))0J^Lg4Z3v5DYR5)=7mdq!Kq!ES$upYqF^U&#&0L z=7kh`Bfhg_Ok8`{ypR@qNacYEsf5eOI}JXDX;}EWNL!>^WL#vj+^S(}UgGcRroR1l zbotwFn>=s5^_IxU4^$C$ejml`#O1+Uc)0Ysy$0;|cI^>YuBo z`=@8l?XyBH_1}|O-^UJJWW}xp*~fz5aH4J$rkzsE*euOx87b8%W{788W0uZbWO${k z^75x|!>*vBqqjUW%P{fW*5H-0MQG8h zuLiG_JwuCL8?kYwX4x$JTduoi*Q7URMNe_x&^6cWnh3ldRY#3`^{Xf( zu)@!kpK1uWi*f=P?woQ5e)&u#zTV|AC%No55W@q;rJ#cTEO2JTWAc~-mVh;26OU=SC(E1V%krlur3ccJ^L6?9e0Wc@ zu{1s3l8=cE@tu}<%DiR1G6Ya7!K7%Ft_sW4vGCVaZmzOaS*vV=U4z|&J;S`ie8c>M zlLiL{Ctn3$;8k&d>Q$Dj;7=Xx8toqKx!!xd?|T2}q|t%V$rH9^y^#Gv&I`FO6uwaO zLZ5BL=)AITCZ+<#X%n*qI3ozNp+~;MT7;C34M+4px$ME4W~{tt(zplqT=u~DnN7HQ zu=(m=PJL)6A_x6^uY2jjho}?fzEn{e3sN-THtJ5r4fi{aAaS>6~dZ&M@oKNHYkPiWBTEGIS9u7b+Ga6kn0- z-!rSh$qWwF(l}I0!wS*3KfKR_?q>IM?#=F(-Nqu!G8DOrJ$<}=eATWR&uYg*zUQ33 zcC~t1ye@H~$;v)ximDy#&sA3M}7#@w@5s6OIHs2K8rdgtIyskB9%XdZpi0hYc z!bbFPv_=azRQ{p?duK-IUh8_L;TM&Hp%7+yKEo^kj%W!MAY6bx*`&8R^qS9YTAi6J zQ|{{bIcZj(OuJ{vygMTZVD*L=_gGniNSi0P&w@*XUdhUxmb*6>%l|H#f@jZ*EnzKW zT*Ja5Z|K#BS3mLOt9b?1?9Ad(c~^~dSFEd>`B+JGg2~o3a@`ZpKd*cA+%vT`cE=Mb z$z#S|fBl#-UGE8h&F=oYez&m{{@Y?z7fe${Io1qQQNV{I-X4U<7 z^~<`vF8US%SG*X#`u$(MscE--d{<*My7#UIxFkW7wCKIq4YM1P{MKNS&EU`(&Dav| zupwA7Vj`Ikt}hmv!h6-Ln z)HGP{vOlJK3^!MrM0rUF0qo>OFS2UYhR$Y-Jf)yG_)d8e;z#Bm)UiJtlpR%{Hr@XS$&ZEzWZ>hqjyGnT55_Z--lp~ zIzwJ^z?hrmbL9DE8}qXAVW-HZOHfeMcp_3F_V3G@Wq1KELmUL^L7pq^e z7(kzrlpOG4K$V%AndZ&wBb_o2YfZ@m1FI29CdMe$j8iPyCl6{S$FTa9Ic|4ZwYPsk z@7~qv_bdS%h(}UF|gB&KSXP(Po@cw?!^)p5c z%_(==Y|%5i7w)Xl>9yBxx?!?S4Qg9TzYClT-Ti~eeD%F|gLGUZBkJmKMaA#`n zJZA}-fRSBA1;YsnslioWe=1uV_I&l97~;vy1Xuus7VgFLR#ne{4a=R;y!aFi7H!CY zS!{r+wYnF&#_B>(_G`X%HF%&&HkZoY=iFAXmHW6 z5vv!ke%Nr!ExEZ(nVBz~yz=_sbdHq&&+wEJo zuGLCj#gf&BqxVMN{$uogM6%S&oQHWK*65iK;rVh+AH1@tv|y;qsRpzZBtIB<$fsId zgMB+P)A~PHy0b*T!_{uS%=T(l+9L(S22>ZC+^V2D(_H8dD2sDwp~YQVZOOfA7{tsw zhtAa^0w&rMpTHuc>=AXe=hJft-wJktNbq21g?JdH;pM?q<$cThm6w+HFE1-E5B3fA z3zi1^2g`!xWBZQnH@0+a|FLCb%OB|bK>5mGb8vI;h2S58`+^_i-^pMvcp6Q^oWoqh z+{VN^68RH(vAw{w(7DjH&^@i+w9;w)riZp*?(nOFK#=aHENCp z*Mno0hU!JiQF`XZTV?bKh8e1vUeSKN=I1+HBSs(k(SK+bY*Tn=`|LkWpT2MIZ@#^5 z)ccS9{=kJBX?}e8AF)j~x+i3Rf>u6xYV_!t$-DkkRfXLP%kN#bto`}(J8PyzQ{%gC zK)I3K&lolsUW<>zJ`L9P?N^x9EB!m;upNcY9qF%rXB>u6STD0L?}lQJFXbv3hk@lP z;$sXUM_e(3QeRy(4vWpFmj@U1(T0^yN}7;4zSo58xq+EEIBUkxWNf-%9dMJQ!C4<@ zNN>t$%53V@)VnFGDZ3%3DYq%FDZi3VX`zhY#`l`sXO5cbpMf!4 zy}FBIxHY|>OkJPxGg&U;OF%yVn;NA3r#9 zLI0m!*Kx0gmBy6=p1=O3>)u=@tB(g%K0gMw4I(}2e+PRt8*1ypU|DuLHny756sI>- z&i#3gC;gA)ttv3(rX^dAno7?_r~)lFGp7)N36l{i?ZhF*c49{dj$<|&P#pa;dIE3` z`yRHB2ab@$;y5haxODnGXuk`aeeW{eWxglVD1MMwjI_9d<3=P=9uiAU!mc8)TBY{& z>(!Gd53am_{+Mmkrv72ps~?Y=G_kx8;k5R=^_F48h8aJ+dE)m*P8+DX5S{O$QxocV zYJzT+!GaL5dbBbYnU4!hzy2RiO+drqI|dWy99+8cq~}}(O%|f&dHt1sox-^afoGBo z??n;c=P_+Y^cSLOKhUzUMqnz&zbQeRVS^4q@={=WA@C{v^m|04iy@BD$Ma{O(@(|X zsV61h(C+t)X{JVu!%Bjw*hP+m4`9aV6n2#J3X(*|t?L?sw`WBsAeclFtfz;AK@23_4sTlTG}*0g zFnfFVP8*))Kw$UYTDq;p;(yrpd2)+edsuyLXvz7RJJXWiyBCZrhaI)DDIbifSS|Kc zAjF*X!c*demVSwEVg!>?A-gzWSe+lfTxwUvXPC@9oIz)j&Jl}NTMfp@@pFi6)D@2H zH*HB;EvCTUXd3+5&cV~m2HakD`~2KB-)bqt^56Vf6?E&fy)x^66pcLA^+5F4!9enJ zIXP>d)3rUOjo$u-PsWuvgylp1*RcDCU~gSk|E!u4RhsLU6&$@wHe6P-As5Ry92@+# zy;Z5Z7Q?ijScu|Fqz{NbGaFZjOlZ+9 zd}+*8L*N)R4ZZdzxisoBH$7Eihnv}$Kg@F&>YmV-B(W&|oUH|x4 zcjcM&*nPjp=sq(HZ{DaLH54E&CSuA$;*8RNA#tC+i0$zH0#(JTW6TVhY+vAD4(k^d zt3&?StWLAj@`c B$Rw4SzSQ=Ui5YQD@exg+`lsp<{syr;k8E%leX-35St!f~_w0 zE+oQ7#)2sDcnf$J5l7M=`(r4OGbW;a^J0GtdAqP3@9SOKGvl;pdM;&LxEn1QdA=o% zFL3gR&1(MwQI(uuV8y5dO~9H_;}?j@pw}6`z#eAP7wA<+G+EQsa0lW|u_X?RW>l7i zHnX-+uNI*twdXLfj~h=sP9@P2S+scGFOg_LqD2UZDecg-g4mzk+TmzlH020fO#yvM<9Eh0h*iLr84cnyC5N%zvrpX`>Y%TJrOgttP z<>IVPeDyy)bV%27`0$yw!-u2%$Qpv!+9Fv2lUQ|Rl2u1NPha(E z1*}vu$_g0Z8*3&k4(KWmJQ+iRS@1N&&#YFZikI1%idaPfxR<@~G6&L}4C)65GdKd> zFSb{J27$y+Pk4(1ITHRy<)q}r{#KgLB%<1#eJ^@_^a^d4_TsEn(OnWoUb_M=Qzhg(TzmI;0r9HPG>(w;> zBLhq-IrlQF8zDBXxy)z1p|3CVssS)rWGgjo%$Opjafx+P3DXj+T^=kLR&`s|qN+_* zd#mZQ=es>BY}1@jlo zPwZ`4c;~!D(W9#qd!IyODeX&x(k%zZJg*>}z?YbQD0`D5`Ev2$5)vrQVG^Lrbup7)PrwzOV&qegm zyE3=~^Oi#)c4E$hDCR`5rXF~dAC)+(S$I0R+~A^q+#YH4KwMm zf!^^P`Ramq^8^C)3`FwP)cJQC4>OkU?-CJx@ouaPlzOKI?P{Zb6$0a;wov-#7!?>J zrdTy&6^vI+Ftb%3)!s|w#5o9(Q(G+NLhKj>$r&r&AjKOGKNa1r4U^H)2kNJoOInC4 z>E*@2B-N=ibsBV*4F;P77Tyx9zC@FFD1+d7&pAXVmp+5OE?YUpd87O26h2*N#2sr` zcq;1qMt6mHg-y{s{Z}SgQ;2{~K`%tP1@Zf0@l6p?1wNaE8N!v=RB zyol1GYr2o={>+hc-=H6>$r1exM*``G>mE_-44@k7fu?=>X~O0Ziv#9{%omn!J~w5v z@#N`$iF}``#u;8SY=!kxrtXKPvStJfrM*>ArY@(K!&jPQx9RB)uu+h6lkOhy&!aS z+_Jn_arP+69u0Y+UKHA6PrYF@EZ+ch%`bv|>`AF+>_+pfcBQ_a{G#h;R`r@u!+fV9 z86IkPlEGq0Q8v@H2(kbpP*!lu@(Peubmiw2UtvW`+}7>!7N*l%n6A>}-a-r}xHK8R z(PZ3D%oL}4l07L11ej(h&lsDr(!J8N65$&5W&9(KZY@KMa8W2CgYkkeBGb)=! zZ_#Y9WIUSBb#1aVG1kKK4V3m>6i6VMtxHzPm$VMQQ6TOoTIVfK8Jn`ww$i>bWpm2D zlz*gPDvbl3OT!9apNQHK-F`l@fb5GlHe4KA;QR_inJdrsnRY0TWrq#=#$|J?()}^X zttNS$Sc_Xe7y&n7Cs#LUyk$kIPW2IAK2UnvFFXvhvTagWrZTw zDryTqicZm0FdMH^K4Aw-4+=IPu_)UBz~R^v{JWEKcD%i@u-#VcTgXhshcj=N;2UV ze^KmpI_kRUOi>Q8m&TP6Kf$?RQGjexN_{*A_&QeLwjN| zG-UWkvB!BGm^uiH3tJ~PEWAWE%N{6+h;++^>+&v$nRPAs3g_G>=1?xMXf8TL?E;@@ z4g|jcf^=9g8FN}+;xDy)ee?9`7ap#5`mXqKYK8(Hu9i4zZEO7SwN3HE*mU1>+SJrO^j?Y#9o{{kD?9Ji5UE6e3cpSbQb$5)nr*Wxx@lt=Vs zB9H$3YV=Fisl$Y#mHrGwVHQ`g_luWf=q{5d-BCQ5W|kTxo|t1#Fs@U&iPX!9C;Ir4 zArR&}FM69P{v>Ae%Qzun^Bdx;-eXUsoWv9JMNclwV~RhCt(2E1iIwt(_)7WM6M0+W ziTR=@7v?d^6ZFyDsP%HpSL#*vcC|~VT@Cbb)@mxf{Wl1WwL zY)_-CU&7H`cVi$OTP_LrWKV4U*cwwa#pVTDb}RjPML6gBl_$PgyKUQAS;+LwH+b_a z#$Ni-rfSR!+!4%IKC{bi(0pdM-Qarz#~8g4u>WT!4jEA9z=Y&`vG41iOs&0Lqa#U?dLDzvM!DwFz>hT5N*wYd8gBFNNdr(i7ZJSdRxUw)^tZvxEGV z7q&KhkNx(WCroqRW81iH-A2>MYpxl6?PJZ&SgE$&I6^m*Ys>ltt-5#BpAA@77MJ>o zR-poy2IZnBZv8v&m^|-@)$x_#6TJ_SEM-N_Z9y-#*8G=sxBH)|YJy`KHqxX*FMKU} zL?W9fFcqU&Dmf<=>kfMMD#{AB#Icho`a3BuuoSBk3*=!z>YkbyyyE7YuLw@8-?Vh; zCixn_9yal2+?*I(x_PtQ1MamvgfBziz?!M7pv!8qIsb(t^^~VbZ^a6H=?10wJ-k^qu8+l~{y`ukPH|Z&$Bs{Rm;y zq7O-&WNFK_J#EPjy6rBT`CqQD!Cp2)krzgS1df0qcP`eLO0J8Q9?-LLQ+xH^(!SLL zvoFso9MQXeY1Pn)S^fLF-4EDoH{V)52QRuv66n=7gZ2_m!@C>7PUDgQ3-m6o{&ysS zzA~k{Qm?&2LGX>?D{a{~-=OkZ_kY1sy&GdeCw!E>5lK|seaZyChz0h5-Gw75v`mM2 zFhXIwWaulVTSDt1iZ~p4<=e{LW8Dadfu))SDH=^3j4KYlt<{W;-iv_ZQ=ho*6GW_g z>cfT6uMp*5H)QUDjneycVA+wdk?m?~5J6961)>RIQ&FrHYyIjGkjPda+w<}1x!O;A z3Y9fKoD%?3erHp&-xCifztm7~Tjc!MdD3Z>iecyjdkobIzuI_h+{~a;`$ieQF~VDBH0iL66t)(6s5r{F7t)VvV?QKz zHayj3)15LXfzsEpt=YH}baP;YF)Ntuv9{QqpqlSVm)&gE(qM)=lhX_pHm@_&qL!!A zZ6TXLV`qfCSrNCBf_<_xnlfI<&~LJCvTd?&!tVJ^?oFOe-d)yRwq5pJj$N)@?p>Z; zUJut_(9u~lbzb90BMcA z-6n_6cZ127Dxtt2`=H5sR#yVq@y)RqN6Rod7Ci+A!&%~Am;C)tvnw7TiU+3*E0G1I z_aqne&FYg|mRFWvTu@qAT2#_!V8PV|6SF7gOhcr>nYnjo-<@-JuD>7;!)UC2FX}Te z9|`iWDwv!-Ij1hW4s(P}T9d9`-@rIQO&7!oYVtMto01v=^%?b?E0leS%W^lDoGdAl zaa&@#FScgTFN^ABS{#$(;+8AIv71GeDFrD;{nZr{i+{5t^!U2aKm)oU2JxKqcw1yAA^HVAvQurU@I3c2N_=<+M#Mvd8LlU-&L_dg ztLy={6&>D}hPi5+hJgAQAHp}>6C++`2N49wosyL@EakS8*hvLEE|Ia}v1luH{7d95 z9M%;J4*wRy#sB=r;JI% z`~EmdCt`7uE{#RRI7tk;_J4|#WPZKtnePph1bO%Y&MW;;_a5ZJ`BO$?yL)2`GPrV3 z_nxd1#E@_pj=<`G?0g`2ooz!b!o&v578r1{7lKh3H(&#XVM8n;#RiE;fy2I(Z381x z47bU#L70}YAn2=AqDPx$r4|-gG8hF`efKQ?PV@)yeo9%+Q}Nzy7=@;)(XenE5i>uf(PT0V$JD0ls9PP?{o8)j?OT_o zT$cN^fD5Z65lk21!nk@zBE)lSnHWW4R*^0~n2%Kh5l!L3Wjlc+&4k&I=et^ShiMaM zj~`G!^126V)`g-k57N7qEXW$9T{d<24S9JDnVCPjb8Ym~a@4L)_b5G#ebmTck(}0f z)S7iP+kZ6RJZk;c^zY20+27`^D^B*Sq_q1AJ@?5uoyDjiW+P;i1dVX`_+%_BixFfL zT&{iBNXmndj`fb7HAWbq>Ks#My#8WMkAtg?CPvI`#JHxAmEM!>ED#4k?~<7kLAD3^ReWKYrn4{ljP(>@TysV(5juz-Jy~* zcQ`$dB)@9>nO&FVK(ug+#b)|Jn$LfgoRx`HL+4UzvGuxZW|JkdhU=PT7#+PZC z!NJ+SgSno*=7ZL>r_)2pPxjJy{8rhzUXK)8EBfZ<6z3IU=1z}YB9?yHg?_Ww0)r<_ z6_(_b)gIbYagNbS;|}te&S&@8Q-L*@J&OpA3hrQ2_MB2j*AOG?U~|qjFQjr4P6fwE z74Rg)7iiYwEN{)OvtM>o(j3Q~t_ALeo`v3pzJ>ldN%OK6W-rWHn7c4U4<24-d1!~}?K8a3ybb7EUbaSK+Fg$ik z%gkTCm94v?y6bbD?D2hlQ1s#Kw|+UZ<(5f1ru}F1?LG&q*J|1yt2gw~2A-(ffpf^_ zO#V}QLu&uL?Ea|@?QczG^lrB z%qF%*$^K5UX~m6*A+rku%h+i7d$vZ&Lt_8G-4*3UitpbQg?Fd&6busTd=&BEcXvyn zgP>=~>~mtfl<@;Btbu05o-y4?dKa272ZebbOeE@uE8Q7P{b23~+fGCgy%Sdr@$-XG zGMCCW!z5xA`aI|_^q>XWTCDA$Ex5U72O2gTy2&Pv$<|93rA&_sWJ@*(W8bK zZdUL3^ykJ?(QlzOUIC6r8^6SQlDmUB$sV`f@4yl8dP|Dq4TJxU49l6`9?gx@i6^9* zCs+{}B(5x|(rWRe0@f`Ty(emW>0!W$+Fp8i@HUS?(t;wb~-AHP1Eo70Mia&dMz=% zCWteZaDInGX;<3+znI3RZU3(V?c7HHeQWKB=}7@Gh~bA0?zfoxgI#z6X!U( zMhoxx`R9Uj`06yZ7k-4xjNifwcP~~}$uW{}!pUNmJu$@Y;mDiRzjV-@z~`mG@)C13 zm!=Q;g#{c2VS-**bY7;F8m#E(aWCF8uN_?b+;eM<-$qYu-Fi{Y9*o6~KLe)#4?u}o zF){C;M2w^38)pH~p#yfjwBY}HMbRhpm@ig7y~mWTa`o9Jsc78E@C@sD5Kac$)~!*F zR)@hJ`xz83#Kn))uhq+{cWl*C?9}f77LiqHN270RRmsn- zUfmq6GtP|Os>|&9bpFnr%f&VgJ=N{YU$C@`8za3apJ?P$sdejb{NSAJ=@x$0CM5JEA zxeA$=a5ox1{4;GY9a#&iM-#E?T@~ z>0NiWBCL=z#}UKeXoIwU0ddt(Z7B4u`=i`N1F$$YzY2zb)V|i%$irr!bvt?-7;9A5O+ z%C#%BaR_C(Olw5mH+AnbuOE49m{*tUX5MMYt6_!(TVT4s!S{W9H+N$c-hE~F>~4ho zSL)oUa~~@8@lQW~;NuA&&6PWUTl}}%l=|yGjJrrYncYC78Z4!e4_5W@b0+p%>!GNY zt#K|$8y-*bJM}Aci3im0)lb#m)q_}Tu~z+3wWw!7^oOx_~?@Cy7)J*3`% z6@C({0b13+P}(=@8Px_qL0E-Uow`FctLf@(HADSLy`}c5chsNNyXp%yQyozI)PA)^ z%~JnR>(pU&P#sdURVUV;txS@&k>a0|&)N%Enh``f@Inmgs8>@r-{tHtB9!*zYQv)n;ir*41=>Xm}=eZGKzrl>3Iyn0}|E(~rjQzG|U9PgUbt z$nYBQwN_2Q-yw2ss8kb;STL>IiYOzpa2n;a-O_fnTiTpxlhj}8^u1ryQR;W$7ximK z{lfVE4d1U5b(8vC_?3EH_(j`m@O=aH`JK=R*Ha9yYL&R&XvB%pFitY!-y(y8-Kx}k zQg5{10^H9uwW^~DTCzPUY8>*0uo7mrak@&wzN`&~SGqp|Udr?xYAL?cOuf_?^M`2L zXKEzq|CsO|^QNhx$eYFM$=zr0d?UWQ!5=4ZUnOuQG`Bp4ZyDMK9>#NJC_tI`f+yv> zRo;PB(I(;@wAUs?*Wevf^_5t|R;hNQZDsOB{u=Tz@=1Q%YoMplLuirsi)--TGvL1{ z{+jR|B6Uc7$!o%I_zIuko$`GJ-^2KZfw%Se`xXA?;qOWOy%v9W8=AWROLw)>fp=C5 z-w1ySj|hK&?`@drR2N8a8k?J{k{Sy@$T4Zc(HtuyadYvSKJ=`X^I(qDSs3*I7M zC;rOwc>fi=qAu^nX^T3;G*qxh@x{A`;VenmH>vUP!`zIxV3X8jbql=6x59sXo0_Je)S(lm zs~M1uvmo#1K-SNLoSzR#zYtP>G3ESSkn|$wmqEtYs|LvUM#%RjB@+IJ&_1G@9)x^; z2)g27=%z=YiGB>MHA9m;4&4Ol3(fU2$nBp)V*f&IfcDy`HbIv>4ej(R^{o1}dQSaD zJrAAMs(!0}2aOeiE_y+|s6;1-77&f_s@ef<(yp)-S-q}ysXt&9z#pOS_CQCx2@Urr z=()Gl+i|V7ml{p<*kS0L_n=`uh-;gp&@~@H_k5!MgL>#Q^*QwF7tmv!&{!v+v%Z2B zJV~AUFKE!O)hXyL(OPGrt3{i2YcS~~DlxoQMpzPN9BE^PFU<~@rPI1}=3TRwFPc4L zfosu>C36-|zhlONyJjqzG2L+0-Afi4?-)3ssz%_za>C09D+ntI2NG5j4kD}}+vS2= zccRdbR+^Roi$T2K1JZ0Esc+2oNL~FRp_(PM?bf4)H^R?#f=5v-Amc5p* ztjX4K)}_{vEz96vkn&M#M(UNRD^tHsOHR8t z?Ij%XI4=F^^!GDXXY4@~vS0SviF2gx&H5tymh2_j|H7iJ;W_`2^N*Z!xz^ldOgNS2 z4$U2%dvose+{L-~<*vOey(Q$(McW`yT8!qTgfv zUMwA3y1Bor|G56GWvk1tDF6Ls#>;Xp8++N_ijfud6(3bzUAYMV8Y>^J{8{Da1L_An zHsDtS_7CW;%B-rXnpL%~YGc)JtM(4OW#CT+{<-?f>Xz!`gVdnRL8EKjHJLTVH3Ms| ztQlK#Yt7u6dux7Fv#w@i&2MX7t?8&aQ1g$$nS&b!Zyx;F5X+FMLw-DD&ycTcb8By_ z{Y~w*+TFG9)_zzU9eT&*LoOeA`S{D9y8Q2#cMZFJ*rUUa1P2GN2~G*l57q})2cHN& z9SjBAgMSJh4*tg#!7Cm-)!&`^{`^wv{+5r8$_4*?GDZUY?By&kZ(+X*OhwI0YIff8-e1L;!;IG)#&x+A!r%n^~2#Fah>=tY`*)r&A6@5xt%ye=WEARIs_KJk2D>~=u0 z{E@o55pZyKGay!70oL;A)lB~b!jXidK(%}|j@LI4-b^@=xh4Vs`D!xopO0vKcLUb3 zCexW_7U68BT*&K1go_E65H2NLPFPRaK)8aik?=mgp^0!M;VQxw)(z8TD7TH}h6uMX z*Eaan^3}`Th&O{Ma#FW;wy^`8l@A#$7>f|@WBUDs2M7=Horeey6JoT5^qqXealY*o zQ=aDiv%Ee>*hPqAwxLV0+De-LgA1? z)Isjo@w$cAQhFh9D^Ej&+X!FA??T{Hp311G5cm`rArxE{0$1`>@KeOHu#*ROiokmU z2lKwPx(K~b?nsG6N=ht3ZxR?H+y-th0v#iO(&{4Bfxcg)!h9Mbl$I8=lw#$LZpU>m zP^uUujsO&F7lZ!=j^Leb7yq?JWQ<$cXa1P;I!g+*u63!=FK)8sx z785QZTuQi{Z>}e7AY4J%NO&L9G!d>OTt(Od%oM}=5ZK1|hX@4^#jro*{!ZTM!1|tI z;6d6LAr!h7tK+;DikA>4C8Tl*Ft8nW1oI`J^?E>|bqO(FLd=(t)+MBM3Ha?Gp1w@j z&h#CiLJ4VILRy!A%IhJ!g_rtLBK3tuDc919zHCKbyk|SEUj{$-1?{#&%6kZfA4*C6 zQr4lAbtonEOG*7w<}GF3Qsiw$dZBwM+Is|g!qZ(0DDUZyUe*j)K`64WzZ!(v_Gka< zkM?fI^$4aMi8}WO-33l0oC50iXHEK}56XLH5zgit<}lY>!g+*u63!=FK)8tSSxmTu za4F$(!g|66!WD##g!d6P5w0X$Mc4xQ+@IL%Pi*ujHu|eAtkpJPvOjUsADkdHZ)fYI zC-x_P`p5CJkLmXl9w0o(79AoyOxVf1$N8SKOw$Ee2HYN@q=cIqSltd-9sL||5NcS4 zUYrFu7@St7YNICsN1*gF?9rE8;|M1bN^dFyr^$O}@jbKohB-_x-l;NJ`U3AHoKJ{J ze%uj#fsrQR5<<}zWlHo#nG$_bhIkGFMPHOD(HCXvKEfu#m4vGZg(u61)iUt8)F(u^ zg|*riy&b<^?vgf2|0+}MY?olQ3_LICBZT{yem~&>!h>wlA;QCioy;peu>!rL2G9#x zT|s?aL5_uGgIZOTpays8IhbiY0&Lg~&a6aJz z!bQxxm~aWpw|dMFYN7V&?^ftA6lat^m+(Ttc7Yd zBH9Lcb@W-lk%ZTRvejxFug6CZ;(7wpOpHcwJ(<^2(C@0zN91kO`L;Q{KbLSG;hlu@ z2^SD9 zau+F7LuV`Q2x}=Zm*%;UPHUR29{d{(pe5TL%L(+X1Jb^ufT4q@Tm|a|!1W-bpy0 zZ~@^WzF{%p62hf~%L(fV8wghrHWJ>)vYH5260RZ?i7}W~++g5Du0w>|SSztz2Ll^Y zL*cibP7Wb=4MES6r?dD}`j`dUhlT3VsCv_fkkJwC_%k$ieB@KX!9At@(Hc3 zIZQv7a30~Eg!2g(5H8{y785QZTuQi{u%57ia0Ou_;e9NziEt(1D#8}Xy;{&qS|swJ zmhz#Nc4jT`(~LV}Z`6`rwUiIFln=GQk31FIvKHJcP^`yVj4qque-Z0(C^hC#;(sXK zCU@j*LxJrh@DbkvI0`A70llchC~*6BK=Ck)f>%MH@bf6pQSOT-8ik&91)%WKDDu)M zye)uh;h!1O0a3!JmdB&6a zGSg2c2Tlggi!qNOezRM^b-Mw_5sJU-7VwhX zSxmTua4F$(!g|66!WD##gy)!7JV;a6kETG*$aODp$Q0IO3TrZjHJQSiOhL^LLNbcw zUq_y)BlYVbOQ9(tmyQ6I5Q>JaQv(Ra)~bVamH8JL9l(DF{;7kF+6*YZ!8%x~@>JSb zM=q*EOXXU8gLP=HTno3(!y($sHN%)p4v>$FW`=$9i=f>(z0rSBKdjd4upw9eJh>GeL4K5~GehQwPZ} z<%(~xj@r3SiEpqD6xRcaZ?F#IDQTnl2J4^&Bqc2j>gYP^=sN1?I;=;K_sgiEj-!S; z%-qPe_y+4Bh2(AGbE~7xSqG^o*Fw`edfw`kP{pI zbZV~Y)Lhd^@#&y=A<~HdZ94sL)2X?pQ*%vceWug@Hl1~tg|c8Lfh*boMJCLGwh|~K z&{-UT&O+(UxE5dBES5ft*qa5tAa}$UHw)6{AfU+bSsa1R0{@S|wfJOaK`#iD5$J5T zYc_4d*|Z5~qxA~+#g{mnZJEtF&t{!x(6ha@yKzS(=W^y+&RolpYdh|Ut8x(tAV*1m}>=dtzfPd%(a5KRxsBJ z=32pAE0}8qb2TzoBXcz}S0i&ZGFKyWH8NKtb2T#88s=KVG;5e<4bn7YhEy=N25H(b zhanhlW}0TEX+|2k|1$8|j5P90tg;r&;~W7LdD5ba2#a}NWJ?P?e3GV=*D{aOf*vJM z#&<0kVGEQ|UJFK(0;~CE85g%e=ExgF=Cptt=K&7owP>prXhnhJ2*(pnVtTO?T4*P< zkjGjmVOqe6l71QCa>9DT2ErADjf86mn=vokLjG(af3{%WSKc7@Y74ks>LXt67IJJ0 z=5*y+#+xlzvm{XFaS*VGu#@S3+fkgo4jj;b^GWzBcNb^GWzBcNb^GWzBcNRmy04A8 zuZ_B|jk>Rmy04A8uZ_B|jk>Rmy04A8uZ_B|jk>Rmy04A8uMK#T_lxe6H4Fj;|83NL zZRpo}T#N2&11+SDqWjvY`(%}#q!)^`QTMe`_q9>?wNdxAQTMe`*R)ahwNdxAkR7|+yp|b_ zZE6`)E@!TK!Un<>gpGu2Sd-=`G_-2t8$yIK`>+l471+-Dgn2(gD0275)wv?IL} z^$^cSJ3Sli^lY?)7R|UL^K0$&Y_!v}(GE}4cH9xqMms$l?euK4qX$V!nMZ4#k0`?NhNdMqP07SlMe8wTo)4xe|D(8gr(@G9jZUC%LoN~9jcPo z19)Asl7tclq_*38{w6_Bi3_co2FnPat z&O3Yx?WLH_JeolGzO{|@k{ykGdUgZS(qKEu=nVd{b~B}|yQ0A--P zVQTF#bwQZAAWU5lrY;Cm7htpoT@a=&2vZk?sSCo?1!3xfFm*wgeLPHE5T-5&Qx}A( z3&PX|Vd{b~bwQZAAWU5lrY;Cm7lf$`!qf#}>VhzJL72KAOkEJBE(lW>gsBU{)CFPc zf-rSKn7SZLT@a=&2vc%~sS9MCJp9Gf1z~FKFm*wgx*$wl5C$$~Zc;|9Vd{b~bwQZA zAWU5lrY;Cm7lf$`!qf#}>VhzJL72KAOkEJBE(lW>gsBU{)CE{G1sNV8r6QzMgp>jw zfKpf&Kq&TAgp`VqQkWG%&x(*zuqr?)c(}n25mG8bN<~Pi2q_gIr6QzMgp`VqQV~)r zLQ27x1L++hr6QzMgp`VqQV~)rLP|wQsR$_*A*CXuRD_g@kWvv+Dnd#{NT~=Z6(OY} zq*R2IijYzfQYu19MM$X#DHS25BBWG=l!}m25mG8bO3CgAc>nQFpx9RtQYu19MM$X# zDHS25BBWG=l!}m25mG8bN<~Pi2q_gIr6Q!%K5FfK)Y|(3_|QETs`*4{_0 zy^k7UA6vAKT6-V0_C9LueUy{?sI~V|Ywx4h-bbyyk6L>_OWe;A_p`+PED@{R(8m2N zaX(Ak&l2~u#QiLBKTF)t68E#j{VZ`mOWe;A_p`+PEO9?eJirnUu*3r_@c>K2iaL~d zfF&Mai3eEX0hV}xB_3dj2Uy|(mUw_A9$<+FSmFVecz`7yV2QHkPJu!)&vlSCgLvBH zT6`J@!2<$igebj4plIqt%yo#l4l&mu<~qb&hnVXSa~)!?L(FxUxehbeVdgr_T!)$K zFmoMduEWfAn7NK2S0Ok?=2eez{CJGx?qeJw9%FwzhWALC=}aSIKN( z5ea_`Zx$%y++!T)9^*Lo7=FnenO8kVK0L;G)nlAj{fzd;XBg=!XaX67dyV9WSTFL=2_ekkHnWqvmNW7#SZDD9nwiVq?2|?Cv|Qo?T}8|A)T~C zI%$V=(hljQ9nwiVq?3BElX|d|c1S1fkWShmowP$bX@_*u4(X&F(n&j{lXgfa?T}8| zA)T~CI%$V=(hljQ9nwiVq?2|?C+(0<+993bx-7Ip?2t~{A)T~CI;mAV(duU07tD0h z4(X&F(n&j{le)E&y0w$KwUc_YlX~+w@qCLh%%xCdZy8$DSs~ zo+ihhrdQ`QIrcO;_B1*6G&%M(IrcO;_B1*6G&%M(IrcQlmp7j#JWJRGc$O_a%a)#H ziD%KqBe*YZJj*toWgE}3jc3`$v&8UOdScI_jgnqg3Y}#e&$5kYS?*c1RGvz?T`a4M zWp%NvE|%5BvbtDS7t88mSzRovi)D4OtS*+-#j?6sRu{|aVp&}*tBYlEnrkiQe>Fg%G-eS<{3@eq|;!)Y7C7*nT&$(+U%F8~B^C6;1+IsVRP2>j3 zCdEV=#0+ZQa2r;tcQ-2)Lxa$v=vapmO-FXJZ(FYzF@ zKQ<`qabTzw2TmJ|7W~kgdOoO=#bUIX%!rf&fJa6PF7eMO(1>U_28+?i^vI^y8}(NC zfujZxh#C*Dd%=R7u@_wM+6xPj{PMM0twy88YDSUBgPpHbf8is+@bc#XwiFrXkaZmXB!+8-sAL0YQY&IM4VH0%V6h%bhlZqm?i4oMoTaW-~wb*S&Btyl3u=DtE z#;^cR7 zNOJ@eF??9fpdtQQ&1OjsstL=OkqxNCes+9}_$B0&zetAEIJ<-&;S{7x&{2LdKknP@ zcJP25)C2wSM!~1iVh1UuBqWqqBTADA$xy7|!z`5*CUMJ)_+Dg2Z7<+)lO9zCPFYE- z)EEU>&A4j;$>a?&%7B6jQRuM`9h_nV-oaxgo8TjcVu1z&aA|Vl3hl941s^t)Cp>~< z7J(RW85lxX#)52kuD44*^cD0#v*aSZjxyp=C(iW@JX+kno3~1D$ug37<;j0ACf=$%4hx^cri4QsA2Co5c8Bq{u zi>k;!G&hzOoU4@6Yau@D7Ka`9Fx$cD7vTfAG&@lM>H`kKOYEqu4Ryr<9ylN#_=xqU z9()M$h!2t!_z;4l9Im6K9Eq-CFm%>&FOc~ie1L#PkOk!k3z|@n-KqzXgs?_~bVYoCUxkqERweSxX>-}Z zV-}}~AYzz+xU}FHLLdP>7udHr?GCF0C%f2fZUD$fFobj=w4C^GOU2MJtrif$0^#RG zZmXPO!_W8NL%0}06s$M`54^j#j0Uts!2ad=&|2fas zk~oeJo5uqw;PePOfB*~dj#@fAc(dRGRQI4O;lObVlA&T~o!|p0fscS494Oo>odGDh z03TKZDr+^eHa6k|1>uNO5DEXFzAnUvH%0Jawz%vbCpwVT1=VCi1L7a@memUuMt$U6 z4yzlLbs`j>)9!QH9N;o=G3o@dYeV0(8NI@;5LCiHXq3tB0y6DvA{#G2>MhB@cKDzZ zpk8*n*Xu=}@HoNF$YX^h5t#veAnY^VVzYUX*y;0Hk<4gxp-53?U_PVKn!*Z;U=(aR zofq_Z8^jNUvaqSmCSB4Dd^l|;x$6*h9_L*2CZ&9-cANuiwz%zHCsdc!4IO+|{0Cvf-zKDY}>0(`iDUj)F$TaW;Baryl?LKt$xjXo&&KuUC)R0og_Jxl_k zuuJgaw3;B7PzI!r*$l+HP%(?s>a;?gUx*KXy5IvxA~<|5;KSw-e274ceM~rM+hg+s z;i!*W@L~730W(lm-ZwS z02FxK;6}UG?QwWqPKVnCe7K-Ly=afq?sOm<@MTIu&72TbNQw4BIeL-XiNkVZ7$yeD z*ZeKTKscc1Ih{#KN$3+v9+1x~oze}NWp(=jLQln#Qi`ZfIgArMUg%*hsy&gW%DFC?G~RCZ$Sbi_a-OXk<4uN0gDFWLpn`n z4?ciQ!3VjIzyTs6RB=pB`+UF$5HI+U&`S=OHzM%y0jDXI+*|NrwfS5DFH~0yA0TM_ zgJOL?M=}cVx`123hoAUxIX&)VoRbWlF8Bba;0Sf}C#NYHHFH65yIeqo!)12)go8ca zSbe@99}r2%l#Hg@eF5SFcidjlDc%4y6W-(lK9eC@ys61{Btyj@#SD<;z$Ng}8z(kP z`QRI`7c6oSKJYGw8Pq||L_}GEc&`frMeqTNp6|&@rDP#GKTIFLJJ|<(IQ(M5q5<&_ zdCQT40#F~H*KBq>K|hzz<92y*7>vsUo$iM$krSkmjrfr63kBzP`GF4@3x45XuTQ!S zKI90gw>wpxLBpBo*>1Lf|vNKcXv>%*Fk#rs(X0ywb3QD;# z3URxW+(47XorK(OpFdWg7(T=t{0=_csi~=u5h;EYiL4F}x(M)*;&R&XGYQR21wQ=g zsSYGV#ehWvR60_^O3CiQ2apMrm}6}eNPIXge&Sw4lnsdY3qH{C!QqxTJ|NYVO3TI3 za2A^*;7Lt_Dt871A0TM_W3hm@oM}L~-vitNAFgD7k~_)kar?Y!Ubh!gC;(XkPH|g3 z9^k_)Sn|M}^bjA2M;Q((^pTN3u7K_(+za2pSOokhfgvC;;?HO0rnIf)7s;LOc6?={}DS zhG{a|gExDuUew2JP6Io55$fOL4xsfgo|2Ip_>gXck4pgYAs75Wd4Nt{PkMSfWJFpL z*f|+@d`WH>_$A%rvf*bknwt*Ml9ZX@L^6vd87MSBx5e<0hq_Rg3PXcMF2IM|?1d=9 z;RzrVq%rUT#3vyfD(?DFLD63FAwDwlJqlvfk>X7cz_f9t$S@#*4Y3!&TdoXr>3|oS z4yxOok`(X+{2-Js!|(OOo=Abv2d8*#qRTv%bjb~Y?!|Fa9>GV7&*%3h1(ITKMMCO4 zOYEmW$q#|+&B(}rj7UcaxRey!0SQE>WWaX9&lE_74B#WsE7OH!s2HdKV;EK~ez@{| zkWivag`t5G2=~Otjh6deR zx* +#include +#include +#include + +#define WIDTH (700) +#define HEIGHT (700) + +static void +_on_delete(Ecore_Evas *ee) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char **argv) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "animations2.edj"; + Evas *evas; + Ecore_Evas *ee; + Eina_Prefix *pfx; + Evas_Object *edje_obj; + Evas_Object *bg; + + if (!ecore_evas_init()) return EXIT_FAILURE; + + if (!edje_init()) goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, "EDJE_EXAMPLES", "edje/examples", + edje_file, PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); + + if (!pfx) goto shutdown_edje; + + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + + if (!ee) goto eina_prefix_free; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Animations"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); + evas_object_move(bg, 0, 0); + evas_object_resize(bg, WIDTH, HEIGHT); + evas_object_show(bg); + + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + evas_object_focus_set(bg, EINA_TRUE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), "%s/examples/%s", + eina_prefix_data_get(pfx), edje_file); + + if (!edje_object_file_set(edje_obj, edje_file_path, "animation_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load the edje file - reason:%s\n", errmsg); + goto eina_prefix_free; + } + + evas_object_resize(edje_obj, 700, 700); + evas_object_move(edje_obj, 50, 50); + evas_object_show(edje_obj); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + edje_shutdown(); + ecore_evas_shutdown(); + + return EXIT_SUCCESS; + + eina_prefix_free: eina_prefix_free(pfx); + + shutdown_edje: edje_shutdown(); + + shutdown_ecore_evas: ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/animations2.edc b/src/examples/animations2.edc new file mode 100644 index 0000000..eb7e81c --- /dev/null +++ b/src/examples/animations2.edc @@ -0,0 +1,48 @@ +collections { + group { + name: "animation_group"; + max: 700 700; + min: 700 700; + images{ + image: "bubble.png" COMP; + } + parts{ + part{ + name: "part_bubble"; + type: IMAGE; + description{ + state: "default" 0.0; + max: 63 63; + min: 63 63; + image{ + normal: "bubble.png"; + } + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 0.0; + } + description { + state: "down-state" 1.0; + inherit: "default" 0.0; + rel1.relative: 0.0 1.0; + rel2.relative: 0.0 0.0; + } + } + + } + programs{ + program { + signal: "load"; + source: ""; + in: 0.5 0.0; + after: "animation,state1"; + } + program { + name: "animation,state1"; + source: ""; + action: STATE_SET "down-state" 1.0; + target: "part_bubble"; + transition: BOUNCE 2.5 0.0 5.0; + } + } + } +} diff --git a/src/examples/basic.edc b/src/examples/basic.edc new file mode 100644 index 0000000..a708b50 --- /dev/null +++ b/src/examples/basic.edc @@ -0,0 +1,39 @@ +collections { + group { + name: "example_group"; + max: 500 500; + min: 50 50; + + data { + item: "example_data" "a string"; + } + + parts { + part { + name: "part_one"; + type: RECT; + scale: 1; + description { + min: 50 50; + max: 50 50; + state: "default" 0.0; + color: 0 0 255 255; /* blue */ + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + + part { + name: "part_two"; + type: RECT; + description { + state: "default" 0.0; + color: 0 255 0 255; /* green */ + rel1.relative: -1.0 -1.0; + rel2.relative: 0.0 0.0; + } + } + } + + } +} diff --git a/src/examples/basic2.edc b/src/examples/basic2.edc new file mode 100644 index 0000000..e60e268 --- /dev/null +++ b/src/examples/basic2.edc @@ -0,0 +1,24 @@ +collections { + group { + name: "image_group"; + max: 500 500; + min: 50 50; + + images{ + image: "bubble.png" COMP; + } + + parts{ + part{ + name: "part_image"; + type: IMAGE; + description{ + image{ + normal: "bubble.png"; + } + } + } + } + + } +} diff --git a/src/examples/box.edc b/src/examples/box.edc new file mode 100644 index 0000000..79d04a8 --- /dev/null +++ b/src/examples/box.edc @@ -0,0 +1,142 @@ +collections { + + group { + name: "example/group"; + + parts { + part { + name: "bg"; + type: RECT; + + description { + state: "default" 0.0; + color: 128 128 128 255; + rel1.offset: 20 20; + rel2.offset: -21 -21; + } + } + + part { + name: "example/title"; + type: TEXT; + + description { + state: "default" 0.0; + color: 0 0 0 255; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "bg"; + } + rel2 { + relative: 1.0 0.2; + offset: -1 -1; + to: "bg"; + } + text { + text: "Box Example"; + size: 16; + font: "sans"; + min: 1 1; + } + } + } + + part { + name: "example/box"; + type: BOX; + + description { + state: "default" 0.0; + + box { + layout: "horizontal_flow"; + padding: 2 2; + align: 0.5 0.5; + min: 1 1; + } + rel1 { + relative: 0.0 0.2; + offset: 0 0; + to: "bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -61; + to: "bg"; + } + } + } // example/box + } + } + + group { + name: "example/group2"; + + parts { + part { + name: "bg"; + type: RECT; + + description { + state: "default" 0.0; + color: 128 128 128 255; + rel1.offset: 20 20; + rel2.offset: -21 -21; + } + } + + part { + name: "example/title"; + type: TEXT; + + description { + state: "default" 0.0; + color: 0 0 0 255; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "bg"; + } + rel2 { + relative: 1.0 0.2; + offset: -1 -1; + to: "bg"; + } + text { + text: "Box Example 2"; + size: 16; + font: "sans"; + min: 1 1; + } + } + } + + part { + name: "example/box"; + type: BOX; + + description { + state: "default" 0.0; + + box { + layout: "custom_layout"; + padding: 2 2; + align: 0.5 0.5; + min: 1 1; + } + rel1 { + relative: 0.0 0.2; + offset: 0 0; + to: "bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -61; + to: "bg"; + } + } + } // example/box + } + } +} diff --git a/src/examples/bubble.png b/src/examples/bubble.png new file mode 100644 index 0000000000000000000000000000000000000000..8fc50f93aa16f4028f58d937d55a60454cb2e524 GIT binary patch literal 4737 zcmWky1zeL&7$4m|WD*ii>O*q!flQ>Pj2`KfR7OZisHBuqN=qZckWNuLW%Q(+e8iL# z=@x1E&i(fOZujo)cF*(vL$kYiZbQ`U2v}J$A9RlGPLu;v< z`c7@!>wjr!Mn3=ExLJ`GxvJbxmb1^x<*Qv!2zAFt&FWYdV;eZtyJmH|1`EQ1!#2BO zRn$j?!ou#WQHe5HNOwuBAOr%+E1S%oUYbUoWFsFRKlu{vccwTKswsKx+g`Tg=?zV) zr*{}zeb4sCzbA_s&VOt4hJ>t*S1l}$=DP_%?pCC_z-W=fgsS#GG5)P_latufKPOw2 zv=BDc!&&3}(GVQg$c)<#CPGhHT*@c_(Ia(DP4SkFNz#T>;Ke(G|Lh6!U-xl3V7hnj z9wY>zpI9hSSXh`)D8WpaIHQC(Wk$HyzvTPZ-PYTi3k;cT;Cpl{EgptnoVtnvXvKx z1_$TzA}?uFm=op*k)sc5AFWTw?JU;TUenXl%O$PYdU@?$ps6q?nn7u9$MLIwnC$xc z6)Gw!I^wD*cl~-yVj{=ahu4(isE9SPpbKKz-`~F%=A@X_SHtYd|KPy`Dl(ZIwE%;# z_sab_UXv-WsQ4ty{3MC*48Gbr+a?>6y=SjUERM99P)PSN!9t&h;W%;g_6iuC|&H_Mg?kx0 z?tXb}mB54IsFC7Q(Kmsk!-VLo>*^vF7jdrc?(@5g#5A9pJ%m1p1}`3F2kYCjY?zT{ zw!@}w(}1)I25zhKK|Z!GEEW(V*<=>|;_%`|C8oAyMJOtC>jY#w{1XJ5YUkp@1i*N> zQ9mOcO$X^17#Jv+oSeLJX$#~zvk=BiyB#E`qM|Z_&_4`2nP+?5{QhijX}CE#IT^&% zscRw04d_ckfL$Q;2_+^)QwQsYhyF*4X;$RAIVILxw{AVxAN>4zb|g&a3uPL$q{P|P%+O-${t zjJR7t>;44@1yLS=&EZ3Tw3nEem>sOg`pSHaN!2(?sch_FF?gGob&9x=BizW~Q}OuP zBYwv|izG)9f&~C^(1EL|@^ajR^2*Bl0C01Wf^FPm2H8q;4p>?g#uj@4&>B$@{WCwdA)VhoV6;?g^k!@BL&(#}03m}pS+fv7JcH0%w=5M*;pOGC86KdF7obl*Ht zMGkA$-bED{U*rsT&TLkGUU_-g8;+(N-UD&R;MKr>cX#C#6&1I8_&nBEJI2Z^$bV%d zhSHOtiS^MYSRFuEr>-xdT;WmMd_-S#4RP;-FELAzR;Z8Ol3{w@qE?!9)|^%&VD6Zg|oW4dR8(f z>~4jqhMY2=*B}Ne%uLAhm4lDBn|vJ|#e5zd{A;d6BC$ZL825rQ%);~}m(Uk~;D5vC zx`3;jn=m>lkFLk_)hF8!ym)SDb9}uNlY)W*5WY#x=h6X4)}nABwVWkN35@AGr9?Ob zs6brFm%N(MNowPdL%GHE)|%pg>u<)#IAeAqpz+Oj=P3(@o--(25_%a~c5%QqW z`F=nE-*}bH(~`|1;-8#^t7$j5uR8DXan|<6Df=PdC)HBA;^J5aNO8-mdW~U{R)@5| zeir=#-Kc_iWUgCgp|&LuQQ*`7&v**Rn`fUVt)VoXvi!!{yRJ3TBOCo52?UY%Niw;p z>DOLHZ`$-`!+vP<61k1XAA2^-GI!5G1N%%Iu!_`LNB9GAGADmRd-jqtZFs15`?4bR zV8sEO%FwHY&pRl-r|t(oVx=tBq-Nh;q)t5TuP7~z`D81^Dki8#z33;cmsTTG+F~Zj z-R1deW5W$Rufw)>-Hw!hET#ZWue2MwE-Ht*rvCCvf`g#a`3ioT+KaNG1=7T0s@vM) z1_uZ4QTIuw6O%7Uz{P~noLU&Tmc~H$n+x4^I$NExUB}1QkIz((&z|{7%{p}R^uNlt zo9Dcle!>;=&OV}TE1$dp>QBptM|0+R@dL46BWBZWezMp5Wx%G8EcwW!htulpzz^mC ztc@sH;; zJbtCZTSI?6N-FXZ)qd}jCr`Flir&`g?f?dL3=Iv9grlK9qI|hu;Q6YOj4bC;7L?*f zw+=XZe9e%{sfEKyWLM`f}RF{**nwOK3Sxp(;wSvR22$OLJn`0-1If1 z{zhziG#92T(Q0Xx%ycifzTiCNes7Rt$I;%B6|p8ldf;k$TH+#e2*KF>(YrNl>i4HT zrw?dbeowhbqhonC7w21@Gx1#*^VvifcW7S;hlHl^E+YQsAKw!j$BsttCCeP%QPhC6 zf&MH|90YG{UJ0d6ntQ$Y%N?X)19p<7$T_CJzyC|b*C1TShhfzMWfl}^8gjSzN-S;6SHGwt!;ttk?}%nH+ljS&d`%e5 ziP_VuGV zc9jf3Wekg`ABSL%U*{MXFHGkYU9sf)os6WrDNjGImmo8oVN^(y-KZr~WxO*_@wmY- z2RS*N%z70VR|~ybigr_Rpt8Y)Rj>7b4^s#kmKW#J+nLY3-4co}Ycu&K16yv{?qt#x z4Eixkn%4?ce3fCR;@Yx{7wi2lhV&6yNu4yHW7cLzUe#-DRB{$eP+4+kR8=V6pKmoWJs5jCJ zB}8tg;ttn847)$3_vJRKlc_8;^_feiIQ7PwMCEmfTgwgAxEgj|c44Wv!5;7X2Wh{g z&l}LIbK`T)1f{QUj@W?cFDonab9oJWZJkArIJPK1{*`{_Rss3fHCM^+k5Eb;Vt0=v+V3R550w2In|EjLWwY;kR?BG zxWps$Ye~j}Y7Y$}(>S`X^hf#>%b6&4>f&@8Wks@*q|~2zPPZ?LYHVlL>o~oNgN>~C zR5vz8%QB;UCY}Zw*9mSG|A0v?Y?CPjFG{7zg$(^j`R*!Wj+(-MnosL*(3m zaZ0oINod}gm+z%g`)|QT#2HpfZ?{Cpm4^JE6E8&3)4}IwXLJXLFolCQ+)&A9W*u*L z2i|N6+-lGWk?5y}{W#yxH+dsgZ@La%_wnP82s`miRr%ROLczKg5yCC_;dO0ZIiu7G z<&mFdvi8PGCz5V9?fh^do=sKx=oiVb87hAWM`b9$t2)U*hf>fJOJ8`)hDVJrL@<032v+8$y zam6)yOsqB9Q*>r~=gFJf(OhDd%2qe%9VR@^4F4d0pYv?n1d8JO;CdAIiUw!I#zWxVQr9ueF&z&7YH2y>gB}&Ef&%LsJD)*mz z@#(G4J@LZ!60W!X;aC6t*Zxh_lfVDA}taL98hOHp`2z&*aw0}mNxgJiPLL+R+Ve!QL!+3)ZGLbCD`S{WHefDC;(=L?D#1c10OqNB?$X<6_w2EeV!(A7R{zo>s z8?IU1Hl0zQ8I&>PX_apaRiPax(;^beDV4VQa)OxbX3BYDp1c4|27F18cIEV;xjllQr4vV=FfU5jWE*ToHS z-Cfgl@wKQaZq;|(5af*$1ujpgV?_@ZVa0Ap4Vl4cB+f9Vv@4XQVxp^*Gu>RVK+bhD zAlo=h|Pw9Ip9e}yF&IVkSf+q%Y#wZ765Bha0(-hU)tFl4d62mTE zP80XJC2GE{kOjDjLD!*LY?HhxZn;j?WBcR?nw}?$vK*c6W~$k4mYc37({ny15W}C0 z8{v~dJ0dvZ^{K#Xg&Qv>$_chejYG;d9!?F${fbdQ5QE}bjr)-{*2AV(-F008{lqRh zWS8wy-S#frGw>=;6wrGiza!|2#Sk*-=L3(>g($0qk!Oo>S*^8r3t@tWMl$8lQk9NV zQJ%?DXePa)Bv6o18Iys%4g-%|#0R%32W*GF8DC4)Wv-{XGfG#8*>=93i%iR1p-4&N z29ZRs=)ulbC7yku6j6+;X=@uZqP%ThUwb z-$cjEuv{RYwL8^o_IbHV7P>3qZSj5aUH5nTTk+3zjf-7{o*6HQHpH*%-*aCRyTm5^ zXBj@}wrrDqCLK+V=j(^)0CXe8j}~xO`n=$0L^%b3{gupntdBHCf}%$m8yyJm3zi)8>pmY0t`Tai7@bensX3-2wL9~d(KpObWQSa8H*6q`ad&CL@t@%%0Bq&y(@xg)ZkNT5nRh@LHyQ>~V*qFNjm zSHysuDCda>4|V@lQi_|?;{Mox3D^Za7br|QiWb>5v6)v{R>y0zkq@~id*{h%pU zUGAbdA`jV%YS>Ov^Xyzcvt=3HO;_L_^j%k?r-4%$I+S2ddkecj#^ZR&2EO3jIv zF)yW|vyZubQ1#k=nJ?#=m3pO{kJoUvRh-p(;&-CG@l{=DA5pK`9qL81QLnPdjrseg zJ1zIP_p$x`d>X|J`Hb5nX3BoNW9*iTEn=y>YfeU|%tdw19fL!We86oM+r)FoWwo0| z-{-`KVz)Rcy0M5w=+Rnia*EC1gHOmK+^-gAdFC4Nm=r{HCQ9XH(mLhRE?=jK7Dns{ z^Q4JJ%n&wKDHq$NdKNK9kFC{5%=`L7bAtJEncQJt*W1mrYLi%FXX<`)LceF;)t@kH z-*(mFH1YZ-xm8Sa_42G6k{jHc>KR)suZt7*us&q=>ocZDFEE?c4)>yXTCPDyhw+}f z<$L0!yQ9kO61iHebN8!C)2lC=WBRx`uj@^dYH_zj7aSg8OquN5JPsdPOk5=R-jCh3 z64ACXi_UN>Xm_bAm;K_B+pB(Ueia?a+)7uCJR7}gUlyC?<8WuL8Z-y=_s#e80egoD z-1}hV9+pp{a}DmWY$e8h-EJk0>s06LQMq4yEDpIwRc0QKUT0o-#XO-G+ep-_gYn0y z({Z<|5G&kc;t9FV%_bIVgy+ZLcs&|^*Y&~24n+ivU+F?xifDDJm?BDDN*UXu+H4(O zy-kfX3-nsI8r#ixE%KOqNB!Kqr!NvctaV%E%kFvk6jpn`$yx`pf1Gy~8}lx}Z;-ll$BO zSu0{>x!P<}o7_rS>AKOC{qnG_R`tZ}KJFW046UlsTvJWV+lI($nx1aT@uo)Iao6P) zcLhIDAm_UWU1lY*nwg7sRu2qq~nd=7jvQ{U`k!b4N`f zLN0cB#4FQS_|?fzY$H*|V`8J2%{s1?+4zvy!#r1KRkSSLtasY&@@cn37Qmm=;;5^Z z?ex3AJp|uZ%2~vqweF}q;?B@kD|&(X$v&RF<}S)hqJao!95S7!W|^`mmFY{}j4!KN z(SfI2fczf7r|0Q5ds6NZAK_>F#eMdZSNOwcbq?E%?!Yl)ofqD59MrR$pak z${ceyI+{6_9vNPpw=MIqDxt*-*xiTXeenr#$y8>m*Tn1cCA$u*?2#AnHAjhpt(Yzz z6zknOwak@>+wzP(ERV|?drh~;L#*irqfXPHF53&L*0vBUlrRfS6O-VWVU5)Q6)n=) zsd}lopO~i1^rmVuzllCD`{XrIEFQ&g?-JYb6Hi0qkUgk=owkJS(DAyy|7h~TfYDtv&5b0%@gNzv{W z>7DVm=spw626@u%QSYJeXJy7NRWI6Ic-!aHO8Rbv%J`ik=B}gV3+R(Z4)@8$*m@zpC$ZKgqUQ|0bv|+4+^8%b(3kB#@xJ_xsAEQ4Ew>`) zE%qrQkSf_Lj)k7>l<*H|2_i?{2Iu8cL?C3_s%?ZrwPSv#zi z+ucs}GV)nSOmZDv*>6w4{d~EI$c=eJR1pt0dCFZ4F;Sy!!G{d6j_!dw*NNr^QUxRB z>GI5YUE=cb=-uv`s38g%)Dz;WXo0B`6Lf!kG1|wR`f*%K47Wng483K$5NGXv#KMGTrXY~n_PvuL*#HeJ{avW2h=rNpw_vUGxqZ>e_@+*y;p@dy?h!pVBh$?zHK_~C#I?4bQQc8P8n?x=1%T?l@I?+s&FwBav!`^^@Jy;c9g-4sdTbtRxEb-Z z)Wi{!ZW=k3-jms{Ygv!4kk8rY)n@mESSx3-&Oa)CY2Q&7eVz#k*0H8vg?>zyoz8pb zmH5sLtf%|PlGWG~L@-B)FEugaX8p3+s-LwhnYp^$S$RmDv^TUe)A-vXSo9pJkm40) z^=s(BRoO^}rjHy;JK3j3+fGigL{&I=jt?wkb=4{^%ge5n)aQ6&!Wn!DMX$PS4(gB1 zVSR&mcCC9xJ}aJZ>*Y!}g&f5p`Ahs|4Q~_>@!ukIHdier<8jkoR>N+o*do{4GCWzG z_iwB%PswKDrM2cI{Tg%VGj1vNd`q3RN7Mz@=tVvX7Z1y&WmLE!S8st^ zTh!Cc>&sb3Hsa-e%$lS=n}fNjZ(}j*&06w!H~Cw>dsMtY{Mn~3#;2mQ=*tOr9xYhN z%H%b-T|6gO*-F)i?>MB7#@BRA9J0VZARiP&;Y0&h;A0*0{Uvz`pVevm;Xxx(YsOOZ z@P(z!L>0Qy6sSSbj0b2W>s3IsIEC!rbTQG6M2+z$`Xjp=nchG?8|^E2v*(D7)rbf_#N`i@539qoRO4OG%X7?)WyG}4>lZT5q&H+1 z>0;4g&ZZ8H98K3}hNDt4EDPKMqW%ImfG%~&Hd~8VKW(eYJ>G~~%q_A}d2*sHC+Ak8 z%SYL|TqUz5)|xtZDP z8abH)F^iv4@>k9c>yEfFYBHVVZT-rn1`mJHUP3ooi9Pa(d*(7D%$DW!o56xR&CRIQ z45BSlSZU?qEe93zE^D`=#N-EwP5a1xZ8dMGFS%{v5v+AsU2uDd?OH@7^WRdUph4!q zjJRQcL!RP{DirJNV`L%nnXd-jZT#%VZXYphzFf%4WrcfOK1*ypiF{|P?u=z>Qf5|a zMrK+x-Hg`*<|yz%B?lxt_Pg~>{<*W8lJ(IPFBj7R zkLZ5#-@W3lY{#o!WBq;BoFx9KR##c)^^xy&GRCsIh|?Na_2tRAb{_t;(3R@Sczk5d zUD-!U)n|g)U*IPnt+O_U)-wFeAaltvav9AjF;bi^CDQQGsb7bXzGW{XW*wUrMXD6v zGQ~_&Q$+>yVhOUUlJ}8ysv-+L)s#miam4ld6uAuCHU7O?&g!%EL6p;y^D!C@>mD?Hdk*U^Xy7ABjP?wT^w}9Ne&%+Vn zk;%uBhnY9}$iKItwO3Uw`!2W4fJ`xxe6nO|zm3@My$ALm*#h-i$qpr>@IP$KI`#zMTG;&zJAEv}{H_6ff?v#dJ_q7kAsZqQ5YMxh zX7Zx~ze_|UTWIsq6nJJMm2zQ!fsIb~!@}D!7DQXwALIZx{eCEkdD>#1F;dx`IKQV6 zYs0z<=`dfwc{9NH2lTMx2iZYCG?P+-2xS$~nD+fKCm|WuZ4vj_fFnoD2x)EflbwTj zlQCsCKG>r1&-xGanh0%Ck&dB*kLi@#x`U`Ab9Jaq@r`WBw*HoJynl59^2D{&O+BxoL z?yB3$R>lw6#5m1V+K)S)&UV_Li~l8F@;oPX9{z>v>|QOKIBX$tJNbssL>2u#zc)U* zm(5>2U;KOF%I`AAIPHwz-_AbepZ5E_{*B!A=zesz7vDmzAKyc0Pi0%m?rmp#^w0Qb z4egKMxO^Y%x@GAJJIUeQu@r^Bdb$I}VVu4V^5WS~@}_?#c{5O#-J`$fz0bE6MwE=$ zzu{X6qw&=GD?gqx9cWIuot( zcM=)`e{ymTT*&dnOEY}JIKxPCG7dVD(~qDxW4RG14wNU<2MHwF=f{=Ebu913jy7;U z=u%=YxqHbda+;Q-dF-eIFZ}<090|{Yo&>E8PbXszzk^;R+7x;XI&d!+!`O4YNuK;{ zYl&`qX@y=rZ@ru|*qhhHK)oM-ux;O4!udomeCy#}qOrNr1w9M=P1+59BG_Q!Bkq+$ zB99zz5;}60k@T2*HfbZ!lYH~Pb9cg3?tjmbpiiFWL_&$L2;={(tiyAGlH~2=&7|e< zOn5WsLSp|x)(O88ebb-P=;`od^1uDRWSqIHgqt}ICf4R{HrH~(+n`^e-@uLJjvqrJ z@gVISH^WF0-3;^ud5raufl_}z=!}2S3gb^KF7bqkX9>P|tX#&Cj3dp6{L_n;ol6J zKK5zPuY{_xo+6pQe6N8!iMI_p<@@s7OZ-^Q+Wga=+bjU#LUKRMoq@vS-GoCqZYO;6 zzsGVVaM!;V?)(3ft3Xc}Q^I{e((rWhSJpM3#vS3Wp^cz6uB66uCFgUmx4zTeODHSsiwo+b2#@8Nkr)`Y4g7V~2X{2nX8pdBG{NoK^clmr^R zZ3ONlya;!K>=KU=S`V6>)9B=lv3y9b$9jZ&H8mM!q90xtfz_?{?tS0qwL3iP z$CyNUL2CmwzE@8}kaqAzp+!HsU{{GJ3(qF9&iMe}lJ6zaR{wtTW}q#+nQ-{C(g~9A zQE)=PZz-WR=iz-TiG_tea~d?(Z~DIl{Y&1>jU`Z>n|~5Ib9a(aCR|9Qd@t4EuJ6VB z`+Mb)$Sr3bfrI{?+_Q=P2Wf*RpTsc$skRUu!$i8+esa9&{k_gkg+C5LOCdP7fmp8jxIj&V*3}TElf1X|OdM z&r2{!C6}>FdJOs5A#coFX4`VK8bXbXYPGF@G!B3&yFx)u1BSp8?mm}q@Y<3HQ>zsCQu z?fO>ySaWvd+w*#NukI!9@&&JK__xnJeD8H2tpe{lL8gN4w5k@+zHYR{Pp7s zlx8pP`Onjm(BoUpalrSU8(*Nxx1QY1^`6+*y}xt(^&KYi&S^sEHR*rs@3AsSv^@B= zWZdC*ZcKry(2pO1*NcRY;mxGC@Jtv(crMWC@8{YJ*M77~|GBH3;_KqC*iCy?JjB-V zKf7}jElm<{P|*6{#UF@25}PS*z2Q!~Gi_{?;=43=cuA}-yj>>PBf|_JW{i%h4r1Vc`-|?@qXX(+Ve(#aJOIpp|0}97} zq{m^>g1^TeI2-pKCg$zVUnftG+G%!glxAt#_r(*=@0j|XP!OVwnLj}VJ&fW`DOLtC zo8<*#hE%^t$~)ZWeJ@4-Z&XHLdq-st`quZr{VWbQjCqXa(j&Xf9*gUDT#bJ}*p+WE zaK>-q!k556y4G;n?;~pP!X7J})gWG`4QK{OljQ<;EwvJ0%BbB0H%G;h0KG#s9+=0O z@;)kXm)JRaGUydc)pNUQH8-hcyRI5t1Bj68ARn5kdInoTB~rjT=2MAX=*EGX(LG!3n@Nm>Kj^a+KP5HEo{ce10hQV?U=@B;qMO4@zIYq@ExKru@w8!*O z6Od1}11LEv4@=c}TMP;nilGOBsHe#&liklZw3bO_GJ{dSy~8*gsldDn&h}H>shkC_ zY#FtV;7;LWw`iqS^g6Xu*R8J_tmj*s=?2#;K@S$#yeOSf#G^KHR80(1^DszFc!rrQ z6%`p@U0q4_>pZ!@&QUY%WKe@89(M{+)K*ZX;vuLh<*|mS9F+qDAP3vkE$XS7!B>Gh zr7rPK+!GCeQ}uYt6x;!KN`0-bWT0k(vFF(|W=k6=%b@F~TBMUIj#B5*nUg_2S!x6Z zBT5EzKB&&QprRJ5IkpT_8lbNhs)3rRhwGr4rO)^}iUDfuLDo=-It_EPXvmDH;^@NgZvC2mUH%(PMQdRO;@Jr*L5`k9H;F-;e< zT$QS_)2RamcS?0cOnnlyE0_mWC`dhz3aY@TLQ$$Fno=;uR1#q>!_-VrQ$lqVqeDBg zRSq!UQ0?4D?Ql0ecbMC{gX(OLlx&tt2pJ^{;%_wg9(C5prHZJ=FyIgd4Anu@4fgsfAuO#Mdj~sA-469{;HWFqWH*UA!gBC+r68(` zsEYITNz~8Kw^74X)pTcZ;awo8deE|71MUihO*>LArjmF{u(n*K`srPR(0xKnCs2V66D)*!*1 zVjC%Hr7Aog7F2c?cS>cCug?N^3fgr5Zk1Cbxx%fHYeA4uS4ZF0c8X@zgg!LKZE&Vr zdVKJ03GNgQT~=4X>fEHVn<_MK2WTm%Q0l(Yc9z;?zpDP&{fQXGor2={X7rYLOTXp* zhC0g;a6Qk0$aqb@;8w!5TJvl5efOP!JEh__)|GaKTnH}Vi|*?nId{_DVo|PQG^EY; zQsp*Tc%;iy0^F&d>v5;zSMFQ#Z~6SlfjhMWU~C_d%iSC`0Z=Tyf#MsG^j`RAeKFQk zh&EU%h=x_4xDC#vhPuh);*j01kHn`^XX6u8o_5=XdYAnj@%!q}?4Qa%^SD#DiuY^P z56yp7Z@K>~4y(QPAH}cns2lX_=F94LLCL--!JSfN_TUPe;;+R4Fr^RKm3mG*nOe41YJLxZil62dFbmyK=kZr5J25JVm8ul$&92n0 z%#&1M&cg={g1KnMLlxWU;I5`pbvJ_6fjgyg_?WL$r~do4>dE>qi8W88He36;E3B5& z6tZ)M#tRRLK6I>G^ia>(55l-XT&AMBMpV0F>X@n5B_LXP|cCbI2!3As)YoPdy1a~UIokmret*Nc?29?E~$`9SI<1V zek$=A#9?<--7*z=HE4~;?IR#GQk;zNuK1q&0f-K;BD%;<1=TeJZ_*5|Y`@w^1$;db z&}?uy;7+M;jj+RNYD=%g{i(9dT<{q)WD(YJNgR;x+qczj&>=(MJ9nu!?N{WN#0%8d zuMo4bh9lzJ?i=b`_9QjH8^Az3qt}_qAd}t}-&Vhj+f%FJ?NnXQqBa=ZDK)IWp^h{| zRIx>U(Y~fOJH|%!`BAX5&D4ETcdypj<>0YXQ24(3f&Ga(gv}1bQ8ba-)-3K+Tovct zSt{aN1MZZ1^u=O2w%d;8)JSkWb}B7QVZH%(3c6^Idly}=rHb+i2kw-DvaQ(PT9?J0 zQi1;+YVi9&TuyaY^+%ZtsR{8iY93Fii)L!{#rP}HlDJpbGw+|5r$BUrJ4M&OXx@xo zj31y9w-Y?X;ph-(5^$$-9vV823i^q7+7qC1_JY;uqB^|~I~$~u_9h64>*y7TLQg%B z!)$782Y6zb>OAI9P=j;TD!W22h|3}uw?=23Aj^` z0^m-?2WUJ$U>j$+r^ORQ5dENsVmP@4oZVgUvZur)s+qx^BJ2CX6>PK5>P_ZhJspXk z%X|>+wkJ5{V*<#&)ozWt-%Q58G+>2?sgpkoUh15!0}Cdp4rR`U;ye@SJS-s1Au0ZR z4n1nQzNpPo8Ph1;;JH?v7o!Vu3NBnxUJ$^RY1gc~f@#abQE*Kh*L%Rhg z_7oA#6Xr!d4Kxe5Q}HS8RG!H4cfULXe-=Rd4*Q~h+N`EpI*U71?}1>w3;tj!<5_3# zCnE5gdt4sJkJOtc{M0R?%3cCQU$08APt@q+kbGiiA}D5tHgvF!xpjJKWoESock24| zB?ImhtoH$^t8&k>czQ){wi`iTfI9^{@O|-pd4RK0z@3VE780xRQd6P*2y@e7`vtkp z%|PmiVPb2+$pH&W@_9I znGe(lAb-0xxKs6I_lDS^HZrsKXR7r+aS)_N%y}}aK@5-LPUTrpZilJzt|w~eq>ilC zx9UdD#Aq7nWCAFSs6yrxf}+@@?qse_1Zf&+J9wlhsT?lt#QVmHOVR`jfa3JiudmqpL!f+S~=uY3j2kw-)?{!*v1gq>d z=hY$c35ZNf{r`h%y;-N1QLBC1o(BDX9K>opXv!h}I_U9F3f!rzWlb`y#=EI*nx4cN z3l^U>iaTY_TPh#0^HrJXvlsL}taU%whhh*)JKRpO9Y66DvD+Z$h5ShT0xT)WbB~GQ z^qln|r>4pq_=au+?lj&URZ&L`?i649uKp-KA31Zsdckc6W41}(7e}e<@e#c@J{sL% zT{thZR&R3asKZaA!8Q7v0Uyh1vJ<4@5WKs?D$~dMAeD2tQ=+GS2a-%QVaw$phL^Dd z0C#GyDR8H5w>ZVSi}ed;y8?GAo>UJKYM*vL7C)4SIlEv29;%VE67C0aKa;57BxsLC zVkapNk7urDrT{U^JbMPOu#8yaHP8~z>6IW$TEVk?Y!Aw7c-$)UaP)Zms9psA^A^Z} zGoWOy$|lxOzH%M>3#his=2Fx`q+S|N0tEnCfi+t%G3QxOP_4{Q9`CV8%t8BZsT1}+ z^^QG&##PFVq*`8Lc74XJ2I1KZGV-VN+l0>scWRn-xqXxvVH}9uYic~`_3dUgv->T1 zQ5*wRGm1L}vA+%c=8F>CDYfWzAmR6;@3&Z$FL95`$B90t;W-W=s8pV(i( z8T8Oy!$%jWN5H&Qg6XKUkzOC~fVv7!?WtwP0@qGVR!7vf7JSeS^|AqXN@k%&9C!QV zN#^;q19$44RO_>7!e-90xF9d#H5zOS`3^7$Ae5RJX&Xq-d@yF^aNP48+^MSLM2jX? zXJtg#^U>HsR%~bFNAf*ZQQ%J1lc3tbZxS1?0x3~TEdOI7tQKtlHVCFJwE8J#|6%C6 zV@GkPtaVys4cf97FLer>#6seL9rh(8x0X1t&sB3$#(t0^1L?^l%TwS^^)hlJUFM3u zU}~5XujnSz&I;{Q+$rlm&DmY$Zh{1N$~@?wtw#UBo$4uemZ$<5Ho`oyAB^T+QBOW& zz1^x_0_pn{XEjuU4f@dhM1RO^H^R9DH6Z?Hs;5AXjsx-6Ox9sD=y!0ZpmQ&AHpOB0 zn}9nddifN0N&+m4J9QV}P!@M8HmK!b?FQ_1yk9MH26qa2=`In9KRfFN66&SRQV@Bc z;!ff970}psK|xly>70!)fvn4Q@T_~7=Rw-z<;W=qG*!cgm{dC^TsGAZN_HY{8wzE2HwbGpYt-bQ1iYRMXu9 z?h#JmnFDsCnOL?~an2TKsRl5DeMEHaAS=P0LRE>VkYyl4E8@Z^6SqW{<4deAW66mW z0e6bGxg-y{kHC#Jfw*3SuYN{6p&qp>K&5tx!yv2Q<-DR8{RekS263KQLdN5UxIz@W zRDwGN)%7XvlvubKds+(u4&12%cZyHGjh{R!!JXoPW{c(O;dn`EVtj`=^n$2U*G(38 zs_r8DUeydWS411$v(!vtotMR(k|()=yz4m6A&+=wmYf6arQEG`2jz!$4=6|%JwVj) zve$9@m|V^}vO$46ZlVW6eO;ft&$3t_`fq7m0qPa!Q>Qr_J%`0=bce zZVP8O>+14oLFNHYtEy6Y%$wj&@zSHXQ}C4o*f}^rbZ-bG5V%up zvl5*xAm4P8`KkeYV?NQ_WMnrD080k?j@b{@`&j4={Qel+saPz>6Ghc>2FpQl#Ga1M zWKKkFZkF8?t}Hw8owDk!mY2l^{%<2jSjQPxFMu50K-5^w`n($ce1atn z!>t)|fmp~K2#VKrg2!$ZS9NvfRO%d9$eYl88;>~7P9PuTvz!z0>E1?r?QPYbJX&}nd|oM<+aQ_03-g@QP- zgPFO>b~1zZ5mVG~4#maHrF7j$Yih{k%PE}2vmlzoiYUb?DFYxBo5^?%;cuqm9l@P) zeTV#K4d;d&;CzT`JlT9sLU==hJC%8H7J-^w$Xac&n<0wXLjW7cd32ob=rgfMq(Pr&{kPYB zDE1Or)-ywuFbh?2##5ObM`Z7FQhA(?G?leBSW)ukU0D6)_;OThs>Mm(?jnD^0?hXp zS+#DUmvQ7cd(ot;oE>OA?v&Mt&)s&C({06X4w2C)=j5Uia$OnLJ~!QEaglSTZW4RD zRApvKw8pHJ$Sx!T7j1nqbP|#CUuX`w2P|_mP+E;Y7gOXv8&U+cWwU2=sH} zDrb`Qk!dCy%k16-h7#NUUsiqnFVT@JFjux;DAn%Q7mAW zA*~2qQ!(e_aH1x=T{tThfoR2{5p@i4{sy>He8i`?Q+6jN;x$Xy4axUtPI06zQmbu_=mENYqE5eBd8M +#include +#include + +#define WIDTH (400) +#define HEIGHT (300) + +static const char commands[] = \ + "commands are:\n" + "\t+ - increase frametime\n" + "\t- - decrease frametime\n" + "\t= - status of the animation\n" + "\ts - pause\n" + "\tp - play\n" + "\tf - freeze one object\n" + "\tF - freeze all objects\n" + "\tt - thaw one object\n" + "\tT - thaw all objects\n" + "\ta - start animation of one object\n" + "\tA - stop animation of one object\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static double frametime = 1.0 / 30.0; /* default value */ + +static void +_on_delete_cb(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + Evas_Object *edje_obj; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); +} + +static void +_on_key_down(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Key_Down *ev; + double ft; + + ev = (Evas_Event_Key_Down *)event_info; + + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + else if (!strcmp(ev->key, "plus")) + { + frametime *= 2.0; + fprintf(stdout, "Increasing frametime to: %f\n", frametime); + edje_frametime_set(frametime); + } + else if (!strcmp(ev->key, "minus")) + { + frametime /= 2.0; + fprintf(stdout, "Decreasing frametime to: %f\n", frametime); + edje_frametime_set(frametime); + } + else if (!strcmp(ev->key, "equal")) + { + ft = edje_frametime_get(); + fprintf(stdout, "Frametime: %f\n", ft); + if (edje_object_play_get(obj)) + fprintf(stdout, "Object is playing\n"); + else + fprintf(stdout, "Object was paused\n"); + if (edje_object_animation_get(obj)) + fprintf(stdout, "Animation is running\n"); + else + fprintf(stdout, "Animation was stopped\n"); + } + else if (!strcmp(ev->key, "s")) + { + edje_object_play_set(obj, EINA_FALSE); + fprintf(stdout, "Pausing the object\n"); + } + else if (!strcmp(ev->key, "p")) + { + edje_object_play_set(obj, EINA_TRUE); + fprintf(stdout, "Playing the object\n"); + } + else if (!strcmp(ev->key, "f")) + fprintf(stdout, "Freezing object. Count: %d\n", edje_object_freeze(obj)); + else if (!strcmp(ev->key, "t")) + fprintf(stdout, "Thawing object. Count: %d\n", edje_object_thaw(obj)); + else if (!strcmp(ev->key, "F")) + { + edje_freeze(); + fprintf(stdout, "Freezing all objects\n"); + } + else if (!strcmp(ev->key, "T")) + { + edje_thaw(); + fprintf(stdout, "Thawing all objects\n"); + } + else if (!strcmp(ev->key, "a")) + { + edje_object_animation_set(obj, EINA_TRUE); + fprintf(stdout, "Starting the animation in the Edje object\n"); + } + else if (!strcmp(ev->key, "A")) + { + edje_object_animation_set(obj, EINA_FALSE); + fprintf(stdout, "Stopping the animation in the Edje object\n"); + } + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "animations.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete_cb); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Animations Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "animations_group"); + evas_object_move(edje_obj, 0, 0); + evas_object_resize(edje_obj, WIDTH, HEIGHT); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + evas_object_event_callback_add(edje_obj, EVAS_CALLBACK_KEY_DOWN, + _on_key_down, NULL); + evas_object_focus_set(edje_obj, EINA_TRUE); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-basic.c b/src/examples/edje-basic.c new file mode 100644 index 0000000..8a85312 --- /dev/null +++ b/src/examples/edje-basic.c @@ -0,0 +1,257 @@ +/** + * Simple Edje example illustrating the very basic functions of the + * library + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * gcc -o edje-basic edje-basic.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include + +#include +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +static const char commands[] = \ + "commands are:\n" + "\ts - change Edje's global scaling factor\n" + "\tr - change center rectangle's scaling factor\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static void +_on_keydown(void *data, + Evas *evas __UNUSED__, + Evas_Object *o __UNUSED__, + void *einfo) +{ + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = (Evas_Object *)data; + + if (strcmp(ev->keyname, "h") == 0) /* print help */ + { + fprintf(stdout, commands); + return; + } + else if (strcmp(ev->keyname, "s") == 0) /* global scaling factor */ + { + double scale = edje_scale_get(); + + printf("got scale %f\n", scale); + + if (scale != 1.0) scale = 1.0; + else scale = 2.0; + + edje_scale_set(scale); + + fprintf(stdout, "Setting global scaling factor to %f.\n", scale); + + return; + } + else if (strcmp(ev->keyname, "r") == 0) /* individual scaling factor */ + { + double scale = edje_object_scale_get(edje_obj); + + printf("got scale %f\n", scale); + + if (!scale) scale = 1.0; + else if (scale == 1.0) scale = 2.0; + else scale = 0.0; + + edje_object_scale_set(edje_obj, scale); + + fprintf(stdout, "Setting center rectangle's scaling factor to %f.\n", + scale); + + return; + } + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char border_img_path[PATH_MAX]; + char edje_file_path[PATH_MAX]; + const char *edje_file = "basic.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *border; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + int x; + int y; + int w; + int h; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Edje Basics Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + evas_object_focus_set(bg, EINA_TRUE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + printf("%s\n", edje_file_path); + /* exercising Edje loading error, on purpose */ + if (!edje_object_file_set(edje_obj, edje_file_path, "unexistant_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load 'unexistant_group' from basic.edj:" + " %s\n", errmsg); + } + + if (!edje_object_file_set(edje_obj, edje_file_path, "example_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load 'example_group' from basic.edj: %s\n", + errmsg); + + evas_object_del(edje_obj); + goto free_prefix; + } + + fprintf(stdout, "Loaded Edje object bound to group 'example_group' from" + " file basic.edj with success!\n"); + + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, edje_obj); + + snprintf(border_img_path, sizeof(border_img_path), + "%s/edje/examples/red.png", eina_prefix_data_get(pfx)); + + /* this is a border around the Edje object above, here just to + * emphasize its geometry */ + border = evas_object_image_filled_add(evas); + evas_object_image_file_set(border, border_img_path, NULL); + evas_object_image_border_set(border, 2, 2, 2, 2); + evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE); + + evas_object_resize(border, WIDTH - 40 + 4, HEIGHT - 40 + 4); + evas_object_move(border, 20 - 2, 20 - 2); + evas_object_show(border); + + fprintf(stdout, "'example_data' data field in group 'example_group' has " + "the value: %s\n", edje_object_data_get(edje_obj, + "example_data")); + + fprintf(stdout, "Testing if 'part_one' part exists: %s\n", + edje_object_part_exists(edje_obj, "part_one") ? "yes!" : "no"); + + edje_object_part_geometry_get(edje_obj, "part_one", &x, &y, &w, &h); + fprintf(stdout, "The geometry of that part inside the Edje object's area " + "is: x = %d, y = %d, w = %d, h = %d\n", x, y, w, h); + + evas_object_color_get(edje_object_part_object_get(edje_obj, "part_one"), + &x, &y, &w, &h); + fprintf(stdout, "That part's color components are: r = %d, g = %d, b = %d," + " a = %d\n", x, y, w, h); + + edje_object_size_max_get(edje_obj, &w, &h); + fprintf(stdout, "The Edje object's max. size is: %d, %d\n", w, h); + + edje_object_size_min_get(edje_obj, &w, &h); + fprintf(stdout, "The Edje object's min. size is: %d, %d\n", w, h); + + edje_object_size_min_calc(edje_obj, &w, &h); + fprintf(stdout, "The Edje object's min. size reported by min. size" + " calculation is: w = %d, h = %d\n", w, h); + + edje_object_size_min_restricted_calc(edje_obj, &w, &h, 500, 500); + fprintf(stdout, "The Edje object's min. size reported by *restricted* " + "min. size calculation is: w = %d, h = %d\n", w, h); + + edje_object_parts_extends_calc(edje_obj, &x, &y, &w, &h); + fprintf(stdout, "The Edje object's \"extended\" geometry is: x = %d, " + "y = %d, w = %d, h = %d\n", x, y, w, h); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-basic2.c b/src/examples/edje-basic2.c new file mode 100644 index 0000000..6233fae --- /dev/null +++ b/src/examples/edje-basic2.c @@ -0,0 +1,171 @@ +/** +* @verbatim +* gcc -o edje-basic2 edje-basic2.c `pkg-config --libs --cflags evas ecore ecore-evas edje` +* @endverbatim +*/ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include + +#include +#include +#include +#include + +#define WIDTH (700) +#define HEIGHT (700) + +#define WALK 10 + +static const char commands[] = "commands are:\nEsc - Exit\nUp - move image up\nDown - move image down\n"\ + "Right - move image to right\nLeft - move image to left\n"; + +static void +_on_key_down(void *data, + Evas *evas __UNUSED__, + Evas_Object *o __UNUSED__, + void *einfo) +{ + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + int x,y; + + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = (Evas_Object *)data; + + evas_object_geometry_get(edje_obj, &x, &y, NULL, NULL); + + if(strcmp(ev->keyname,"Escape") == 0) + { + ecore_main_loop_quit(); + } + else if(strcmp(ev->keyname, "Down") == 0) + { + y+=WALK; + } + else if(strcmp(ev->keyname, "Up") == 0) + { + y-=WALK; + } + else if(strcmp(ev->keyname, "Right") == 0) + { + x+=WALK; + } + else if(strcmp(ev->keyname, "Left") == 0) + { + x-=WALK; + } + else + { + fprintf(stdout, "Key %s not supported.\nCommands:%s", ev->keyname, commands); + return; + } + + evas_object_move(edje_obj, x, y); +} + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char **argv) +{ + const char *edje_file = "basic2.edj"; + char edje_file_path[PATH_MAX]; + Eina_Prefix *pfx; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + + if(!ecore_evas_init()) + return EXIT_FAILURE; + + if(!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + + if(!pfx) + goto shutdown_edje; + + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + + if(!ee) + goto eina_prefix_free; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Edje show image"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); //White + evas_object_move(bg, 0, 0); //orign + evas_object_resize(bg, WIDTH, HEIGHT); //cover the window + evas_object_show(bg); + + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + evas_object_focus_set(bg, EINA_TRUE); + + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + + if(!edje_object_file_set(edje_obj, edje_file_path, "image_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load the edje file - reason:%s\n", errmsg); + goto eina_prefix_free; + } + + + + evas_object_move(edje_obj, 50, 50); + evas_object_resize(edje_obj, 64, 64); + evas_object_show(edje_obj); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_key_down, edje_obj); + + ecore_evas_show(ee); + + fprintf(stdout, "%s", commands); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + edje_shutdown(); + ecore_evas_shutdown(); + + return EXIT_SUCCESS; + +eina_prefix_free: + eina_prefix_free(pfx); + +shutdown_edje: + edje_shutdown(); + +shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-box.c b/src/examples/edje-box.c new file mode 100644 index 0000000..2b0cbda --- /dev/null +++ b/src/examples/edje-box.c @@ -0,0 +1,252 @@ +/** + * Simple Edje example illustrating box functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc box.edc && gcc -o edje-box edje-box.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH 300 +#define HEIGHT 300 + +#define RECTW 30 +#define RECTH 30 + +#define NRECTS 20 + +static const char commands[] = \ + "commands are:\n" + "\ti - prepend rectangle\n" + "\ta - append rectangle\n" + "\tc - remove\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static void +_on_destroy(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* here just to keep our example's window size and background image's + * size in synchrony */ +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + Evas_Object *edje_obj; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); +} + +static void +_on_rect_mouse_down(void *data, Evas *e, Evas_Object *o, void *event_info) +{ + Ecore_Evas *ee; + Evas_Event_Mouse_Down *ev; + Evas_Object *edje_obj; + + ee = (Ecore_Evas *)data; + ev = (Evas_Event_Mouse_Down *)event_info; + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + + if (ev->button == 1) + { + printf("Removing rect %p under the mouse pointer.\n", o); + edje_object_part_box_remove(edje_obj, "example/box", o); + evas_object_del(o); + } + else if (ev->button == 3) + { + Evas_Object *rect; + Eina_Bool r; + + rect = evas_object_rectangle_add(e); + evas_object_color_set(rect, 0, 0, 255, 255); + evas_object_resize(rect, RECTW + 10, RECTH); + evas_object_show(rect); + + printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); + r = edje_object_part_box_insert_before(edje_obj, "example/box", rect, o); + if (!r) + printf("An error ocurred when appending rect %p to the box.\n", rect); + + evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); + } +} + +static void +_on_bg_key_down(void *data, Evas *e, Evas_Object *o __UNUSED__, void *event_info) +{ + Ecore_Evas *ee; + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + Evas_Object *rect; + Eina_Bool r; + + ee = (Ecore_Evas *)data; + ev = (Evas_Event_Key_Down *)event_info; + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + if (!strcmp(ev->keyname, "i")) + { + rect = evas_object_rectangle_add(e); + evas_object_color_set(rect, 0, 0, 128, 255); + evas_object_resize(rect, RECTW + 30, RECTH); + evas_object_show(rect); + + printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); + r = edje_object_part_box_insert_at(edje_obj, "example/box", rect, 0); + if (!r) + printf("An error ocurred when appending rect %p to the box.\n", rect); + + evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); + } + else if (!strcmp(ev->keyname, "a")) + { + rect = evas_object_rectangle_add(e); + evas_object_color_set(rect, 0, 128, 0, 255); + evas_object_resize(rect, RECTW, RECTH); + evas_object_show(rect); + + printf("Inserting rect %p before the rectangle under the mouse pointer.\n", rect); + r = edje_object_part_box_append(edje_obj, "example/box", rect); + if (!r) + printf("An error ocurred when appending rect %p to the box.\n", rect); + + evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, NULL); + } + else if (!strcmp(ev->keyname, "c")) + edje_object_part_box_remove_all(edje_obj, "example/box", EINA_TRUE); + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "box.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + int i; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_destroy_set(ee, _on_destroy); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Box Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); + evas_object_resize(bg, WIDTH, HEIGHT); + evas_object_focus_set(bg, EINA_TRUE); + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, ee); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example/group"); + evas_object_move(edje_obj, 0, 0); + evas_object_resize(edje_obj, WIDTH, HEIGHT); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + for (i = 0; i < NRECTS; i++) + { + Evas_Object *rect; + Eina_Bool r = EINA_FALSE; + int red = (i * 10) % 256; + rect = evas_object_rectangle_add(evas); + evas_object_color_set(rect, red, 0, 0, 255); + evas_object_resize(rect, RECTW, RECTH); + r = edje_object_part_box_append(edje_obj, "example/box", rect); + if (!r) + printf("An error ocurred when appending rect #%d to the box.\n", i); + evas_object_show(rect); + + evas_object_event_callback_add( + rect, EVAS_CALLBACK_MOUSE_DOWN, _on_rect_mouse_down, ee); + } + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-box2.c b/src/examples/edje-box2.c new file mode 100644 index 0000000..81f1a90 --- /dev/null +++ b/src/examples/edje-box2.c @@ -0,0 +1,247 @@ +/** + * Simple Edje example illustrating a custom box layout. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc box.edc && gcc -o edje-box2 edje-box2.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#include +#include +#include +#include + +static const char commands[] = \ + "commands are:\n" + "\tShift - remove box\n" + "\tCtrl - insert box\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static void +custom_layout(Evas_Object *o, Evas_Object_Box_Data *p, void *data __UNUSED__) +{ + Evas_Object_Box_Option *opt; + Eina_List *l; + int x, y, w, h; + int xx, yy, ww, hh; + int count; + + evas_object_geometry_get(o, &x, &y, &w, &h); + count = eina_list_count(p->children); + ww = w / (count?:1); + hh = h / (count?:1); + if (ww < 1) ww = 1; + if (hh < 1) hh = 1; + + xx = x; + yy = y; + EINA_LIST_FOREACH(p->children, l, opt) + { + evas_object_move(opt->obj, xx, yy); + xx += ww; + yy += hh; + } +} + +static Evas_Object * +new_greenie_block(Evas *e) +{ + Evas_Object *o; + + o = evas_object_rectangle_add(e); + evas_object_resize(o, 10, 10); + evas_object_color_set(o, 0, 255, 0, 255); + evas_object_show(o); + + return o; +} + +static void +on_keydown(void *data, Evas *evas, Evas_Object *o __UNUSED__, void *einfo) +{ + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + const Evas_Modifier *mods; + + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = (Evas_Object *)data; + + mods = evas_key_modifier_get(evas); + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + if (evas_key_modifier_is_set(mods, "Shift")) + { + int pos; + Evas_Object *obj = NULL; + pos = atoi(ev->keyname); + obj = edje_object_part_box_remove_at(edje_obj, "example/box", pos); + if (obj) + evas_object_del(obj); + return; + } + if (evas_key_modifier_is_set(mods, "Control")) + { + Evas_Object *obj; + int pos; + pos = atoi(ev->keyname); + obj = new_greenie_block(evas); + if (!edje_object_part_box_insert_at(edje_obj, "example/box", obj, pos)) + edje_object_part_box_append(edje_obj, "example/box", obj); + return; + } + if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); +} + +static Evas_Object * +box_new(Ecore_Evas *ee, const char *edje_file_path, const char *name, int x, int y, int w, int h) +{ + Evas_Object *edje_obj; + + edje_obj = edje_object_add(ecore_evas_get(ee)); + evas_object_move(edje_obj, x, y); + evas_object_resize(edje_obj, w, h); + if (!edje_object_file_set(edje_obj, edje_file_path, "example/group2")) + { + printf("error: could not load file object.\n"); + } + evas_object_show(edje_obj); + evas_object_name_set(edje_obj, name); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + return edje_obj; +} + +static void +on_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + Evas_Object *edje_obj; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); +} + +static void +on_destroy(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "box.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Evas_Object *last; + Evas_Object *o; + Eina_Prefix *pfx; + int w; + int h; + int i; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, 640, 480, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_resize_set(ee, on_resize); + ecore_evas_callback_destroy_set(ee, on_destroy); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_resize(bg, w, h); + evas_object_show(bg); + evas_object_focus_set(bg, 1); + ecore_evas_data_set(ee, "background", bg); + + edje_box_layout_register("custom_layout", custom_layout, NULL, NULL, NULL, NULL); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_obj = box_new(ee, edje_file_path, "box", 0, 0, w, h); + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, on_keydown, edje_obj); + + for (i = 1; i <= 5; i++) + { + o = last = evas_object_rectangle_add(evas); + evas_object_size_hint_min_set(o, 50, 50); + evas_object_resize(o, 50, 50); + evas_object_color_set(o, 255, 0, 0, 128); + evas_object_show(o); + + if (!edje_object_part_box_append(edje_obj, "example/box", o)) + { + fprintf(stderr, "error appending child object!\n"); + return 1; + } + } + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-color-class.c b/src/examples/edje-color-class.c new file mode 100644 index 0000000..8d073d0 --- /dev/null +++ b/src/examples/edje-color-class.c @@ -0,0 +1,295 @@ +/** + * Simple Edje example illustrating color class functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc color-class.edc && gcc -o edje-table edje-color-class.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH (400) +#define HEIGHT (400) + +typedef int color[4]; /* rgba */ + +static Ecore_Evas *ee1, *ee2; +static Evas *evas1, *evas2; +static Evas_Object *bg1, *edje_obj1, *bg2, *edje_obj2; +static const char *selected_class; + +static color colors_init_data[] = + {{255, 0, 0, 255}, /* red */ + {0, 255, 0, 255}, /* green */ + {0, 0, 255, 255}, /* blue */ + {0, 0, 0, 255}, /* black */ + {255, 255, 255, 255}, /* white */ + {128, 128, 128, 255}, /* gray */ + {255, 255, 0, 255}, /* yellow */ + {255, 0, 255, 255} /* pink */ + }; + +static char *color_names[] = + {"red", "green", "blue", "black", "white", + "gray", "yellow", "pink"}; + +static Eina_Bool +_get_color_from_name(const char *n, color *c) +{ + int i; + for (i = 0; i < 8; i++) + if (!strcmp(n, color_names[i])) + { + (*c)[0] = (colors_init_data[i])[0]; + (*c)[1] = (colors_init_data[i])[1]; + (*c)[2] = (colors_init_data[i])[2]; + (*c)[3] = (colors_init_data[i])[3]; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +static void +_color_classes_print(void) +{ + Eina_List *classes; + char *class_name; + + fprintf(stdout, "Getting the color classes\n\n"); + classes = edje_color_class_list(); + EINA_LIST_FREE(classes, class_name) + { + int r1, r2, r3, g1, g2, g3, b1, b2, b3, + a1, a2, a3; + + fprintf(stdout, "\ncolor class: %s\n", class_name); + if (!edje_color_class_get(class_name, &r1, &g1, &b1, &a1, + &r2, &g2, &b2, &a2, &r3, &g3, &b3, &a3)) + fprintf(stderr, "Cannot get the color class\n"); + else + { + + fprintf(stdout,"Object color r: %d g: %d b: %d a: %d\n", + r1, g1, b1, a1); + fprintf(stdout,"Text outline color r: %d g: %d b: %d a: %d\n", + r2, g2, b2, a2); + fprintf(stdout,"Text shadow color r: %d g: %d b: %d a: %d\n", + r3, g3, b3, a3); + } + free(class_name); + } +} + +static void +_on_destroy(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +static void +_on_mouse_down(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev = event_info; + + if (ev->button == 1) + { + if (obj == edje_obj1) + edje_color_class_del(selected_class); + else + edje_object_color_class_del(edje_obj2, selected_class); + } +} + +/* here just to keep our example's window size + * in synchrony. */ +static void +_canvas_resize_cb(Ecore_Evas *_ee) +{ + int w, h; + + ecore_evas_geometry_get(_ee, NULL, NULL, &w, &h); + + if (_ee == ee1) + { + evas_object_resize(bg1, w, h); + evas_object_resize(edje_obj1, w, h); + } + else + { + evas_object_resize(bg2, w, h); + evas_object_resize(edje_obj2, w, h); + } +} + +static void +_color_class_callback_delete(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, + const char *emission, void *source __UNUSED__) +{ + if (!strcmp(data, "process")) + fprintf(stdout, "Color class: %s deleted on process level\n", emission); + else + fprintf(stdout, "Color class: %s deleted on object level\n", emission); +} + +static int +_create_windows(const char *edje_file_path) +{ + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee1 = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee1) + return 0; + ee2 = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee2) + return 0; + + ecore_evas_callback_destroy_set(ee1, _on_destroy); + ecore_evas_callback_resize_set(ee1, _canvas_resize_cb); + ecore_evas_title_set(ee1, "Edje Color Class Example"); + + ecore_evas_callback_destroy_set(ee2, _on_destroy); + ecore_evas_callback_resize_set(ee2, _canvas_resize_cb); + ecore_evas_title_set(ee2, "Edje Object Color Class Example"); + + evas1 = ecore_evas_get(ee1); + evas2 = ecore_evas_get(ee2); + + bg1 = evas_object_rectangle_add(evas1); + evas_object_color_set(bg1, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg1, 0, 0); /* at canvas' origin */ + evas_object_resize(bg1, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg1); + + bg2 = evas_object_rectangle_add(evas2); + evas_object_color_set(bg2, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg2, 0, 0); /* at canvas' origin */ + evas_object_resize(bg2, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg2); + + edje_obj1 = edje_object_add(evas1); + evas_object_event_callback_add(edje_obj1, EVAS_CALLBACK_MOUSE_DOWN, + _on_mouse_down, NULL); + + edje_object_file_set(edje_obj1, edje_file_path, "example_color_class"); + evas_object_move(edje_obj1, 0, 0); /* at canvas' origin */ + evas_object_resize(edje_obj1, WIDTH, HEIGHT); + edje_object_part_text_set(edje_obj1, "part_four", "EDJE EXAMPLE"); + edje_object_signal_callback_add(edje_obj1, "color_class,del", "*", + (Edje_Signal_Cb) _color_class_callback_delete, + "process"); + evas_object_show(edje_obj1); + + edje_obj2 = edje_object_add(evas2); + evas_object_event_callback_add(edje_obj2, EVAS_CALLBACK_MOUSE_DOWN, + _on_mouse_down, NULL); + + edje_object_file_set(edje_obj2, edje_file_path, "example_color_class"); + evas_object_move(edje_obj2, 0, 0); /* at canvas' origin */ + evas_object_resize(edje_obj2, WIDTH, HEIGHT); + edje_object_part_text_set(edje_obj2, "part_four", "EDJE OBJECT EXAMPLE"); + edje_object_signal_callback_add(edje_obj2, "color_class,del", "*", + (Edje_Signal_Cb) _color_class_callback_delete, + "object"); + evas_object_show(edje_obj2); + + return 1; +} + +int +main(int argc, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "color-class.edj"; + Eina_Prefix *pfx; + color c1, c2, c3; + int i; + + if (argc != 5) + { + fprintf(stderr, "You have to use: %s color_class_name color1, color2," \ + "color3\n", argv[0]); + fprintf(stderr, "Available colors:\n"); + for (i = 0; i < 8; i++) + fprintf(stderr, "%s\n", color_names[i]); + + return EXIT_FAILURE; + } + + selected_class = argv[1]; + if (!(_get_color_from_name(argv[2], &c1) && + _get_color_from_name(argv[3], &c2) && + _get_color_from_name(argv[4], &c3))) + { + fprintf(stderr, "Color not available!\n"); + return EXIT_FAILURE; + } + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + if (!_create_windows(edje_file_path)) + goto free_prefix; + + edje_color_class_set(argv[1], /* class name */ + c1[0], c1[1], c1[2], c1[3], /* Object color */ + c2[0], c2[1], c2[2], c2[3], /* Text outline */ + c3[0], c3[1], c3[2], c3[3]); /* Text shadow */ + + /* Setting an arbitrary value just to see the difference between */ + /* process level and object level */ + edje_object_color_class_set(edje_obj2, argv[1], /* class name */ + 128, 180, 77, 255, /* Object color */ + 200, 22, 86, 255, /* Text outline */ + 39, 90, 187, 255); /* Text shadow */ + + _color_classes_print(); + + ecore_evas_show(ee1); + ecore_evas_show(ee2); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee1); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-drag.c b/src/examples/edje-drag.c new file mode 100644 index 0000000..bb61b68 --- /dev/null +++ b/src/examples/edje-drag.c @@ -0,0 +1,210 @@ +/** + * Simple Edje example illustrating drag functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc drag.edc && gcc -o drag-box drag-box.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH 300 +#define HEIGHT 300 + +#define RECTW 30 +#define RECTH 30 + +#define NRECTS 20 + +static const char commands[] = \ + "commands are:\n" + "\tDdown - set drag step to 1\n" + "\tUp - set drag step to -1\n" + "\tm - set drag value to 0.5\n" + "\tPrior - set drag page to -1\n" + "\tNext - set drag page to -1\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static const char *PARTNAME = "example/knob"; + +static void +_on_destroy(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* here just to keep our example's window size and background image's + * size in synchrony */ +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + Evas_Object *edje_obj; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); +} + +static void +_on_bg_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info) +{ + Ecore_Evas *ee; + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + + ee = (Ecore_Evas *)data; + ev = (Evas_Event_Key_Down *)event_info; + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + else if (!strcmp(ev->keyname, "Down")) + { + edje_object_part_drag_step(edje_obj, PARTNAME, 0, 1.0); + } + else if (!strcmp(ev->keyname, "Up")) + { + edje_object_part_drag_step(edje_obj, PARTNAME, 0, -1.0); + } + else if (!strcmp(ev->keyname, "m")) + { + edje_object_part_drag_value_set(edje_obj, PARTNAME, 0.0, 0.5); + } + else if (!strcmp(ev->keyname, "Prior")) + { + edje_object_part_drag_page(edje_obj, PARTNAME, 0.0, -1.0); + } + else if (!strcmp(ev->keyname, "Next")) + { + edje_object_part_drag_page(edje_obj, PARTNAME, 0.0, 1.0); + } + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +static void +_on_knob_moved(void *data __UNUSED__, Evas_Object *o, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + double val; + + edje_object_part_drag_value_get(o, PARTNAME, NULL, &val); + printf("value changed to: %0.3f\n", val); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "drag.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_destroy_set(ee, _on_destroy); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Box Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); + evas_object_resize(bg, WIDTH, HEIGHT); + evas_object_focus_set(bg, EINA_TRUE); + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, ee); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example/group"); + evas_object_move(edje_obj, 0, 0); + evas_object_resize(edje_obj, WIDTH, HEIGHT); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + edje_object_part_drag_size_set(edje_obj, PARTNAME, 1.0, 0.4); + + if (!edje_object_part_drag_step_set(edje_obj, PARTNAME, 0.0, 0.1)) + printf("error when setting drag step size.\n"); + + if (!edje_object_part_drag_page_set(edje_obj, PARTNAME, 0.0, 0.3)) + printf("error when setting drag page step size.\n"); + + edje_object_signal_callback_add(edje_obj, "drag", PARTNAME, _on_knob_moved, NULL); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-multisense.c b/src/examples/edje-multisense.c new file mode 100644 index 0000000..c66c568 --- /dev/null +++ b/src/examples/edje-multisense.c @@ -0,0 +1,80 @@ +/** + * Simple example illustrating the very basic functions of multisense + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one) and multisense support ine edje. See stdout/stderr for output. + * + * @verbatim + * gcc -o edje-multisense edje-multisense.c `pkg-config --libs --cflags eina evas ecore ecore-evas edje` + * @endverbatim + */ + +#include +#include +#include +#include +#include + +#define WIDTH 300 +#define HEIGHT 300 + +static Evas_Object *create_my_group(Evas *canvas) +{ + Evas_Object *edje; + + edje = edje_object_add(canvas); + if (!edje) + { + EINA_LOG_CRIT("could not create edje object!"); + return NULL; + } + + if (!edje_object_file_set(edje, "multisense.edj", "example_group")) + { + int err = edje_object_load_error_get(edje); + const char *errmsg = edje_load_error_str(err); + EINA_LOG_ERR("could not load 'example_group' from multisense.edj: %s", + errmsg); + + evas_object_del(edje); + return NULL; + } + + evas_object_move(edje, 0, 0); + evas_object_resize(edje, WIDTH, HEIGHT); + evas_object_show(edje); + return edje; +} + +int main(int argc, char *argv[]) +{ + Ecore_Evas *window; + Evas *canvas; + Evas_Object *edje; + + ecore_evas_init(); + edje_init(); + + window = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!window) + { + EINA_LOG_CRIT("could not create window."); + return -1; + } + canvas = ecore_evas_get(window); + + edje = create_my_group(canvas); + if (!edje) + return -2; + + ecore_evas_show(window); + ecore_main_loop_begin(); + + evas_object_del(edje); + ecore_evas_free(window); + + edje_shutdown(); + ecore_evas_shutdown(); + + return 0; +} diff --git a/src/examples/edje-perspective.c b/src/examples/edje-perspective.c new file mode 100644 index 0000000..1037043 --- /dev/null +++ b/src/examples/edje-perspective.c @@ -0,0 +1,253 @@ +/** + * Simple Edje example illustrating drag functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc drag.edc && gcc -o drag-box drag-box.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH 480 +#define HEIGHT 320 + +static const char commands[] = \ + "commands are:\n" + "\tDown - move part down\n" + "\tUp - move part up\n" + "\tLeft - move part left\n" + "\tRight - move part right\n" + "\tPrior - move part up-left\n" + "\tNext - move part down-right\n" + "\tInsert - increase focal\n" + "\tSuppr - decrease focal\n" + "\tEsc - exit\n" + "\th - print help\n"; + +struct _App { + Evas_Object *edje_obj; + Evas_Object *bg; + Edje_Perspective *ps; + Eina_Bool animating; + int x, y; // relative position of part in the screen + int focal; +}; + +static void +_on_destroy(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* here just to keep our example's window size and background image's + * size in synchrony */ +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + int w, h; + struct _App *app = ecore_evas_data_get(ee, "app"); + + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(app->bg, w, h); + evas_object_resize(app->edje_obj, w, h); +} + +static void +_part_move(struct _App *app, int dx, int dy) +{ + char emission[64]; + + if (app->animating) + return; + + app->x += dx; + app->y += dy; + if (app->x > 1) + app->x = 1; + if (app->x < 0) + app->x = 0; + if (app->y > 1) + app->y = 1; + if (app->y < 0) + app->y = 0; + + snprintf(emission, sizeof(emission), "move,%d,%d", app->x, app->y); + edje_object_signal_emit(app->edje_obj, emission, ""); + app->animating = EINA_TRUE; +} + + +static void +_on_bg_key_down(void *data, Evas *e __UNUSED__, Evas_Object *o __UNUSED__, void *event_info) +{ + struct _App *app = data; + Evas_Event_Key_Down *ev = event_info; + + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + // just moving the part and text + else if (!strcmp(ev->keyname, "Down")) + { + _part_move(app, 0, 1); + } + else if (!strcmp(ev->keyname, "Up")) + { + _part_move(app, 0, -1); + } + else if (!strcmp(ev->keyname, "Left")) + { + _part_move(app, -1, 0); + } + else if (!strcmp(ev->keyname, "Right")) + { + _part_move(app, 1, 0); + } + else if (!strcmp(ev->keyname, "Prior")) + { + _part_move(app, -1, -1); + } + else if (!strcmp(ev->keyname, "Next")) + { + _part_move(app, 1, 1); + } + // adjusting the perspective focal point distance + else if (!strcmp(ev->keyname, "KP_Add")) + { + app->focal += 5; + edje_perspective_set(app->ps, 240, 160, 0, app->focal); + edje_object_calc_force(app->edje_obj); + } + else if (!strcmp(ev->keyname, "KP_Subtract")) + { + app->focal -= 5; + if (app->focal < 5) + app->focal = 5; + + edje_perspective_set(app->ps, 240, 160, 0, app->focal); + edje_object_calc_force(app->edje_obj); + } + // exiting + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +static void +_animation_end_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + struct _App *app = data; + + app->animating = EINA_FALSE; +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "perspective.edj"; + struct _App app; + Ecore_Evas *ee; + Evas *evas; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + edje_frametime_set(1.0 / 60.0); + + /* this will give you a window with an Evas canvas under the first + * engine available */ + app.animating = EINA_FALSE; + app.x = 0; + app.y = 0; + app.focal = 50; + + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_destroy_set(ee, _on_destroy); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Box Example"); + + ecore_evas_data_set(ee, "app", &app); + + evas = ecore_evas_get(ee); + + app.bg = evas_object_rectangle_add(evas); + evas_object_color_set(app.bg, 255, 255, 255, 255); + evas_object_resize(app.bg, WIDTH, HEIGHT); + evas_object_focus_set(app.bg, EINA_TRUE); + evas_object_show(app.bg); + + evas_object_event_callback_add(app.bg, EVAS_CALLBACK_KEY_DOWN, _on_bg_key_down, &app); + + app.edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(app.edje_obj, edje_file_path, "example/group"); + evas_object_move(app.edje_obj, 0, 0); + evas_object_resize(app.edje_obj, WIDTH, HEIGHT); + evas_object_show(app.edje_obj); + + edje_object_signal_callback_add(app.edje_obj, "animation,end", "", _animation_end_cb, &app); + + app.ps = edje_perspective_new(evas); + edje_perspective_set(app.ps, 240, 160, 0, app.focal); + edje_perspective_global_set(app.ps, EINA_TRUE); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-signals-messages.c b/src/examples/edje-signals-messages.c new file mode 100644 index 0000000..4949415 --- /dev/null +++ b/src/examples/edje-signals-messages.c @@ -0,0 +1,254 @@ +/** + * Simple Edje example illustrating the Edje signals and messages + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * gcc -o edje-signals-messages edje-signals-messages.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#define __UNUSED__ +#endif + +#include +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +#define MSG_COLOR 1 +#define MSG_TEXT 2 + +static const char commands[] = \ + "commands are:\n" + "\tt - toggle right rectangle's visibility\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static Eina_Bool right_rect_show = EINA_TRUE; + +static void +_on_keydown(void *data, + Evas *evas __UNUSED__, + Evas_Object *o __UNUSED__, + void *einfo) +{ + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = (Evas_Object *)data; + + if (!strcmp(ev->keyname, "h")) /* print help */ + { + fprintf(stdout, commands); + return; + } + else if (!strcmp(ev->keyname, "t")) /* toggle right rectangle's visibility */ + { + char buf[1024]; + + right_rect_show = !right_rect_show; + snprintf(buf, sizeof(buf), "part_right,%s", + right_rect_show ? "show" : "hide"); + + printf("emitting %s\n", buf); + + edje_object_signal_emit(edje_obj, buf, ""); + + return; + } + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* print signals coming from theme */ +static void +_sig_print(const char *emission, + const char *source) +{ + fprintf(stdout, "Signal %s coming from part %s!\n", emission, source); +} + +static void +_on_mouse_wheel(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + const char *emission, + const char *source) +{ + _sig_print(emission, source); +} + +/* mouse over signals */ +static void +_on_mouse_over(void *data __UNUSED__, + Evas_Object *edje_obj, + const char *emission, + const char *source) +{ + int i; + + _sig_print(emission, source); + + Edje_Message_Int_Set *msg = malloc(sizeof(*msg) + 3 * sizeof(int)); + msg->count = 4; + for (i = 0; i < 4; i++) + msg->val[i] = rand() % 256; + + edje_object_message_send(edje_obj, EDJE_MESSAGE_INT_SET, MSG_COLOR, msg); + + free(msg); +} + +/* print out received message string */ +static void +_message_handle(void *data __UNUSED__, + Evas_Object *obj __UNUSED__, + Edje_Message_Type type, + int id, + void *msg) +{ + Edje_Message_String *m; + + if (type != EDJE_MESSAGE_STRING) return; + if (id != MSG_TEXT) return; + + m = msg; + + fprintf(stdout, "String message received: %s\n", m->str); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char border_img_path[PATH_MAX]; + char edje_file_path[PATH_MAX]; + const char *edje_file = "signals-messages.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Evas_Object *border; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Edje Basics Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + evas_object_focus_set(bg, EINA_TRUE); + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + if (!edje_object_file_set(edje_obj, edje_file_path, "example_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load 'example_group' from " + "signals-messages.edj: %s\n", errmsg); + + evas_object_del(edje_obj); + goto free_prefix; + } + + edje_object_signal_callback_add(edje_obj, "mouse,wheel,*", "part_left", + _on_mouse_wheel, NULL); + + edje_object_signal_callback_add(edje_obj, "mouse,over", "part_right", + _on_mouse_over, NULL); + + edje_object_message_handler_set(edje_obj, _message_handle, NULL); + + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, edje_obj); + + snprintf(border_img_path, sizeof(border_img_path), + "%s/edje/examples/red.png", eina_prefix_data_get(pfx)); + + /* this is a border around the Edje object above, here just to + * emphasize its geometry */ + border = evas_object_image_filled_add(evas); + evas_object_image_file_set(border, border_img_path, NULL); + evas_object_image_border_set(border, 2, 2, 2, 2); + evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE); + + evas_object_resize(border, WIDTH - 40 + 4, HEIGHT - 40 + 4); + evas_object_move(border, 20 - 2, 20 - 2); + evas_object_repeat_events_set(border, EINA_TRUE); + evas_object_show(border); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-swallow.c b/src/examples/edje-swallow.c new file mode 100644 index 0000000..ad79ca2 --- /dev/null +++ b/src/examples/edje-swallow.c @@ -0,0 +1,130 @@ +/** + * Simple Edje example illustrating swallow functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc swallow.edc && gcc -o edje-swallow edje-swallow.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* here just to keep our example's window size and background image's + * size in synchrony */ +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + evas_object_resize(bg, w, h); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "swallow.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *rect; + Evas_Object *obj; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Swallow Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example_group"); + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + + rect = evas_object_rectangle_add(evas); + evas_object_color_set(rect, 255, 0, 0, 255); + edje_object_part_swallow(edje_obj, "part_one", rect); + + obj = edje_object_part_swallow_get(edje_obj, "part_one"); + if(obj == rect) + printf("Swallowing worked!\n"); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-swallow2.c b/src/examples/edje-swallow2.c new file mode 100644 index 0000000..8335828 --- /dev/null +++ b/src/examples/edje-swallow2.c @@ -0,0 +1,135 @@ +/** + * Simple Edje example illustrating swallow functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc swallow.edc && gcc -o edje-swallow2 edje-swallow2.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + char img_file_path[PATH_MAX]; + const char *edje_file = "swallow.edj"; + const char *img_file = "bubble.png"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *img; + Evas_Object *obj; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + Evas_Load_Error err; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + + ecore_evas_title_set(ee, "Edje Swallow Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + ecore_evas_object_associate(ee,bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example_group"); + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + + snprintf(img_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), img_file); + + img = evas_object_image_filled_add(evas); + evas_object_image_file_set(img, img_file_path, NULL); + + err = evas_object_image_load_error_get(img); + + if (err != EVAS_LOAD_ERROR_NONE) + { + fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", + img_file_path, evas_load_error_str(err)); + goto free_prefix; + } + + edje_object_part_swallow(edje_obj, "part_one", img); + + obj = edje_object_part_swallow_get(edje_obj, "part_one"); + + if(obj == img) + printf("Swallowing worked!\n"); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-table.c b/src/examples/edje-table.c new file mode 100644 index 0000000..7780221 --- /dev/null +++ b/src/examples/edje-table.c @@ -0,0 +1,210 @@ +/** + * Simple Edje example illustrating table functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc table.edc && gcc -o edje-table edje-table.c `pkg-config --libs --cflags evas ecore ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH (400) +#define HEIGHT (400) + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* Try to get the number of columns and rows of the table + * and print them. */ +static void +_columns_rows_print(Evas_Object *edje_obj) +{ + int cols, rows; + + if (edje_object_part_table_col_row_size_get(edje_obj, "table_part", &cols, + &rows)) + fprintf(stdout, "Number of columns: %d\nNumber of rows: %d\n", cols, rows); + else + fprintf(stderr, "Cannot get the number of columns and rows\n"); +} + +/* here just to keep our example's window size and table items + * size in synchrony. */ +static void +_on_canvas_resize(Ecore_Evas *ee) +{ + Evas_Object *bg; + Evas_Object *edje_obj; + Evas_Object **rects; + int i; + int w; + int h; + + bg = ecore_evas_data_get(ee, "background"); + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + rects = ecore_evas_data_get(ee, "rects"); + ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); + + evas_object_resize(bg, w, h); + evas_object_resize(edje_obj, w, h); + + for (i = 0; i < 4; i++) + evas_object_size_hint_min_set(rects[i], w/2, h/2); +} + +/* Mouse button 1 = remove the clicked item + * any other button = remove all items. */ +static void +_on_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev; + Evas_Object *edje_obj; + + ev = (Evas_Event_Mouse_Down *)event_info; + edje_obj = (Evas_Object *)data; + + if (ev->button != 1) + edje_object_part_table_clear(edje_obj, "table_part", EINA_TRUE); + else if (!edje_object_part_table_unpack(edje_obj, "table_part", obj)) + fprintf(stderr, "Cannot remove the selected rectangle\n"); + + evas_object_del(obj); + _columns_rows_print(edje_obj); +} + +static void +_rects_create(Evas *evas, Evas_Object **rects, Evas_Object *edje_obj) +{ + int i; + + for (i = 0; i < 4; i++) + { + rects[i] = evas_object_rectangle_add(evas); + evas_object_size_hint_min_set(rects[i], 200, 200); + evas_object_size_hint_weight_set(rects[i], 1.0, 1.0); + evas_object_show(rects[i]); + evas_object_event_callback_add(rects[i], EVAS_CALLBACK_MOUSE_DOWN, + _on_mouse_down, edje_obj); + } +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "table.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Evas_Object *rects[4]; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_callback_resize_set(ee, _on_canvas_resize); + ecore_evas_title_set(ee, "Edje Table Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_data_set(ee, "background", bg); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example_table"); + evas_object_move(edje_obj, 0, 0); /* at canvas' origin */ + evas_object_resize(edje_obj, WIDTH, HEIGHT); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + + _rects_create(evas, rects, edje_obj); + ecore_evas_data_set(ee, "rects", rects); + + /* Colouring the rectangles */ + evas_object_color_set(rects[0], 255, 0, 0, 255); + evas_object_color_set(rects[1], 0, 255, 0, 255); + evas_object_color_set(rects[2], 0, 0, 255, 255); + evas_object_color_set(rects[3], 128, 128, 128, 255); + + /* Packing the rectangles into the table */ + if (!edje_object_part_table_pack(edje_obj, "table_part", rects[0], + 0, 0, 1, 2)) + fprintf(stderr, "Cannot add the rectangle 1 to table\n"); + + if (!edje_object_part_table_pack(edje_obj, "table_part", rects[1], + 0, 1, 1, 1)) + fprintf(stderr, "Cannot add the rectangle 2 to table\n"); + + if (!edje_object_part_table_pack(edje_obj, "table_part", rects[2], + 1, 0, 1, 1)) + fprintf(stderr, "Cannot add the rectangle 3 to table\n"); + + if (!edje_object_part_table_pack(edje_obj, "table_part", rects[3], + 1, 1, 1, 1)) + fprintf(stderr, "Cannot add the rectangle 4 to table\n"); + + _columns_rows_print(edje_obj); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje-text.c b/src/examples/edje-text.c new file mode 100644 index 0000000..5f801a2 --- /dev/null +++ b/src/examples/edje-text.c @@ -0,0 +1,121 @@ +/** + * Simple Edje example illustrating text functions. + * + * You'll need at least one Evas engine built for it (excluding the + * buffer one). See stdout/stderr for output. + * + * @verbatim + * edje_cc text.edc && gcc -o edje-text edje-text.c `pkg-config --libs --cflags ecore-evas edje` + * @endverbatim + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#else +# define __UNUSED__ +#endif + +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +static void +_on_text_change(void *data __UNUSED__, Evas_Object *obj, const char *part) +{ + printf("text: %s\n", edje_object_part_text_unescaped_get(obj, part)); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char edje_file_path[PATH_MAX]; + const char *edje_file = "text.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Edje text Example"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + edje_object_file_set(edje_obj, edje_file_path, "example_group"); + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + + edje_object_text_change_cb_set(edje_obj, _on_text_change, NULL); + edje_object_part_text_set(edje_obj, "part_one", "one"); + edje_object_part_text_set(edje_obj, "part_two", "two"); + + edje_object_part_text_select_allow_set(edje_obj, "part_two", EINA_TRUE); + edje_object_part_text_select_all(edje_obj, "part_two"); + printf("selection: %s\n", edje_object_part_text_selection_get(edje_obj, "part_two")); + edje_object_part_text_select_none(edje_obj, "part_two"); + printf("selection: %s\n", edje_object_part_text_selection_get(edje_obj, "part_two")); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/edje_example.c b/src/examples/edje_example.c new file mode 100644 index 0000000..103e867 --- /dev/null +++ b/src/examples/edje_example.c @@ -0,0 +1,81 @@ +#include +#include +#include +#include +#include + +#define WIDTH 320 +#define HEIGHT 240 + +static Evas_Object *create_my_group(Evas *canvas, const char *text) +{ + Evas_Object *edje; + + edje = edje_object_add(canvas); + if (!edje) + { + EINA_LOG_CRIT("could not create edje object!"); + return NULL; + } + + if (!edje_object_file_set(edje, "edje_example.edj", "my_group")) + { + int err = edje_object_load_error_get(edje); + const char *errmsg = edje_load_error_str(err); + EINA_LOG_ERR("could not load 'my_group' from edje_example.edj: %s", + errmsg); + + evas_object_del(edje); + return NULL; + } + + if (text) + { + if (!edje_object_part_text_set(edje, "text", text)) + { + EINA_LOG_WARN("could not set the text. " + "Maybe part 'text' does not exist?"); + } + } + + evas_object_move(edje, 0, 0); + evas_object_resize(edje, WIDTH, HEIGHT); + evas_object_show(edje); + return edje; +} + +int main(int argc, char *argv[]) +{ + Ecore_Evas *window; + Evas *canvas; + Evas_Object *edje; + const char *text; + + ecore_evas_init(); + edje_init(); + + window = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!window) + { + EINA_LOG_CRIT("could not create window."); + return -1; + } + canvas = ecore_evas_get(window); + + text = (argc > 1) ? argv[1] : NULL; + + edje = create_my_group(canvas, text); + if (!edje) + return -2; + + ecore_evas_show(window); + ecore_main_loop_begin(); + + evas_object_del(edje); + ecore_evas_free(window); + + edje_shutdown(); + ecore_evas_shutdown(); + + return 0; +} diff --git a/src/examples/edje_example.edc b/src/examples/edje_example.edc new file mode 100644 index 0000000..0b15791 --- /dev/null +++ b/src/examples/edje_example.edc @@ -0,0 +1,101 @@ +// compile: edje_cc edje_example.edc +collections { + group { + name: "my_group"; // must be the same as in edje_example.c + + parts { + part { + name: "background"; + type: RECT; // plain boring rectangle + mouse_events: 0; // we don't need any mouse event on the background + + // just one state "default" + description { + state: "default" 0.0; // must always exist + color: 255 255 255 255; // white + + // define part coordinates: + + rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0] + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1) + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + + part { + name: "text"; + type: TEXT; + mouse_events: 1; // we want to change the color on mouse-over + + // 2 states, one "default" and another "over" to be used + // on mouse over effect + + description { + state: "default" 0.0; + color: 255 0 0 255; // red + + // define part coordinates: + + rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10) + relative: 0.1 0.2; + offset: 5 10; + } + rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11) + relative: 0.9 0.8; + offset: -6 -11; + } + + // define text specific state details + text { + font: "Sans"; // using fontconfig name! + size: 10; + text: "hello world"; + } + } + + description { + state: "over" 0.0; + inherit: "default" 0.0; // copy everything from "default" at this point + + color: 0 255 0 255; // override color, now it is green + } + } + + // do programs to change color on text mouse in/out (over) + programs { + program { + // what triggers this program: + signal: "mouse,in"; + source: "text"; + + // what this program does: + action: STATE_SET "over" 0.0; + target: "text"; + + // do the state-set in a nice interpolation animation + // using linear time in 0.1 second + transition: LINEAR 0.1; + } + + program { + // what triggers this program: + signal: "mouse,out"; + source: "text"; + + // what this program does: + action: STATE_SET "default" 0.0; + target: "text"; + + // do the state-set in a nice interpolation animation + // using linear time in 0.1 second + transition: LINEAR 0.1; + } + } + } + } +} diff --git a/src/examples/embryo_custom_state.edc b/src/examples/embryo_custom_state.edc new file mode 100644 index 0000000..9277c90 --- /dev/null +++ b/src/examples/embryo_custom_state.edc @@ -0,0 +1,134 @@ +collections { + group { name: "main"; + script { + /* define 3 global vars to hold the rotation values */ + public rotx; + public roty; + public rotz; + } + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "title"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Click labels to rotate"; + font: "Sans"; + size: 12; + align: 0.5 0.0; + } + } + } + part { name: "X"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Rot X (0)"; + font: "Sans"; + size: 12; + align: 0.1 0.5; + } + } + } + part { name: "Y"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Rot Y (0)"; + font: "Sans"; + size: 12; + align: 0.5 0.9; + } + } + } + part { name: "Z"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Rot Z (0)"; + font: "Sans"; + size: 12; + align: 0.9 0.5; + } + } + } + part { name: "rect"; + type: RECT; + mouse_events: 0; + description { state: "default" 0.0; + color: 255 0 0 150; + max: 150 150; + align: 0.5 0.5; + map { + on: 1; + perspective_on: 1; + smooth: 1; + alpha: 1; + } + } + } + } + programs { + program { + signal: "mouse,down,1"; + source: "X"; + script { + /* define local vars */ + new buf[32]; + new Float:x; + + /* get global var (and increment) */ + x = get_int(rotx) + 10; + /* set global var */ + set_int(rotx, round(x)); + /* crete a new custom state (inherit from default 0.0) */ + custom_state(PART:"rect", "default", 0.0); + /* change the rotation in the custom state */ + set_state_val(PART:"rect", STATE_MAP_ROT_X, x); + /* apply the custom state */ + set_state(PART:"rect", "custom", 0.0); + /* update the label to show the current value */ + snprintf(buf, sizeof(buf), "Rot X (%d)", round(x)); + set_text(PART:"X", buf); + } + } + program { + signal: "mouse,down,1"; + source: "Y"; + script { + new buf[32]; + new Float:y = get_int(roty) + 10; + set_int(roty, round(y)); + custom_state(PART:"rect", "default", 0.0); + set_state_val(PART:"rect", STATE_MAP_ROT_Y, y); + set_state(PART:"rect", "custom", 0.0); + snprintf(buf, sizeof(buf), "Rot Y (%d)", round(y)); + set_text(PART:"Y", buf); + } + } + program { + signal: "mouse,down,1"; + source: "Z"; + script { + new buf[32]; + new Float:z = get_int(rotz) + 10; + set_int(rotz, round(z)); + custom_state(PART:"rect", "default", 0.0); + set_state_val(PART:"rect", STATE_MAP_ROT_Z, z); + set_state(PART:"rect", "custom", 0.0); + snprintf(buf, sizeof(buf), "Rot Z (%d)", round(z)); + set_text(PART:"Z", buf); + } + } + } + } +} diff --git a/src/examples/embryo_pong.edc b/src/examples/embryo_pong.edc new file mode 100644 index 0000000..0e52ddb --- /dev/null +++ b/src/examples/embryo_pong.edc @@ -0,0 +1,270 @@ + +#define DEBUG_ENABLE 0 +#define FPS 30 +#define COLOR_BG 50 50 50 255 +#define COLOR_FG 222 222 222 255 +#define PAD_SIZE 60 +#define PAD_DISTANCE 20 +#define BALL_SPEED 5.0 +#define BALL_SPEEDUP 0.1 +#define BALL_SIZE 10 + + +collections { + group { name: "main"; + min: 500 300; + script { + public ballx, bally; + public ballspeedx, ballspeedy; + public player_score, ai_score; + + public game_reset() { + set_int(ai_score, 0); + set_int(player_score, 0); + set_text(PART:"score1", "0"); + set_text(PART:"score2", "0"); + game_init(); + } + + public game_init() { + set_float(ballspeedx, 0.0); + set_float(ballspeedy, 0.0); + set_float(ballx, 100); + set_float(bally, 100); + } + + public start_game() { + set_float(ballspeedx, BALL_SPEED); + set_float(ballspeedy, BALL_SPEED * randf()); + } + + public player_wins() { + new buf[16] + set_int(player_score, get_int(player_score) + 1); + snprintf(buf, sizeof(buf), "%d", get_int(player_score)); + set_text(PART:"score1", buf); + game_init(); + } + + public ai_wins() { + new buf[16] + set_int(ai_score, get_int(ai_score) + 1); + snprintf(buf, sizeof(buf), "%d", get_int(ai_score)); + set_text(PART:"score2", buf); + game_init(); + } + + public game_loop(count) { + count++; + + /* get field geometry */ + new fx, fy, fw, fh; + get_geometry(PART:"bg", fx, fy, fw, fh); + + /* get mouse coords */ + new mx, my; + get_mouse(mx, my); + + /* get the ball info */ + new Float:bx = get_float(ballx); + new Float:by = get_float(bally); + new Float:speedx = get_float(ballspeedx); + new Float:speedy = get_float(ballspeedy); + + /* move the player pad */ + new pady = my - PAD_SIZE / 2; + if (pady < 0) pady = 0; + else if (pady + PAD_SIZE > fh) pady = fh - PAD_SIZE; + custom_state(PART:"pad1", "default", 0.0); + set_state_val(PART:"pad1", STATE_REL1_OFFSET, 20, pady); + set_state(PART:"pad1", "custom", 0.0); + + /* move the AI pad */ + new pad2y = round(by) - PAD_SIZE / 2 - BALL_SIZE / 2; + if (pad2y < 0) pad2y = 0; + else if (pad2y + PAD_SIZE > fh) pad2y = fh - PAD_SIZE; + custom_state(PART:"pad2", "default", 0.0); + set_state_val(PART:"pad2", STATE_REL1_OFFSET, 20, pad2y); + set_state(PART:"pad2", "custom", 0.0); + + /* calc new ball position */ + bx += speedx; + by += speedy; + + /* check walls collision */ + if (by < 0) + { + speedy = -speedy; + by = 0; + } + else if (by + BALL_SIZE > fh) + { + speedy = -speedy; + by = fh - BALL_SIZE - 1; + } + + /* check player pad collision */ + if ((speedx < 0) && + (bx < PAD_DISTANCE + 10) && (bx > 0) && + (by + BALL_SIZE > pady) && (by < pady + PAD_SIZE)) + { + new Float:dy = by - pady - PAD_SIZE / 2; + speedy += dy / 10; + speedx = -speedx + BALL_SPEEDUP; + } + + /* check AI pad collision */ + else if ((bx + BALL_SIZE > fw - PAD_DISTANCE - 10) && + (bx + BALL_SIZE < fw) && + (by + BALL_SIZE > pad2y) && (by < pad2y + PAD_SIZE)) + { + new Float:dy = by - pad2y - PAD_SIZE / 2; + speedy += dy / 10; + speedx = -speedx - BALL_SPEEDUP; + } + + /* apply the new ball position */ + custom_state(PART:"ball", "default", 0.0); + set_state_val(PART:"ball", STATE_REL1_OFFSET, round(bx), round(by)); + set_state(PART:"ball", "custom", 0.0); + + /* update global vars */ + set_float(ballx, bx); + set_float(bally, by); + set_float(ballspeedx, speedx); + set_float(ballspeedy, speedy); + + /* AI score a point */ + if (bx < 0) ai_wins(); + /* player score a point */ + if (bx + BALL_SIZE > fw) player_wins(); + + /* show debug info (if debug enabled) */ +#if DEBUG_ENABLE + new _buf[128]; + snprintf(_buf, sizeof(_buf), + "loop:%d [speed %f %f] [mouse: %d %d] [ball: %f %f]", + count, speedx, speedy, mx, my, bx, by); + set_text(PART:"dbg", _buf); +#endif + + /* recall the loop in n seconds */ + timer(1.0 / FPS, "game_loop", count); + } + } + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: COLOR_BG; + } + } + part { name: "net"; + type: RECT; + description { state: "default" 0.0; + color: COLOR_FG; + max: 10 9999; + } + } + part { name: "score1"; + type: TEXT; + description { state: "default" 0.0; + color: COLOR_FG; + rel2.relative: 0.5 0.5; + rel2.offset: -20 0; + text { + text: "0"; + font: "Sans"; + size: 50; + align: 1.0 0.0; + } + } + } + part { name: "score2"; + type: TEXT; + description { state: "default" 0.0; + color: COLOR_FG; + rel1.relative: 0.5 0.0; + rel1.offset: 20 0; + text { + text: "0"; + font: "Sans"; + size: 50; + align: 0.0 0.0; + } + } + } + part { name: "pad1"; + type: RECT; + description { state: "default" 0.0; + color: COLOR_FG; + max: 10 PAD_SIZE; + fixed: 1 1; + align: 0.0 0.0; + rel1.offset: PAD_DISTANCE 0; + } + } + part { name: "pad2"; + type: RECT; + description { state: "default" 0.0; + color: COLOR_FG; + max: 10 PAD_SIZE; + fixed: 1 1; + align: 1.0 0.0; + rel2.offset: -PAD_DISTANCE 0; + } + } + part { name: "ball"; + type: RECT; + description { state: "default" 0.0; + color: COLOR_FG; + max: BALL_SIZE BALL_SIZE; + fixed: 1 1; + align: 0.0 0.0; + rel1.offset: 100 100; + } + } + #if DEBUG_ENABLE + part { name: "dbg"; + type: TEXT; + description { state: "default" 0.0; + color: 255 255 255 200; + text { + font: "Sans"; + size: 12; + align: 1.0 1.0; + } + } + } + #endif + } + programs { + /* on load: reset the game and start the game loop */ + program { + signal: "load"; + source: ""; + script { + game_reset(); + timer(0.1 , "game_loop", 0); + } + } + /* mouse left click: start the game, if not yet started */ + program { + signal: "mouse,down,1"; + source: "bg"; + script { + if (get_float(ballspeedx) == 0.0) + start_game(); + } + } + /* mouse right click: restart the game*/ + program { + signal: "mouse,down,3"; + source: "bg"; + script { + game_reset(); + } + } + } + } +} diff --git a/src/examples/embryo_run_program.edc b/src/examples/embryo_run_program.edc new file mode 100644 index 0000000..4833b93 --- /dev/null +++ b/src/examples/embryo_run_program.edc @@ -0,0 +1,66 @@ +collections { + group { name: "main"; + script { + public toggle; + } + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "label"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Click me."; + font: "Sans"; + size: 12; + align: 0.5 0.8; + } + } + } + part { name: "rect"; + type: RECT; + description { state: "default" 0.0; + color: 255 0 0 255; + max: 30 30; + align: 0.1 0.2; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + color: 0 0 255 255; + align: 0.9 0.2; + } + } + } + programs { + program { name: "go_right"; + action: STATE_SET "default" 1.0; + transition: SINUSOIDAL 1.0; + target: "rect"; + } + program { name: "go_left"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 1.0; + target: "rect"; + } + program { + signal: "mouse,down,1"; + source: "label"; + script { + if (get_int(toggle) == 0) { + run_program(PROGRAM:"go_right"); + set_int(toggle, 1); + } + else { + run_program(PROGRAM:"go_left"); + set_int(toggle, 0); + } + } + } + } + } +} diff --git a/src/examples/embryo_set_state.edc b/src/examples/embryo_set_state.edc new file mode 100644 index 0000000..e752fad --- /dev/null +++ b/src/examples/embryo_set_state.edc @@ -0,0 +1,46 @@ +collections { + group { name: "main"; + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "label"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Click me."; + font: "Sans"; + size: 12; + align: 0.0 0.7; + } + } + } + part { name: "red_rect"; + type: RECT; + description { state: "default" 0.0; + color: 255 0 0 255; + max: 30 30; + align: 0.1 0.2; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + color: 0 0 255 255; + align: 0.9 0.2; + } + } + } + programs { + program { + signal: "mouse,down,1"; + source: "label"; + script { + set_state(PART:"red_rect", "default", 1.0); + } + } + } + } +} diff --git a/src/examples/embryo_set_text.edc b/src/examples/embryo_set_text.edc new file mode 100644 index 0000000..d656019 --- /dev/null +++ b/src/examples/embryo_set_text.edc @@ -0,0 +1,39 @@ +collections { + group { name: "main"; + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "label"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Click me."; + font: "Sans"; + size: 12; + } + } + } + } + programs { + program { + signal: "mouse,down,1"; + source: "label"; + script { + set_text(PART:"label", "Clicked!"); + } + } + program { + signal: "mouse,up,1"; + source: "label"; + script { + set_text(PART:"label", "Click me."); + } + } + } + } +} diff --git a/src/examples/embryo_timer.edc b/src/examples/embryo_timer.edc new file mode 100644 index 0000000..2c2f8e5 --- /dev/null +++ b/src/examples/embryo_timer.edc @@ -0,0 +1,90 @@ +collections { + group { name: "main"; + script { + public timer_cb(val) { + new x, y, w, h; + new buf[32]; + + /* set labels with object info */ + get_geometry(PART:"red_rect", x, y, w, h); + snprintf(buf, sizeof(buf), "Timer called %d times.", val); + set_text(PART:"label1", buf) + snprintf(buf, sizeof(buf), "Object x: %d w: %d", x, w); + set_text(PART:"label2", buf) + + /* renew the timer */ + timer(1 / 30, "timer_cb", val + 1); + } + } + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + part { name: "label1"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: ""; + font: "Sans"; + size: 12; + align: 0.0 0.7; + } + } + } + part { name: "label2"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + font: "Sans"; + size: 12; + align: 0.0 0.8; + } + } + } + part { name: "red_rect"; + type: RECT; + description { state: "default" 0.0; + color: 255 0 0 255; + max: 30 30; + align: 0.1 0.2; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + color: 0 0 255 255; + max: 50 30; + align: 0.9 0.2; + } + } + } + programs { + /* move the red rect back an forth in a loop */ + program { name: "init"; + signal: "load"; + source: ""; + action: STATE_SET "default" 1.0; + transition: SINUSOIDAL 1.0; + target: "red_rect"; + after: "loop"; + } + program { name: "loop"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 1.0; + target: "red_rect"; + after: "init"; + } + /* run the timer_cb for the first time */ + program { name: "init2"; + signal: "load"; + source: ""; + script { + timer_cb(0); + } + } + } + } +} diff --git a/src/examples/external_elm_anchorblock.edc b/src/examples/external_elm_anchorblock.edc new file mode 100644 index 0000000..33f99da --- /dev/null +++ b/src/examples/external_elm_anchorblock.edc @@ -0,0 +1,160 @@ + +#define LOREM "Vestibulum nunc mi, adipiscing dapibus turpis. Integer ornare \ +vestibulum. Quisque libero augue, non tristique tortor. Praesent urna augue, \ +blandit id sodales vel, varius at purus. Ut congue mollis elit, quis vehicula \ +enim ornare vitae. Suspendisse non faucibus massa. Nunc facilisis sapien ut \ +erat laoreet vitae pharetra purus commodo. Donec in ipsum justo, sit amet \ +lacinia massa. Pellentesque sed dolor lectus. Integer nec nisi ut massa \ +vestibulum vulputate mollis ut lacus. Morbi lobortis dictum lacus nec \ +faucibus. \ + \ + \ +

\ +Phasellus ultricies nisl sit amet ligula tristique in adipiscing neque \ +vulputate. Maecenas est ante, porttitor eget commodo non, blandit et erat. \ +Duis adipiscing, tortor quis gravida vulputate, magna lorem mollis tortor, \ +elementum ullamcorper dui mi ut metus. Nunc dictum nisi sed arcu mattis \ +pellentesque. Aliquam erat volutpat. Nullam faucibus suscipit dui a \ +condimentum. Fusce a diam tortor. Curabitur egestas gravida magna, eget \ +lacinia magna fringilla in. Donec eget tincidunt ipsum. Suspendisse velit \ +massa, sollicitudin in laoreet a, posuere malesuada enim. \ +Duis a nulla purus.

\ +Aenean nec sodales lacus. Sed ipsum felis, blandit sed aliquet ac, viverra \ +vitae odio. Proin nisi nisi, commodo at cursus ut, auctor at elit. Sed tempor \ +placerat orci eget venenatis. Duis ut dolor nibh, non luctus tellus. Duis \ +placerat aliquet sem, et dignissim tellus rutrum at. Etiam sapien lacus, \ +auctor quis interdum vel, pellentesque sit amet arcu. Proin accumsan, mauris \ +non dapibus fermentum, nisl leo cursus nisi, eget auctor lacus ante a nisl. \ +Suspendisse ullamcorper suscipit mi, et blandit augue aliquet non. Aenean \ +vulputate ullamcorper ante, ut tincidunt orci sagittis nec. In hendrerit nunc \ +eget sapien eleifend luctus. Pellentesque vulputate diam ac arcu suscipit nec \ +vestibulum dolor blandit. Sed et massa vel ante tempor fermentum nec ac arcu. \ +Duis turpis odio, vehicula sit amet pellentesque non, facilisis quis ligula. \ +Sed ante nisl, cursus in pulvinar in, interdum vitae diam. Cras condimentum \ +diam ac purus tempor suscipit eget sed metus. Nam erat nunc, eleifend vitae \ +vehicula vitae, venenatis faucibus est. Nam auctor mauris metus. Nam eget \ +vehicula nunc. Nulla ut nisi id sapien rhoncus vestibulum." + +collections { + group { name: "main"; + /* set a min window size */ + min: 300 400; + + /* tell edje that we are going to use elementary external parts */ + externals { + external: "elm"; + } + + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + + part { name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { state: "default" 0.0; + color: 255 255 255 255; + color3: 70 70 70 70; + text { + text: "Elementary Anchorblock"; + font: "Sans"; + size: 16; + align: 0.5 0.0; + } + } + } + + /* EXTERNAL elementary anchorblock */ + part { name: "anchorblock"; + type: EXTERNAL; + source: "elm/anchorblock"; + description { state: "default" 0.0; + color: 200 200 0 200; + rel1.offset: 5 35; + rel2.offset: -6 -45; + align: 0.0 0.0; + map { + on: 1; + perspective_on: 1; + smooth: 1; + } + params.string: "text" LOREM; + } + description { state: "anim" 0.0; + inherit: "default" 0.0; + map.rotation.z: 100; + } + description { state: "anim" 0.1; + inherit: "default" 0.0; + map.rotation.y: 180; + } + description { state: "anim" 0.2; + inherit: "default" 0.0; + map.rotation.x: 150; + } + description { state: "anim" 0.3; + inherit: "default" 0.0; + map.rotation.z: 100; + map.rotation.y: 100; + } + } + + /* EXTERNAL elementary button to trigger the animation */ + part { name: "button"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + relative: 0.0 1.0; + offset: 5 -40; + } + rel2 { + offset: -6 -2; + } + params { + string: "label" "Animate"; + } + } + } + } + + programs { + /* button clicked, start the animation cycle */ + program { name: "button_click"; + signal: "clicked"; + source: "button"; + action: STATE_SET "anim" 0.0; + transition: LINEAR 1.0; + target: "anchorblock"; + after: "anim2"; + } + program { name: "anim2"; + action: STATE_SET "anim" 0.1; + transition: LINEAR 1.0; + target: "anchorblock"; + after: "anim3"; + } + program { name: "anim3"; + action: STATE_SET "anim" 0.2; + transition: LINEAR 1.0; + target: "anchorblock"; + after: "anim4"; + } + program { name: "anim4"; + action: STATE_SET "anim" 0.3; + transition: LINEAR 1.0; + target: "anchorblock"; + after: "anim5"; + } + program { name: "anim5"; + action: STATE_SET "default" 0.0; + transition: LINEAR 1.0; + target: "anchorblock"; + } + } + } +} diff --git a/src/examples/external_elm_button.edc b/src/examples/external_elm_button.edc new file mode 100644 index 0000000..b7796d8 --- /dev/null +++ b/src/examples/external_elm_button.edc @@ -0,0 +1,270 @@ +collections { + /* those 2 groups are used as custom icons for the buttons */ + group { name: "icon_green"; + parts { + part { name: "icon_green"; + type: RECT; + description { state: "default" 0.0; + color: 0 255 0 255; + aspect: 1 1; + aspect_preference: VERTICAL; + } + } + } + } + group { name: "icon_red"; + parts { + part { name: "icon_red"; + type: RECT; + description { state: "default" 0.0; + color: 255 0 0 255; + aspect: 1 1; + aspect_preference: VERTICAL; + } + } + } + } + + group { name: "main"; + /* set a min window size */ + min: 250 250; + + /* tell edje that we are going to use elementary external parts */ + externals { + external: "elm"; + } + + /* define global variables */ + script { + public counter, toggle1, toggle2, toggle3, toggle4; + } + + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + + part { name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { state: "default" 0.0; + color: 255 255 255 255; + color3: 70 70 70 70; + text { + text: "Elementary buttons"; + font: "Sans"; + size: 16; + align: 0.5 0.0; + } + } + } + + /* bottom label used for reporting */ + part { name: "label"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "try every buttons"; + font: "Sans"; + size: 12; + align: 0.5 1.0; + } + } + } + + /* EXTERNAL elementary button with a label */ + part { name: "bt1"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + offset: 5 35; + } + rel2 { + relative: 1.0 0.0; + offset: -6 60; + } + params { + string: "label" "Label only"; + } + } + } + + /* EXTERNAL elementary button with label + standard icon */ + part { name: "bt2"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + to: "bt1"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "bt1"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "label" "Label + standard icon"; + string: "icon" "home"; + } + } + } + + /* EXTERNAL elementary button with a label and a custom icon */ + part { name: "bt3"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + to: "bt2"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "bt2"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "label" "Label + custom icon"; + string: "icon" "icon_green"; + } + } + } + + /* EXTERNAL elementary button with just a standard icon */ + part { name: "bt4"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + to: "bt3"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "bt3"; + relative: 0.5 2.0; + offset: -6 5; + } + params { + string: "icon" "folder"; + } + } + } + + /* EXTERNAL elementary button with just a custom icon */ + part { name: "bt5"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0; + rel1 { + to: "bt3"; + relative: 0.5 1.0; + offset: 5 5; + } + rel2 { + to: "bt3"; + relative: 1.0 2.0; + offset: 0 5; + } + params { + string: "icon" "icon_green"; + } + } + } + } + + programs { + /* bt1 clicked, change it's label and count the clicks */ + program { name: "bt1_click"; + signal: "clicked"; + source: "bt1"; + script { + new buf[32]; + /* increment the global counter*/ + set_int(counter, get_int(counter) + 1); + /* set the button label */ + snprintf(buf, sizeof(buf), "Clicked %d times", get_int(counter)); + external_param_set_str(PART:"bt1", "label", buf); + /* set the bottom label */ + set_text(PART:"label", "button 1 clicked: set label"); + } + } + + /* bt2 clicked, toggle it's standard icon */ + program { name: "bt2_click"; + signal: "clicked"; + source: "bt2"; + script { + if (get_int(toggle1) == 0) { + external_param_set_str(PART:"bt2", "icon", "home"); + set_int(toggle1, 1); + } + else { + external_param_set_str(PART:"bt2", "icon", "folder"); + set_int(toggle1, 0); + } + set_text(PART:"label", "button 2 clicked: toggle icon"); + } + } + + /* bt3 clicked, toggle it's custom icon */ + program { name: "bt3_click"; + signal: "clicked"; + source: "bt3"; + script { + if (get_int(toggle2) == 0) { + external_param_set_str(PART:"bt3", "icon", "icon_red"); + set_int(toggle2, 1); + } + else { + external_param_set_str(PART:"bt3", "icon", "icon_green"); + set_int(toggle2, 0); + } + set_text(PART:"label", "button 3 clicked: toggle icon"); + } + } + + /* bt4 clicked, toggle it's icon */ + program { name: "bt4_click"; + signal: "clicked"; + source: "bt4"; + script { + if (get_int(toggle3) == 0) { + external_param_set_str(PART:"bt4", "icon", "home"); + set_int(toggle3, 1); + } + else { + external_param_set_str(PART:"bt4", "icon", "folder"); + set_int(toggle3, 0); + } + set_text(PART:"label", "button 4 clicked: toggle icon"); + } + } + + /* bt5 clicked, toggle it's icon */ + program { name: "bt5_click"; + signal: "clicked"; + source: "bt5"; + script { + if (get_int(toggle4) == 0) { + external_param_set_str(PART:"bt5", "icon", "icon_red"); + set_int(toggle4, 1); + } + else { + external_param_set_str(PART:"bt5", "icon", "icon_green"); + set_int(toggle4, 0); + } + set_text(PART:"label", "button 5 clicked: toggle icon"); + } + } + } + } +} diff --git a/src/examples/external_elm_check.edc b/src/examples/external_elm_check.edc new file mode 100644 index 0000000..0d5423f --- /dev/null +++ b/src/examples/external_elm_check.edc @@ -0,0 +1,211 @@ +collections { + /* this groups is used as custom icon */ + group { name: "icon_green"; + parts { + part { name: "icon_green"; + type: RECT; + description { state: "default" 0.0; + color: 0 255 0 255; + aspect: 1 1; + aspect_preference: VERTICAL; + } + } + } + } + + group { name: "main"; + /* set a min window size */ + min: 200 300; + + /* tell edje that we are going to use elementary external parts */ + externals { + external: "elm"; + } + + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + + part { name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { state: "default" 0.0; + color: 255 255 255 255; + color3: 70 70 70 70; + text { + text: "Elementary Checks"; + font: "Sans"; + size: 16; + align: 0.5 0.0; + } + } + } + + /* EXTERNAL elementary check with a label */ + part { name: "check1"; + type: EXTERNAL; + source: "elm/check"; + description { state: "default" 0; + rel1 { + offset: 5 35; + } + rel2 { + relative: 1.0 0.0; + offset: -6 60; + } + params { + string: "label" "Label only"; + } + } + } + + /* EXTERNAL elementary check with label + standard icon */ + part { name: "check2"; + type: EXTERNAL; + source: "elm/check"; + description { state: "default" 0; + rel1 { + to: "check1"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "check1"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "label" "Label + standard icon"; + string: "icon" "home"; + } + } + } + + /* EXTERNAL elementary check with a label and a custom icon */ + part { name: "check3"; + type: EXTERNAL; + source: "elm/check"; + description { state: "default" 0; + rel1 { + to: "check2"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "check2"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "label" "Label + custom icon"; + string: "icon" "icon_green"; + } + } + } + + /* EXTERNAL elementary check with just a custom icon */ + part { name: "check4"; + type: EXTERNAL; + source: "elm/check"; + description { state: "default" 0; + rel1 { + to: "check3"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "check3"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "icon" "home"; + } + } + } + + /* EXTERNAL elementary check with just a custom icon */ + part { name: "check5"; + type: EXTERNAL; + source: "elm/check"; + description { state: "default" 0; + rel1 { + to: "check4"; + relative: 0.0 1.0; + offset: 0 5; + } + rel2 { + to: "check4"; + relative: 1.0 2.0; + offset: -1 5; + } + params { + string: "icon" "icon_green"; + } + } + } + } + + programs { + /* on edje load start the programs loop */ + program { + signal: "load"; + after: "loop1"; + } + + /* wait 0.2, toggle the state of check1, trigger next prog */ + program { name: "loop1"; + in: 0.2 0.0; + script { + external_param_set_bool(PART:"check1", "state", + !external_param_get_bool(PART:"check1", "state")); + } + after: "loop2"; + } + + /* wait 0.2, toggle the state of check2, trigger next prog */ + program { name: "loop2"; + in: 0.2 0.0; + script { + external_param_set_bool(PART:"check2", "state", + !external_param_get_bool(PART:"check2", "state")); + } + after: "loop3"; + } + + /* wait 0.2, toggle the state of check3, trigger next prog */ + program { name: "loop3"; + in: 0.2 0.0; + script { + external_param_set_bool(PART:"check3", "state", + !external_param_get_bool(PART:"check3", "state")); + } + after: "loop4"; + } + + /* wait 0.2, toggle the state of check4, trigger next prog */ + program { name: "loop4"; + in: 0.2 0.0; + script { + external_param_set_bool(PART:"check4", "state", + !external_param_get_bool(PART:"check4", "state")); + } + after: "loop5"; + } + + /* wait 0.2, toggle the state of check5, restart from the first prog */ + program { name: "loop5"; + in: 0.2 0.0; + script { + external_param_set_bool(PART:"check5", "state", + !external_param_get_bool(PART:"check5", "state")); + } + after: "loop1"; + } + } + } +} diff --git a/src/examples/external_elm_panes.edc b/src/examples/external_elm_panes.edc new file mode 100644 index 0000000..8833668 --- /dev/null +++ b/src/examples/external_elm_panes.edc @@ -0,0 +1,140 @@ +collections { + /* tell edje that we are going to use elementary external parts */ + externals { + external: "elm"; + } + + /* those groups are the buttons used as content for the panes */ + group { name: "button1"; + parts { + part { name: "btn"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0.0; + params.string: "label" "Left"; + } + } + } + } + group { name: "button2"; + parts { + part { name: "btn"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0.0; + params.string: "label" "Top"; + } + } + } + } + group { name: "button3"; + parts { + part { name: "btn"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0.0; + params.string: "label" "Right"; + } + } + } + } + + /* this is the vertical panes */ + group { name: "panes2"; + parts { + part { name: "panes"; + type: EXTERNAL; + source: "elm/panes"; + description { state: "default" 0.0; + params { + bool: "horizontal" 1; + string: "content left" "button2"; + string: "content right" "button3"; + } + } + } + } + } + + group { name: "main"; + /* set a min window size */ + min: 300 400; + + parts { + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + + part { name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { state: "default" 0.0; + color: 255 255 255 255; + color3: 70 70 70 70; + text { + text: "Elementary Panes"; + font: "Sans"; + size: 16; + align: 0.5 0.0; + } + } + } + + /* first panes (horiz) */ + part { name: "panes1"; + type: EXTERNAL; + source: "elm/panes"; + description { state: "default" 0.0; + rel1.offset: 0 35; + rel2.offset: 0 -45; + params { + string: "content left" "button1"; + string: "content right" "panes2"; + } + } + description { state: "swapped" 0.0; + inherit: "default" 0.0; + params { + string: "content left" "panes2"; + string: "content right" "button1"; + } + } + } + + /* button used to swap the content of the panes1 */ + part { name: "swap_button"; + type: EXTERNAL; + source: "elm/button"; + description { state: "default" 0.0; + rel1 { + relative: 0.0 1.0; + offset: 0 -40; + } + params { + string: "label" "Swap & back"; + } + } + } + } + + programs { + /* when button is pressed set the 'swapped' state */ + program { name: "swap"; + signal: "clicked"; + source: "swap_button"; + action: STATE_SET "swapped" 0.0; + target: "panes1"; + after: "go_back"; + } + /* after 1 second return to the 'default' state */ + program { name: "go_back"; + in: 1.0 0.0; + action: STATE_SET "default" 0.0; + target: "panes1"; + } + } + } +} diff --git a/src/examples/external_emotion_elm.edc b/src/examples/external_emotion_elm.edc new file mode 100644 index 0000000..686e10f --- /dev/null +++ b/src/examples/external_emotion_elm.edc @@ -0,0 +1,239 @@ +/* + Super-concise video player example using Edje/Emotion/Elementary. + + This is all in Edje by means of type:EXTERNAL, you don't need any C + code other than emotion and edje installed with edje_external + support enabled. + + Compile: edje_cc external-emotion-elm.edc + Run....: edje_player external-emotion-elm.edj + + */ +collections { + group { name: "main"; + min: 350 200; /* set a min window size */ + + externals { /* declare the modules you want to load */ + external: "emotion"; /* video player engine */ + external: "elm"; /* toolkit/widgets */ + } + + parts { + part { name: "bg"; /* dark gray rectangle as background */ + type: RECT; + description { state: "default" 0.0; + color: 64 64 64 255; + } + } + + part { name: "video"; /* video object */ + type: EXTERNAL; + source: "emotion"; + description { state: "default" 0.0; + params { + /* explicitly select the emotion engine + * ['xine', 'gstreamer' or 'vlc'] + * or comment the line to autoselect the engine */ + // choice: "engine" "gstreamer"; + } + } + } + + part { name: "title"; + type: TEXT; + effect: SOFT_SHADOW; + description { state: "default" 0.0; + color: 255 255 255 0; + color3: 0 0 0 0; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.0; + offset: 10 2; + } + rel2 { + relative: 1.0 0.0; + offset: -11 10; + } + text { + font: "Sans:style=Bold"; + align: 0.5 0.0; + size: 10; + min: 0 1; + text: ""; + } + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + color3: 0 0 0 255; + } + } + + part { name: "controls-clipper"; /* clipper to control visibility */ + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 32; + } + description { state: "visible" 0.0; + color: 255 255 255 255; + } + } + + part { name: "controls-bg"; /* controls background as + semi-transparent black at bottom edge */ + type: RECT; + clip_to: "controls-clipper"; + description { state: "default" 0.0; + color: 0 0 0 128; + rel1 { + relative: 0.0 1.0; + offset: 0 -40; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + + part { name: "play"; /* play button at bottom-left (relative + to controls-bg) */ + type: EXTERNAL; + source: "elm/button"; + clip_to: "controls-clipper"; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + to: "controls-bg"; + } + rel2 { + relative: 0.0 1.0; + offset: 50 -1; + to: "controls-bg"; + } + params.string: "icon" "apps"; + } + } + + part { name: "open"; /* open file button next to play button */ + type: EXTERNAL; + source: "elm/fileselector_button"; + clip_to: "controls-clipper"; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 52 0; + to: "controls-bg"; + } + rel2 { + relative: 0.0 1.0; + offset: 102 -1; + to: "controls-bg"; + } + params.string: "icon" "folder"; + } + } + + part { name: "time"; /* time/progress */ + type: EXTERNAL; + source: "elm/slider"; + clip_to: "controls-clipper"; + description { state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 104 0; + to: "controls-bg"; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + to: "controls-bg"; + } + } + } + + part { name: "controls-eventarea"; /* event area so we catch mouse in + and out, repeat events so + buttons get them */ + type: RECT; + repeat_events: 1; + description { + state: "default" 0.0; + color: 255 255 255 0; /* fully transparent as we don't + need any visual feedback */ + rel1.to: "controls-bg"; + rel2.to: "controls-bg"; + } + } + + programs { + /* animated 0.2 linear fade in/out if mouse is over controls */ + program { signal: "mouse,in"; + source: "controls-eventarea"; + action: STATE_SET "visible" 0.0; + transition: LINEAR 0.2; + target: "controls-clipper"; + target: "title"; + } + program { signal: "mouse,out"; + source: "controls-eventarea"; + action: STATE_SET "default" 0.0; + transition: LINEAR 0.2; + target: "controls-clipper"; + target: "title"; + } + + /* toggle video playing state when play is clicked */ + program { name: "toggle-play-video"; + signal: "clicked"; + source: "play"; + script { + new v = external_param_get_bool(PART:"video", "play"); + external_param_set_bool(PART:"video", "play", !v); + } + } + + /* whenever file is chosen, set and play it */ + program { signal: "file,chosen"; + source: "open"; + action: PARAM_COPY "open" "path" "video" "file"; + after: "play-video"; + after: "set-title"; + } + program { name: "play-video"; + action: PARAM_SET "video" "play" "1"; + } + program { name: "set-title"; + action: PARAM_COPY "open" "path" "title" "text"; + } + + /* if position changes, set slider (time) */ + program { signal: "position_update"; + source: "video"; + script { + new Float:p, Float:len; + + p = external_param_get_float(PART:"video", "position"); + len = external_param_get_float(PART:"video", "play_length"); + if (len > 0.0) + external_param_set_float(PART:"time", "value", p / len); + } + } + + /* if slider (time) changes, set the position (seek) */ + program { signal: "changed"; + source: "time"; + script { + new Float:v, Float:len; + + v = external_param_get_float(PART:"time", "value"); + len = external_param_get_float(PART:"video", "play_length"); + if (len > 0.0) + external_param_set_float(PART:"video", "position", v * len); + } + } + } + } + } +} diff --git a/src/examples/lua_script.edc b/src/examples/lua_script.edc new file mode 100644 index 0000000..23c2926 --- /dev/null +++ b/src/examples/lua_script.edc @@ -0,0 +1,417 @@ +color_classes { + color_class { name: "test_colour"; color: 255 255 255 255; } +} + +fonts { + font: "Vera.ttf" "default"; +} + +images { + image: "bubble.png" COMP; + image: "test.png" COMP; +} + +collections { + group { + name: "main"; + lua_script_only: 1; + lua_script { + --// stick object private/local vars here + local D; + local count = 0; + local fndata = 99; + local text_geom; + + --// Functions to print tables. + local print_table, print_table_start; + + function print_table_start(table, space, name) + print(space .. name .. ": "); + print(space .. "{"); + print_table(table, space .. " "); + print(space .. "}"); + end + + function print_table(table, space) + for k, v in pairs(table) do + if type(v) == "table" then + print_table_start(v, space, k); + elseif type(v) == "string" then + print(space .. k .. ': "' .. v .. '";') + else + print(space .. k .. ": " .. v .. ";") + end + end + end + + local function mycb3 (v) + print("lua::callback transition " .. D.val .. " v: " .. v); + d = {}; + d = edje.size(d); + print("lua::objsize= " .. d.w .. " , " .. d.h); + sz = {w=v * 80, h=v * 40}; + D.rect:geom(((d.w / 2) * math.sin(v * 2 * math.pi)) + ((d.w - sz.w) / 2), + ((d.h / 2) * math.cos(v * 2 * math.pi)) + ((d.h - sz.h) / 2), + sz.w, sz.h); + D.rect:color(255, 128, v * 255, 255); + d = D.rect:move(d); + print("lua::pos= " .. d.x .. " , " .. d.y); + + r = D.rect:above(); + if (r ~= nil) then + print("lua::rcol"); + r:color(20, v * 255, 60, 255); + else + print("lua::r none!!!!!!!!!!!!!!1"); + end + d = edje.size(); + D.clip:geom(10, 10, d.w - 20, d.h - 20); + c = D.clip:clipees(); + for i=1,table.getn(c),1 do + d = c[i]:geom(); + print("lua::" .. i .. " geom = " .. d.x .. "," .. d.y .. " " .. d.w .. "x" .. d.h); + end + return true; --// repeat the timer + end + + local function mycb2 () + print("lua::callback animator " .. count .. " seconds: " .. edje.seconds() .. " looptime: " .. edje.looptime()); + edje.color_class("test_colour", 255, (count * 10) % 255, 255, 255); + edje.text_class("test_text_class", "Sans:style=Bold", ((count * 3) % 100) + 8); + if (5 > (count % 10)) then + D.text:font("default", 32); + else + D.text:font("Sans:style=Bold", 32); + end + edje_geom = edje.geom(); + text_geom = D.text:geom(); + D.text:move((edje_geom.w - text_geom.w) / 2, (edje_geom.h - text_geom.h) / 8); + return true; --// repeat the timer + end + + local function mycb () + print("lua::callback timer " .. count .. " fndata = " .. fndata); + count = count + 1; --// keep count of calls - object data + fndata = fndata + 3; --// play with object vars to see if they persist + D.tim = edje.timer(0.25, mycb); --// inside cb add new timer + return false; --// cease repeating the timer + end + + --// init object here + D = {}; --// data is empty table to start + D.val = math.random(); --// start with some random value so + fndata = fndata + D.val; --// func data start point + print("lua::init ... " .. D.val); + edje.echo("lua::echo('hello world')"); + + --// How to check the edje version. + version = edje.version(); + print("The edje version number is " .. version.major .. "." .. version.minor); + + --// actually add the timer to call mycb in 1.23 sec + D.tim = edje.timer(1.23, mycb); + D.tra = edje.transition(5.0, mycb3); + D.ani = edje.animator(mycb2); + edje_geom = edje.geom(); + + if (edje.spanky) then edje.spanky(); end + + local date = edje.date(); + print("lua:: date: " .. + date.year .. "|" .. + date.month .. "|" .. + date.day .. "|" .. + date.yearday .. "|" .. + date.weekday .. "|" .. + date.hour .. "|" .. + date.min .. "|" .. + date.sec + ); + + --// send some random edje message + edje.messagesend(7, "none" ); + edje.messagesend(7, "sig", "signal", "source"); + edje.messagesend(7, "str", "hello world"); + edje.messagesend(7, "int", 987); + edje.messagesend(7, "float", 987.321); + edje.messagesend(7, "strset", {"hello", "there", "world"}); + edje.messagesend(7, "intset", {1, 2, 3}); + edje.messagesend(7, "floatset", {1.1, 2.2, 3.3}); + edje.messagesend(7, "strint", "hello world", 7); + edje.messagesend(7, "strfloat", "hello world", 7.654); + edje.messagesend(7, "strintset","hello world", {1, 2, 3}); + + D.edje = edje.edje(); + D.edje:file("plain/edje/group"); + D.edje:show(); + + D.rect = edje.rect(); + D.rect:geom (5, 10, 50, 30); + D.rect:color (255, 128, 60, 255); + D.rect:show (); + + D.rect2 = edje.rect(); + D.rect2:geom (50, 50, 50, 50); + D.rect2:color (20, 30, 60, 120); + D.rect2:show (); + + D.clip = edje.rect(); + D.clip:geom (10, 10, 150, 150); + D.clip:color (200, 200, 50, 200); + D.clip:show (); + + D.rect2:clip(D.clip); + D.rect:clip(D.clip); + + D.text = edje.text(); + D.text:geom (50, 5, 150, 50); + D.text:color (255, 0, 0, 255); + D.text:font("Sans:style=Bold", 32); + D.text:text("Lua rocks!"); + text_geom = D.text:geom(); + print(D.text:text()); + D.text:show(); + + --// Put a few bogus API calls here to test the bogus API protection, + --// If the bogus API protection works, these should get ignored, but everything else runs smoothly. + --// Otherwise, the map is not done, the bubbles are not done, but the timers keep runinng. + bogus.failme(1, "two", D.rect); + temp = bogus.failme2(); + D.text.bogus(); + edje.bogus2(); + + --// Fun with maps! + D.map = edje.map(4); --// 4 is the only supported map size at the moment. + --// These all do the same thing. + --// Note, lua likes to start at 1, C (and thus evas) at 0. I choose to agree with C. + D.map:coord(0, 50, 50, 0); + D.map:coord(1, 100, 50, 0); + D.map:coord(2, 100, 100, 0); + D.map:coord(3, 50, 100, 0); + D.map:populate(50, 50, 50, 50, 0); + D.map:populate(D.rect2, 0); + D.map:populate(D.rect2); + + --// print the results + D.coord = D.map:coord(0); + print("lua::map coords for point 0 x=" .. D.coord.x .. " y=" .. D.coord.y .. " z=" .. D.coord.z); + D.coord = D.map:coord(1); + print("lua::map coords for point 1 x=" .. D.coord.x .. " y=" .. D.coord.y .. " z=" .. D.coord.z); + D.coord = D.map:coord(2); + print("lua::map coords for point 2 x=" .. D.coord.x .. " y=" .. D.coord.y .. " z=" .. D.coord.z); + D.coord = D.map:coord(3); + print("lua::map coords for point 3 x=" .. D.coord.x .. " y=" .. D.coord.y .. " z=" .. D.coord.z); + + D.map:smooth(false); + D.map:alpha(true); + + if (D.map:alpha()) then + print("lua::map is alpha"); + end + + if (D.map:smooth()) then + print("lua::map is smooooth"); + end + + if (D.map:clockwise()) then + print("lua::map is clockwise"); + end + + D.map:color(255, 255, 255, 255); // set all points to this colour. + D.map:color(1, 255, 0, 255, 255); // set just one point to this colour. + + D.map:lighting(75, 75, 10, 255, 255, 255, 0, 255, 0); // Ambient light and a 3D light source. + + --// Toss it around. + D.map:rotate(45.0, 75, 75); + D.map:zoom(1.5, 1.5, 75, 75); + D.map:rotate3d(10.0, 20.0, 30.0, 75, 75, 0); + D.map:perspective(200, 200, 0, 20); + + --// For image UV mapping. + D.map:uv(0, 0.0, 0.0); + D.map:uv(1, 50.0, 0.0); + D.map:uv(2, 50.0, 50.0); + D.map:uv(3, 0.0, 50.0); + + --// Actually apply the resulting transformations. + D.rect2:map(D.map); + D.rect2:map_enable(true); + if (D.rect2:map_enable()) then + print("lua::map enabled"); + end + + D.rect2:map_source(D.rect); --// Don't think this is actually implemented in evas. + +--// D.map:dup(); +--// D.map:size(); --// perhaps overide the # operator? For now it's only gonna return 4 anyway. + + --// example of deleting something + --// D.tim:del(); + + --// test the color_class stuff + colour = edje.color_class("test_colour"); + print("lua::color_class= " .. colour.r .. "," .. colour.g .. "," .. colour.b .. "," .. colour.a); + colour = edje.color_class("test_colour", 32, 64, 255, 128); + print("lua::color_class= " .. colour.r .. "," .. colour.g .. "," .. colour.b .. "," .. colour.a); + colour = edje.color_class("test_colour", { r=255, g=0, b=255, a=255 }); + print("lua::color_class= " .. colour.r .. "," .. colour.g .. "," .. colour.b .. "," .. colour.a); + text = edje.text_class("test_text_class", "Sans:style=Bold", 8); + print("lua::text_class= " .. text.font .. " size " .. text.size); + + --// Do something bad, just to see what happens. +--// edje.color_class(nil); + + --// shutdown func - generally empty or not there. everything garbage collected for you + function shutdown () + print("lua::shutdown ... " .. D.val); + end + + function show () + print("lua::show ... " .. D.val); + end + + function hide () + print("lua::hide ... " .. D.val); + end + + function move (x, y) + print("lua::move x=" .. x .. " x=" .. y); + D.edje:move(0, 0); + end + + function resize (w, h) + print("lua::resize w=" .. w .. " h=" .. h); + D.text:move((w - text_geom.w) / 2, (h - text_geom.h) / 8); + D.edje:resize(w, h); + end + + function message (id, type, ...) + print("lua::message id=" .. id .. " type=" .. type); + --// handle your message type here. check id + type then use the + --// vararg appropriately. they are the same as the params passed + --// to edje:messagesend() (if any are passed at all). Any array + --// arguments are passed as a single table. + + if ("none" == type) then + print("lua::message no args"); + elseif ("strset" == type) then + strs = ... ; + print_table_start(strs, "", "lua::message strings"); + elseif ("intset" == type) then + ints = ... ; + print_table_start(ints, "", "lua::message ints"); + elseif ("floatset" == type) then + floats = ... ; + print_table_start(floats, "", "lua::message floats"); + elseif ("strintset" == type) then + str, ints = ... ; + print("lua::message " .. str); + print_table_start(ints, "", "lua::message ints"); + elseif ("strfloatset" == type) then + str, floats = ... ; + print("lua::message " .. str); + print_table_start(floats, "", "lua::message floats"); + else + print("lua::message " .. ... ); + end + end + + function signal (sig, src) + print("lua::signal sig= " .. sig .. " src= " .. src); + end + } + } + + // The group name NEEDS a / in it, + // or the part below that tries to swallow it won't work. + // Leaving just the lua part visible. + group { + name: "bubbles/lua"; + lua_script_only: 1; + lua_script { + local bubbles = { }; + local bubbleCols = 8; + local bubbleRows = 6; + + for i = 1, bubbleRows do + row = { }; + for j = 1, bubbleCols do + image = edje.image(); + image:image("bubble.png"); + image:show(); + table.insert(row, image); + end + table.insert(bubbles, row); + end + + function resize (w, h) + for i = 1, bubbleRows do + for j = 1, bubbleCols do + w1 = w / bubbleCols; + h1 = h / bubbleRows; + bubbles[i][j]:geom((j - 1) * w1, (i - 1) * h1, w1, h1); + if ((1 == i) or (1 == j) or (bubbleRows == i) or (bubbleCols == j)) then + bubbles[i][j]:color(0, 255, 0, 200); + else + bubbles[i][j]:color(math.random(200) + 55, 0, math.random(255) + 55, 200); + end + end + end + end + } + } + + group { + name: "plain/edje/group"; + parts { + part { + name: "background"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + color: 0 0 0 255; + } + } + + // A lua group embedded in an edje group. + part { + name: "bubbles_lua"; + type: GROUP; + source: "bubbles/lua"; + mouse_events: 0; + description { state: "default" 0.0; } + } + + part { + name: "background_image"; + type: IMAGE; + mouse_events: 0; + description { + state: "default" 0.0; + aspect_preference: HORIZONTAL; + color_class: "test_colour"; + image { normal: "test.png"; } + } + } + + part { + name: "some_text"; + type: TEXT; + mouse_events: 0; + description { + state: "default" 0; + text + { + text: "This is test text."; + text_class: "test_text_class"; + } + } + } + + } + } + +} + diff --git a/src/examples/multisense.edc b/src/examples/multisense.edc new file mode 100644 index 0000000..3cbaf67 --- /dev/null +++ b/src/examples/multisense.edc @@ -0,0 +1,91 @@ +collections { + sounds { + sample { + name: "sound_name1" RAW; + source: "duck.wav"; + } + tone: "tone-name" 2600; + } + group { + name: "example_group"; + parts { + part { + name: "sample_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + min: 300 150; + max: 300 150; + color: 200 200 200 100; + align: 0.5 0.0; + rel1 { + relative: 0.0 0.0; + } + } + } + part { + name: "sample_text"; + type: TEXT; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + rel1.to: "sample_bg"; + rel2.to: "sample_bg"; + text { + font: "Sans"; + size: 20; + text: "Play Sound Sample"; + } + } + } + part { + name: "tone_bg"; + type: RECT; + mouse_events: 1; + description { + state: "default" 0.0; + min: 300 150; + max: 300 150; + align: 0.5 0.0; + color: 180 180 180 100; + rel1 { + relative: 0.0 1.0; + to: "sample_bg"; + } + } + } + part { + name: "tone_text"; + type: TEXT; + mouse_events: 1; + repeat_events: 1; + description { + state: "default" 0.0; + rel1.to: "tone_bg"; + rel2.to: "tone_bg"; + text { + font: "Sans"; + size: 20; + text: "Play Tone"; + } + } + } + programs { + program { + name: "click_sample1"; + signal: "mouse,down,1"; + source: "sample_bg"; + action: PLAY_SAMPLE "sound_name1" 1.0; + } + program { + name: "click_tone"; + signal: "mouse,down,1"; + source: "tone_bg"; + action: PLAY_TONE "tone-name" 0.1; + } + } + } + } +} diff --git a/src/examples/perspective.edc b/src/examples/perspective.edc new file mode 100644 index 0000000..810ae18 --- /dev/null +++ b/src/examples/perspective.edc @@ -0,0 +1,140 @@ +collections { + group { + name: "example/group"; + + min: 480 320; + + parts { + part { + name: "bg"; + type: RECT; + mouse_events: 1; + + description { + state: "default" 0.0; + } + } // bg + + part { + name: "rectangle"; + type: RECT; + mouse_events: 0; + + description { + state: "default" 0.0; + color: 255 0 0 128; + + rel1 { + offset: -5 -5; + to: "title"; + } + rel2 { + offset: 4 4; + to: "title"; + } + + map { + on: 1; + perspective_on: 1; + rotation { + x: 45; + } + } + } + } // rectangle + + part { + name: "title"; + type: TEXT; + mouse_events: 0; + + description { + state: "default" 0.0; + color: 200 200 200 255; + + align: 0.0 0.5; + + rel1.relative: 0.1 0.1; + rel2.relative: 0.1 0.1; + + text { + text: "Perspective example"; + font: "Sans"; + size: 16; + min: 1 1; + } + + map { + on: 1; + perspective_on: 1; + rotation { + x: 45; + } + } + } + + description { + state: "right" 0.0; + inherit: "default" 0.0; + + rel1.relative: 0.5 0.1; + rel2.relative: 0.5 0.1; + } + description { + state: "bottom" 0.0; + inherit: "default" 0.0; + + rel1.relative: 0.1 0.9; + rel2.relative: 0.1 0.9; + } + description { + state: "bottomright" 0.0; + inherit: "default" 0.0; + + rel1.relative: 0.5 0.9; + rel2.relative: 0.5 0.9; + } + } // title + } + + programs { + program { + name: "move,right"; + signal: "move,1,0"; + action: STATE_SET "right" 0.0; + transition: SINUSOIDAL 1.0; + target: "title"; + after: "animation,end"; + } + program { + name: "move,bottom"; + signal: "move,0,1"; + action: STATE_SET "bottom" 0.0; + transition: SINUSOIDAL 1.0; + target: "title"; + after: "animation,end"; + } + program { + name: "move,bottomright"; + signal: "move,1,1"; + action: STATE_SET "bottomright" 0.0; + transition: SINUSOIDAL 1.0; + target: "title"; + after: "animation,end"; + } + program { + name: "move,default"; + signal: "move,0,0"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 1.0; + target: "title"; + after: "animation,end"; + } + + program { + name: "animation,end"; + action: SIGNAL_EMIT "animation,end" ""; + } + } + } +} diff --git a/src/examples/red.png b/src/examples/red.png new file mode 100644 index 0000000000000000000000000000000000000000..dd03528d706824eb72bddf34b9057e40484ea7a0 GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgg)Hdz4wc6x=<11Hv2m#DR)zJY5_^JdVG;V#vi{z`=4b_|t#=_$uvI zf!TMXWHuP+L~<{k#>B=}cP;bW(Sr4srUnKEAHK)u`tkDc#O&T}%wqd2&cgv{4uhww KpUXO@geCwC>Ojr_ literal 0 HcmV?d00001 diff --git a/src/examples/signals-messages.edc b/src/examples/signals-messages.edc new file mode 100644 index 0000000..b251368 --- /dev/null +++ b/src/examples/signals-messages.edc @@ -0,0 +1,174 @@ +#define MSG_COLOR 1 +#define MSG_TEXT 2 + +collections { + group { + name: "example_group"; + + parts { + part { + name: "part_right"; + type: RECT; + clip_to: "part_right_clipper"; + description { + min: 50 50; + max: 50 50; + state: "default" 0.0; + color: 0 0 255 255; /* blue */ + rel1.relative: 1.0 0.5; + rel1.offset: -49 0; + rel2.relative: 1.0 0.5; + } + } + + part { + name: "part_left"; + type: RECT; + description { + color_class: "cc"; + min: 50 50; + max: 50 50; + state: "default" 0.0; + rel1.relative: 0.0 0.5; + rel2.relative: 0.0 0.5; + rel2.offset: 50 -1; + } + } + + part { + name: "text"; + type: TEXT; + description { + min: 150 50; + max: 150 50; + fixed: 1 1; + color: 0 0 0 255; + state: "default" 0.0; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + text { + font: "Sans"; + size: 20; + min: 1 1; + align: 0.5 0.5; + } + } + } + + part { + name: "part_right_clipper"; + type: RECT; + repeat_events: 1; + + description { + min: 50 50; + max: 50 50; + + state: "default" 0.0; + rel1.relative: 1.0 0.5; + rel1.offset: -49 0; + rel2.relative: 1.0 0.5; + } + + description { + state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + } + + script { + public global_str0; + public global_str1; + public global_str2; + public str_idx; + + public set_text_string() { + new tmp[1024]; + new idx; + idx = get_int(str_idx); + + if (idx == 0) + get_str(global_str0, tmp, 1024); + else if (idx == 1) + get_str(global_str1, tmp, 1024); + else if (idx == 2) + get_str(global_str2, tmp, 1024); + else return; + + set_text(PART:"text", tmp); + send_message(MSG_STRING, MSG_TEXT, tmp); + } + + public message(Msg_Type:type, id, ...) { + if ((type == MSG_INT_SET) && (id == MSG_COLOR)) { + new r, g, b, a; + + r = getarg(2); + g = getarg(3); + b = getarg(4); + a = getarg(5); + + set_color_class("cc", r, g, b, a); + } + } + } + + programs { + program { + name: "bootstrap"; + signal: "load"; + source: ""; + script { + set_str(global_str0, "String one"); + set_str(global_str1, "String two"); + set_str(global_str2, "String three"); + set_int(str_idx, 0); + set_text_string(); + } + } + + program { /* custom signal */ + name: "part_right,hovered"; + signal: "mouse,move"; + source: "part_right"; + action: SIGNAL_EMIT "mouse,over" "part_right"; + } + + program { /* hide right rectangle */ + name: "part_right,hide"; + signal: "part_right,hide"; + source: ""; + action: STATE_SET "hidden" 0.0; + target: "part_right_clipper"; + } + + program { + name: "part_right,show"; + signal: "part_right,show"; + source: ""; + action: STATE_SET "default" 0.0; + target: "part_right_clipper"; + } + + program { /* change text part's string value */ + name: "text,change"; + signal: "mouse,clicked,1"; + source: "part_left"; + script { + new idx; + idx = get_int(str_idx); + idx = idx + 1; + + if (idx > 2) + set_int(str_idx, 0); + else + set_int(str_idx, idx); + + set_text_string(); + } + } + } + } +} diff --git a/src/examples/signals2.c b/src/examples/signals2.c new file mode 100644 index 0000000..077cf0e --- /dev/null +++ b/src/examples/signals2.c @@ -0,0 +1,134 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#define __UNUSED__ +#endif + +#include +#include +#include +#include + +#define WIDTH (700) +#define HEIGHT (700) + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +/* mouse over signals */ +static void +_on_mouse_over(void *data, Evas_Object *edje_obj, + const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Evas *evas; + int x, y, mouseX, mouseY; + + evas = (Evas *) data; + evas_object_geometry_get(edje_obj, &x, &y, NULL, NULL); + + evas_pointer_output_xy_get(evas, &mouseX, &mouseY); + + if ((rand() % 2) == 0) + x += ((mouseX - x) + (x / 4 + mouseY / 2)); + else + x -= ((mouseX - x) + (x / 4 + mouseY / 2)); + + if ((rand() % 2) == 0) + y += ((mouseY - y) + (y / 4 + mouseX / 2)); + else + y -= ((mouseY - y) + (y / 4 + mouseX / 2)); + + if (x > WIDTH) + x = WIDTH; + else if (x < 0) x = 0; + + if (y > HEIGHT) + y = HEIGHT; + else if (y < 0) y = 0; + + fprintf(stdout, "Moving object to - (%d,%d)\n", x, y); + + evas_object_move(edje_obj, x, y); +} + +int +main(int argc __UNUSED__, char **argv) +{ + const char *edje_file = "signalsBubble.edj"; + char edje_file_path[PATH_MAX]; + Eina_Prefix *pfx; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *edje_obj; + + if (!ecore_evas_init()) return EXIT_FAILURE; + + if (!edje_init()) goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, "EDJE_EXAMPLES", "edje/examples", + edje_file, PACKAGE_BIN_DIR, PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, PACKAGE_DATA_DIR); + + if (!pfx) goto shutdown_edje; + + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + + if (!ee) goto eina_prefix_free; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Edje animations and signals"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); //White + evas_object_move(bg, 0, 0); //orign + evas_object_resize(bg, WIDTH, HEIGHT); //cover the window + evas_object_show(bg); + + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + evas_object_focus_set(bg, EINA_TRUE); + + edje_obj = edje_object_add(evas); + + snprintf(edje_file_path, sizeof(edje_file_path), "%s/examples/%s", + eina_prefix_data_get(pfx), edje_file); + + if (!edje_object_file_set(edje_obj, edje_file_path, "image_group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load the edje file - reason:%s\n", errmsg); + goto eina_prefix_free; + } + + edje_object_signal_callback_add(edje_obj, "mouse,move", "part_image", + _on_mouse_over, evas); + evas_object_resize(edje_obj, 63, 63); + evas_object_move(edje_obj, 50, 50); + evas_object_show(edje_obj); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + edje_shutdown(); + ecore_evas_shutdown(); + + return EXIT_SUCCESS; + + eina_prefix_free: eina_prefix_free(pfx); + + shutdown_edje: edje_shutdown(); + + shutdown_ecore_evas: ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/signalsBubble.edc b/src/examples/signalsBubble.edc new file mode 100644 index 0000000..c6f85be --- /dev/null +++ b/src/examples/signalsBubble.edc @@ -0,0 +1,22 @@ +collections{ + group{ + name: "image_group"; + max: 500 500; + min: 50 50; + images{ + image: "bubble.png" COMP; + } + parts{ + part{ + name: "part_image"; + type: IMAGE; + description{ + min:63 63; + image{ + normal: "bubble.png"; + } + } + } + } + } +} diff --git a/src/examples/sigtest.c b/src/examples/sigtest.c new file mode 100644 index 0000000..9538e13 --- /dev/null +++ b/src/examples/sigtest.c @@ -0,0 +1,341 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#else +#define PACKAGE_EXAMPLES_DIR "." +#define __UNUSED__ +#endif + +#include +#include +#include +#include + +#define WIDTH (300) +#define HEIGHT (300) + +static const char commands[] = \ + "commands are:\n" + "\te - change te edje base\n" + "\tl - change to lua base\n" + "\tm - send message\n" + "\ts - send signal\n" + "\tEsc - exit\n" + "\th - print help\n"; + +static void +_on_keydown(void *data, + Evas *evas __UNUSED__, + Evas_Object *o __UNUSED__, + void *einfo) +{ + Ecore_Evas *ee; + Evas_Event_Key_Down *ev; + Evas_Object *edje_obj; + char *edje_file_path; + + ee = (Ecore_Evas *)data; + ev = (Evas_Event_Key_Down *)einfo; + edje_obj = ecore_evas_data_get(ee, "edje_obj"); + edje_file_path = ecore_evas_data_get(ee, "file_path"); + + if (!strcmp(ev->keyname, "h")) + { + fprintf(stdout, commands); + return; + } + else if (!strcmp(ev->keyname, "e")) + { + if (!edje_object_file_set(edje_obj, edje_file_path, "plain/edje/group")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + + fprintf(stderr, "Could not load 'plain/edje/group' from sigtest.edj: %s\n", errmsg); + } + else + fprintf(stdout, "Loaded Edje object bound to group 'plain/edje/group' from" + " file sigtest.edj with success!\n"); + return; + } + else if (!strcmp(ev->keyname, "l")) + { + if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + + fprintf(stderr, "Could not load 'lua_base' from sigtest.edj: %s\n", errmsg); + } + else + fprintf(stdout, "Loaded Edje object bound to group 'lua_base' from" + " file sigtest.edj with success!\n"); + return; + } + else if (!strcmp(ev->keyname, "m")) + { + Edje_Message_String *msg = malloc(sizeof(*msg)); + + fprintf(stdout, "\n"); + msg->str = strdup("C message text"); + edje_object_message_send(edje_obj, EDJE_MESSAGE_STRING, 2, msg); + free(msg); + fprintf(stdout, "C message sent\n"); + return; + } + else if (!strcmp(ev->keyname, "s")) + { + fprintf(stdout, "\n"); + edje_object_signal_emit(edje_obj, "C signal 1", "Csource"); + edje_object_signal_emit(edje_obj, "bubbles_lua:C signal 2", "Csource"); + fprintf(stdout, "C signal sent\n"); + return; + } + else if (!strcmp(ev->keyname, "Escape")) + ecore_main_loop_quit(); + else + { + printf("unhandled key: %s\n", ev->keyname); + fprintf(stdout, commands); + } +} + +static void +_on_message(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Edje_Message_Type type, int id, void *msg) +{ + int i; + + fprintf(stdout, "C::message id=%d type=%d ", id, type); + switch (type) + { + case EDJE_MESSAGE_NONE : + { + fprintf(stdout, " NONE"); + break; + } + + case EDJE_MESSAGE_SIGNAL : + { + fprintf(stdout, " SIGNAL "); + break; + } + + case EDJE_MESSAGE_STRING : + { + Edje_Message_String *mmsg = msg; + + fprintf(stdout, " STRING %s", mmsg->str); + break; + } + + case EDJE_MESSAGE_INT : + { + Edje_Message_Int *mmsg = msg; + + fprintf(stdout, " INT %d", mmsg->val); + break; + } + + case EDJE_MESSAGE_FLOAT : + { + Edje_Message_Float *mmsg = msg; + + fprintf(stdout, " FLOAT %f", mmsg->val); + break; + } + + case EDJE_MESSAGE_STRING_SET : + { + Edje_Message_String_Set *mmsg = msg; + + fprintf(stdout, " STRING_SET -\n"); + for (i = 0; i < mmsg->count; i++) + fprintf(stdout, " %s\n", mmsg->str[i]); + break; + } + + case EDJE_MESSAGE_INT_SET : + { + Edje_Message_Int_Set *mmsg = msg; + + fprintf(stdout, " INT_SET -\n"); + for (i = 0; i < mmsg->count; i++) + fprintf(stdout, " %d\n", mmsg->val[i]); + break; + } + + case EDJE_MESSAGE_FLOAT_SET : + { + Edje_Message_Float_Set *mmsg = msg; + + fprintf(stdout, " FLOAT_SET -\n"); + for (i = 0; i < mmsg->count; i++) + fprintf(stdout, " %f\n", mmsg->val[i]); + break; + } + + case EDJE_MESSAGE_STRING_INT : + { + Edje_Message_String_Int *mmsg = msg; + + fprintf(stdout, " STRING_INT %s %d", mmsg->str, mmsg->val); + break; + } + + case EDJE_MESSAGE_STRING_FLOAT : + { + Edje_Message_String_Float *mmsg = msg; + + fprintf(stdout, " STRING_FLOAT %s %f", mmsg->str, mmsg->val); + break; + } + + case EDJE_MESSAGE_STRING_INT_SET : + { + Edje_Message_String_Int_Set *mmsg = msg; + + fprintf(stdout, " STRING_INT_SET %s -\n", mmsg->str); + for (i = 0; i < mmsg->count; i++) + fprintf(stdout, " %d\n", mmsg->val[i]); + break; + } + + case EDJE_MESSAGE_STRING_FLOAT_SET : + { + Edje_Message_String_Float_Set *mmsg = msg; + + fprintf(stdout, " STRING_FLOAT_SET %s -\n", mmsg->str); + for (i = 0; i < mmsg->count; i++) + fprintf(stdout, " %f\n", mmsg->val[i]); + break; + } + } + fprintf(stdout, "\n"); +} + +static void +_on_signal(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *emission, const char *source) +{ + fprintf(stdout, "C::signal sig=|%s| src=|%s|\n", emission, source); +} + +static void +_on_delete(Ecore_Evas *ee __UNUSED__) +{ + ecore_main_loop_quit(); +} + +int +main(int argc __UNUSED__, char *argv[]) +{ + char border_img_path[PATH_MAX]; + char edje_file_path[PATH_MAX]; + const char *edje_file = "sigtest.edj"; + Ecore_Evas *ee; + Evas *evas; + Evas_Object *bg; + Evas_Object *border; + Evas_Object *edje_obj; + Eina_Prefix *pfx; + + if (!ecore_evas_init()) + return EXIT_FAILURE; + + if (!edje_init()) + goto shutdown_ecore_evas; + + pfx = eina_prefix_new(argv[0], main, + "EDJE_EXAMPLES", + "edje/examples", + edje_file, + PACKAGE_BIN_DIR, + PACKAGE_LIB_DIR, + PACKAGE_DATA_DIR, + PACKAGE_DATA_DIR); + if (!pfx) + goto shutdown_edje; + + /* this will give you a window with an Evas canvas under the first + * engine available */ + ee = ecore_evas_new(NULL, 0, 0, WIDTH, HEIGHT, NULL); + if (!ee) + goto free_prefix; + + ecore_evas_callback_delete_request_set(ee, _on_delete); + ecore_evas_title_set(ee, "Signals and wessages tester"); + + evas = ecore_evas_get(ee); + + bg = evas_object_rectangle_add(evas); + evas_object_color_set(bg, 255, 255, 255, 255); /* white bg */ + evas_object_move(bg, 0, 0); /* at canvas' origin */ + evas_object_resize(bg, WIDTH, HEIGHT); /* covers full canvas */ + evas_object_show(bg); + ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); + + evas_object_focus_set(bg, EINA_TRUE); + + edje_obj = edje_object_add(evas); + + edje_object_message_handler_set(edje_obj, _on_message, NULL); + edje_object_signal_callback_add(edje_obj, "*", "*", _on_signal, NULL); + + snprintf(edje_file_path, sizeof(edje_file_path), + "%s/examples/%s", eina_prefix_data_get(pfx), edje_file); + if (!edje_object_file_set(edje_obj, edje_file_path, "lua_base")) + { + int err = edje_object_load_error_get(edje_obj); + const char *errmsg = edje_load_error_str(err); + fprintf(stderr, "Could not load 'lua_base' from sigtest.edj: %s\n", + errmsg); + + evas_object_del(edje_obj); + goto free_prefix; + } + + fprintf(stdout, "Loaded Edje object bound to group 'lua_base' from" + " file sigtest.edj with success!\n"); + + evas_object_move(edje_obj, 20, 20); + evas_object_resize(edje_obj, WIDTH - 40, HEIGHT - 40); + evas_object_show(edje_obj); + ecore_evas_data_set(ee, "edje_obj", edje_obj); + ecore_evas_data_set(ee, "file_path", edje_file_path); + + evas_object_event_callback_add(bg, EVAS_CALLBACK_KEY_DOWN, _on_keydown, ee); + + snprintf(border_img_path, sizeof(border_img_path), + "%s/edje/examples/red.png", eina_prefix_data_get(pfx)); + + /* this is a border around the Edje object above, here just to + * emphasize its geometry */ + border = evas_object_image_filled_add(evas); + evas_object_image_file_set(border, border_img_path, NULL); + evas_object_image_border_set(border, 2, 2, 2, 2); + evas_object_image_border_center_fill_set(border, EVAS_BORDER_FILL_NONE); + + evas_object_resize(border, WIDTH - 40 + 4, HEIGHT - 40 + 4); + evas_object_move(border, 20 - 2, 20 - 2); + evas_object_show(border); + + fprintf(stdout, commands); + + ecore_evas_show(ee); + + ecore_main_loop_begin(); + + eina_prefix_free(pfx); + ecore_evas_free(ee); + ecore_evas_shutdown(); + edje_shutdown(); + + return EXIT_SUCCESS; + + free_prefix: + eina_prefix_free(pfx); + shutdown_edje: + edje_shutdown(); + shutdown_ecore_evas: + ecore_evas_shutdown(); + + return EXIT_FAILURE; +} diff --git a/src/examples/sigtest.edc b/src/examples/sigtest.edc new file mode 100644 index 0000000..ef2a854 --- /dev/null +++ b/src/examples/sigtest.edc @@ -0,0 +1,303 @@ +fonts { + font: "Vera.ttf" "default"; +} + +images { + image: "bubble.png" COMP; +} + +collections { + group { + name: "lua_base"; + lua_script_only: 1; + lua_script { + --// stick object private/local vars here + local D; + local text_geom; + + --// Functions to print tables. + local print_table, print_table_start; + + function print_table_start(table, space, name) + print(space .. name .. ": "); + print(space .. "{"); + print_table(table, space .. " "); + print(space .. "}"); + end + + function print_table(table, space) + for k, v in pairs(table) do + if type(v) == "table" then + print_table_start(v, space, k); + elseif type(v) == "string" then + print(space .. k .. ': "' .. v .. '";') + else + print(space .. k .. ": " .. v .. ";") + end + end + end + + + --// init object here + D = {}; --// data is empty table to start + edje_geom = edje.geom(); + + D.edje = edje.edje(); + D.edje:file("plain/edje/group"); + D.edje:move(0, 0); + D.edje:resize(edje_geom.w, edje_geom.h); + D.edje:show(); + + edje.text_class("test_text_class", "Sans:style=Bold", 10); + + --// send some random edje message + edje.messagesend(7, "none" ); + edje.messagesend(7, "sig", "lua message signal", "luaSource"); + edje.messagesend(7, "str", "hello world"); + edje.messagesend(7, "int", 987); + edje.messagesend(7, "float", 987.321); + edje.messagesend(7, "strset", {"hello", "there", "world"}); + edje.messagesend(7, "intset", {1, 2, 3}); + edje.messagesend(7, "floatset", {1.1, 2.2, 3.3}); + edje.messagesend(7, "strint", "hello world", 7); + edje.messagesend(7, "strfloat", "hello world", 7.654); + edje.messagesend(7, "strintset","hello world", {1, 2, 3}); + --// and a signal + edje.emit("lua signal", "luaSource"); + + + function move (x, y) + print("lua::move x=" .. x .. " x=" .. y); + D.edje:move(0, 0); + end + + function resize (w, h) + print("lua::resize w=" .. w .. " h=" .. h); + D.edje:resize(w, h); + end + + function message (id, type, ...) + print("lua::message id=" .. id .. " type=" .. type); + --// handle your message type here. check id + type then use the + --// vararg appropriately. they are the same as the params passed + --// to edje:messagesend() (if any are passed at all). Any array + --// arguments are passed as a single table. + + if ("none" == type) then + print("lua::message no args"); + elseif ("strset" == type) then + strs = ... ; + print_table_start(strs, "", "lua::message strings"); + elseif ("intset" == type) then + ints = ... ; + print_table_start(ints, "", "lua::message ints"); + elseif ("floatset" == type) then + floats = ... ; + print_table_start(floats, "", "lua::message floats"); + elseif ("strintset" == type) then + str, ints = ... ; + print("lua::message " .. str); + print_table_start(ints, "", "lua::message ints"); + elseif ("strfloatset" == type) then + str, floats = ... ; + print("lua::message " .. str); + print_table_start(floats, "", "lua::message floats"); + else + print("lua::message " .. ... ); + end + end + + function signal (sig, src) + print("lua::signal sig=|" .. sig .. "| src=" .. src .. "|"); + end + } + } + + // The group name NEEDS a / in it, + // or the part below that tries to swallow it won't work. + // Leaving just the lua part visible. + group { + name: "bubbles/lua"; + lua_script_only: 1; + lua_script { + local bubbles = { }; + local bubbleCols = 8; + local bubbleRows = 6; + + --// Functions to print tables. + local print_table, print_table_start; + + function print_table_start(table, space, name) + print(space .. name .. ": "); + print(space .. "{"); + print_table(table, space .. " "); + print(space .. "}"); + end + + function print_table(table, space) + for k, v in pairs(table) do + if type(v) == "table" then + print_table_start(v, space, k); + elseif type(v) == "string" then + print(space .. k .. ': "' .. v .. '";') + else + print(space .. k .. ": " .. v .. ";") + end + end + end + + + for i = 1, bubbleRows do + row = { }; + for j = 1, bubbleCols do + image = edje.image(); + image:image("bubble.png"); + image:show(); + table.insert(row, image); + end + table.insert(bubbles, row); + end + + function resize (w, h) + for i = 1, bubbleRows do + for j = 1, bubbleCols do + w1 = w / bubbleCols; + h1 = h / bubbleRows; + bubbles[i][j]:geom((j - 1) * w1, (i - 1) * h1, w1, h1); + if ((1 == i) or (1 == j) or (bubbleRows == i) or (bubbleCols == j)) then + bubbles[i][j]:color(0, 255, 0, 200); + else + bubbles[i][j]:color(math.random(200) + 55, 0, math.random(255) + 55, 200); + end + end + end + end + + function message (id, type, ...) + print("bubbles::message id=" .. id .. " type=" .. type); + --// handle your message type here. check id + type then use the + --// vararg appropriately. they are the same as the params passed + --// to edje:messagesend() (if any are passed at all). Any array + --// arguments are passed as a single table. + + if ("none" == type) then + print("bubbles::message no args"); + elseif ("strset" == type) then + strs = ... ; + print_table_start(strs, "", "bubbles::message strings"); + elseif ("intset" == type) then + ints = ... ; + print_table_start(ints, "", "bubbles::message ints"); + elseif ("floatset" == type) then + floats = ... ; + print_table_start(floats, "", "bubbles::message floats"); + elseif ("strintset" == type) then + str, ints = ... ; + print("bubbles::message " .. str); + print_table_start(ints, "", "bubbles::message ints"); + elseif ("strfloatset" == type) then + str, floats = ... ; + print("bubbles::message " .. str); + print_table_start(floats, "", "bubbles::message floats"); + else + print("bubbles::message " .. ... ); + end + end + + function signal (sig, src) + print("bubbles::signal sig=|" .. sig .. "| src=|" .. src .. "|"); + end + } + } + + group { + name: "plain/edje/group"; + parts { + part { + name: "background"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + color: 0 0 0 255; + } + } + + // A lua group embedded in an edje group. + part { + name: "bubbles_lua"; + type: GROUP; + source: "bubbles/lua"; + mouse_events: 0; + description { state: "default" 0.0; visible: 1; } + } + + part { + name: "some_text"; + type: TEXT; + mouse_events: 0; + description { + state: "default" 0; + visible: 1; + text + { + text: "This is test text."; + text_class: "test_text_class"; + } + } + } + + program { name: "show_signals"; + signal: "*"; + source: "*"; + script + { + new buf[128]; + + snprintf(buf, 128, "edje::signal sig=%s sig=%s", sig, src); + set_text(PART:"some_text", buf); + } + } + + script { + public global_str0; + public global_str1; + public global_str2; + public str_idx; + + public set_text_string() { + new tmp[1024]; + new idx; + idx = get_int(str_idx); + + if (idx == 0) + get_str(global_str0, tmp, 1024); + else if (idx == 1) + get_str(global_str1, tmp, 1024); + else if (idx == 2) + get_str(global_str2, tmp, 1024); + else return; + + set_text(PART:"some_text", tmp); + send_message(MSG_STRING, 1, tmp); + } + + public message(Msg_Type:type, id, ...) { + if (type == MSG_STRING) { + new text[64]; + new buf[128]; + + getsarg(3, text, 64); + snprintf(buf, 128, "embryo::message |%s|", text); + set_text(PART:"some_text", buf); + } + } + + + } + + } + } + +} + diff --git a/src/examples/swallow.edc b/src/examples/swallow.edc new file mode 100644 index 0000000..a62a0b5 --- /dev/null +++ b/src/examples/swallow.edc @@ -0,0 +1,21 @@ +collections { + group { + name: "example_group"; + max: 500 500; + min: 50 50; + + parts { + part { + name: "part_one"; + type: SWALLOW; + description { + min: 50 50; + state: "default" 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + } + + } +} diff --git a/src/examples/table.edc b/src/examples/table.edc new file mode 100644 index 0000000..5453705 --- /dev/null +++ b/src/examples/table.edc @@ -0,0 +1,19 @@ +collections { + group { + name: "example_table"; + min: 50 50; + + parts { + part { + name: "table_part"; + type: TABLE; + description { + min: 50 50; + state: "default" 0.0; + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + } + } +} diff --git a/src/examples/test.png b/src/examples/test.png new file mode 100644 index 0000000000000000000000000000000000000000..fb620d7d24efb9b67443dbfbfe291da6b1b38f1c GIT binary patch literal 22869 zcmXtg1zeNg_y03Sj2@*l3`eJgq~t&b(xo&C(jiDmY$B#ZmJJl9m7P>qh?J>lz%>yJazaFlaClr7N{{KF~;H58;>r(N&riku6NMGam5<@WMN zc=)2URd>;5u5Y+!<-%x4P9@ks-rcLn4s(X`?>^$%JI_STzi1#x*Rle*M#F|@vKN%N z#q#dxjJ;qUhtS8*ZeP|Ow7Nbx^LEG67wujSln4cI<(N3Ae7f!% z7p6E{{G~O=^vj^OhBb5rE!MJ&2kU7hif;S!JD-PkX~}X1-MJBK6^!mWI~wE^(D2Mo zJHNkr1y_{yvu~zW@K4=k#mx^U zm$BM!*b;wo0Zdf8rh!LkzzcvAqY_Pv?gN~2h|$+|ps8Lh(A?bfOdoCHN@2Ni@D3enZ#= zE}k6!xAQsP10Ie`0KPuR!M~48J4@q>2R_fOJ&R;U_3GrSSBrU|3yk?zs>5!*k)|u! zXoOQ)n9iA-)$ZmQ7kEVug5YNUEx@&3NV$~U&H8NR*{r?%F*9N%oLRPuMO0OE`}vPm z96NuG@{6DXR^5P*@7m1Hf8SHzGVhWphu1a>&y{kHSX)WwuI zZW&(*AC-FeUU4gaiRXi-fz&r7uh@?gsEWB*=^knvL~sS51&|8#zeXzP|kxKbu&}2NMG?r zS=_tZCO6;tY2Wq(aO1%8{n&7dh%&!xuEWMMzveAGzWlN}3y^`k1QvCy?!_ctt6H&3 z=cRDHj()wb5^8YMIB`_j_dzRdr!pk&=Wu6$qPhMZYUFTsHp+PzfoNjQ%yK!PVB^!G^zkR-#9h~3lS}MRf&$q zmLNPbbm14%%W0gm;4ASTt46>^v-D3$c?(oG`A%fhI=tswaQMrlpZn!cLCdQ24j0am z(A?E{^??9pCZQ9@H+sttw{?mJ)P%0=h73OHLDHvv)ExZ1>E8c0|oRh^9pdV0s@Ts%>W+~6eLyVTtNl?ZV zLg++yP$JIg2d#!WZ8ReeC6YfsHa}`6x>0Q?*gkgpBeVZWngg+C#y&O>ev^ARaL%ODpm9gWtHo4$Hgo- zp-hxL`B%Q+UD|GTtf@C?H8QwPY9*NUhpe4t_SlxaNc62YmRk(rxl`Z0ui~E1T)^PU z7+#n-hr&;@G|@ieR}KOBaO)w2i*c}pV``IhYKKBp-a}yy*bBo~LJAA_GCL(aNJf|_ z!-rhP2-L3>>Jb}e*YDs7(`H)vM)~(u?N#{RKNLYaP=?{z{cG0DV>^g<9$^zk3N<36 zE0HChk6z5JNnmpgil~M;S#}MwlWU;`sq;dL(OOj@xP>mMV;eru2qdqoBxLGW3 zn@M?AYtY?`g9A9;_i%Y1 zG%$>%*lJf#o`(zj+i=yIzPZr!t)F6SNY7K+ZFEyUV@LCWhNyNYO~rRzohuxWvx@W^ zN8wv`+P8OxcD;=8)i8(l0m#$YS@${)efF2`#8(sd%K)x;yuV4Cfh_I{GR=m8X!(&h zz4?bJhB zu`}?AtGK7sUvblN{fT2&KBqjX@}oPtM={70HL0Mj!**^E7}h}Y9q7O~N(bi8P!=JG z@$AnC!m8!sddCv0g4xs!t8++x1W~<(aH7%mi8(vV1P9#RID^sEh(zHqKZmhYbxd;U5bG_t}yrM5{ zVG9q}t@*dRkYGu&q?IE@EROm4mzu8T+qNBJ~cj~bfW>7dK z7=Fl&$zwgemfq>~RXldtC9lOW%L5p`eQWmfVK^h~Vy-Z#uQatVP(m2I!vJDa!vy^-3-AH#&o2w}DIQYu#Jh zV01ZPKrwydau3(8DQp6Y?u_A2|Fc(kcseHyUo#5sqa%K0jmqCXeQCluBkb*=uy-$m z_s$|}+HiU9nl3Ac5?i9%#*3>|Cxtm5PYuH|qD^dzltcQk1_}m=yZw3$?*$J-+&FjO z903_rUyP^)Bkv^)R6AojR);Cv)js+TGhD=C2(b1A2mZPo78heU9tK~_#KBF|RJZ<1ZHOoOvKL(&HWL{zd2#&Q#;}P){M1%hY6xYka-`Y_+!x8M znea2Cc1@ssg=u*A6d!~k+*I$cYyCLanu0$`VF(HouFd(}stQi$H6gy^V0G_kVt~3N z;m_eHo1gPnf5|6`5L|}0B*9Hu;4?E0`Xz$P4I(v(yU-v|he&|SHWnf;lw^z+9Jq>m zxzPBZd&w}2OZC#`iVE5Jy^oQBM}l#q)1jCcmPwnok!MQw=+y)qP{4cYqDOtph$tgV z{n7%a^TF^UaNwePORbviRGB<4ob@Vpg0BC%`O94GHAh$3?7nrEFp6Cn!qE|^##l7~ zjxPMvJ);AS9_S|clluA0GW{z<8H5n@nDix+hho5jMvt>p}Y%ZkJiNeWE3 zemL!IW((rYT^S?{#o*sSW&X+$0;5}*3d~^7qGkU{4?~m;pLvrb^M5wLOYvo=?E!V4 ziQ_>x&eVRZXf-L5%Ik5eL(9uVR=NEYQmU3DQZj(NwQsyWr^~Jh^+kQ7?k@`^E21*3 zp6#)D$jjXv;P=5%GvXdR$8i4DFy-@zSyI(@hioC0^t)d*4oHWNDAQM=F&O2$1O4#w zVE6b;R-=i$4p1Za&pGbf7~agMG`0;&P8B`ylh_b8NjM7!Tjk`#|2SA3_T+VjU)cU? zJLW3ku5(gm}NwQPS(xuPrRJD11aUpt6049>Q! z8Lq(Kzuk`b+>{`d{dXJZ`Z_Pe>j|@(7YnsQw&UZqT3-*L<{EVy9eM18sc)*Hq5zji zd71h0v6;OD;_yXk73>q+@zCk-a)#FlZ$oDqrI$rE;+Y>(<_AO>%x8W zWd{thKltlo^g3fg8vZWzOPe;`3pV(7NG?{{4M>jlk1Taf4zP){T1o7jQ%#aSlYgips|uA}bnGg3D9U zP+_Jb4qC{2t|% zPA(&Pbs_ppy8i~qPc1u10p!h3cb)*fV@~Z+Q6`9pWW+kK+dwS-D~)G&NgnwrzsnG4 zBM-^od)HaYcob2o(F5gTz&S*pM|_`E!n8mOJgda<)IeUYT+X64CA|0A{0#`q{t_Hq9V zVy+gG`-SIiYPBD*;m>k=Gk?wi!&Y7e77JF_#0~POZ0mT4THFF_2TS8b@ASzATNQ@v zG#HgcXD(CY8%W#(cvV8SztuM z_`5@&Kb6)`A9k+D2%UhC=E>0#7u86as;^B``oUbd8=WDEa(AS0GDwT$Gw};rxQm={ zk<$$aQpSRkfgwhSKq+i>Rtu^*2n$tTGr(+tF!_1Q2YMKFBvIGB7dWQ-yZ#B4bSr{j zXlf?W&i74^_>&zhH*Rp25L?>=U0yYcki<39CPXg~Bd0CjQYBda6&IM+1yIWzFN z4z_i6I`3OVBiV7`ne&y8_DMf{K{JTp$NoIqLW_(4ImXlBrK$;T=389D`SGRG~6MeXc^ zqFJ%4K=%Trg+FCI$bv8&3VZj0N;dGG;#9#i{I(uteR2Q}1k%M7i!$_XgSKc~ z!+}xNwWj<|25mP6Y%g#~F-En7<(7$Q;Cdu$-{$hn6OdwzTl%rLe~a|&KA;H{e@*_} z0c?SmisKvJDPIZofl^BPWP@=YfCxo|8J|$63?%NkvXBEz%~`Q(^@D9BSvU;0-imXz zyTe_lQb|(_)8Om4uCIlCJ26cMv1OqzJ`704{Sl=$D)*<~o_}Ou@%j8lVRcCELEzhl zcL!A*#U|SR!9G7jFGmUE?;6SA_b~*9qqY5xuaKavITtGIhI(VLu!PI&DZDPE;W&epQfQ`af2p4lJ0 zx;jraJ`1{=9}@E-!-XtYn>fiy$(gu)i7MaUIa&(+7?hu0dX@(;(Cl6fTwF+&I4FD* z{CwSwQ`0R&zgdH*-mzwCle)$Q6jodL4Y+WPPV6--C&;ENSzd^q1Z0l#uzDN}N;u`< zC4B$BZGPqVEXE~|NZOxdSu67yehzPiM?MNYTW{PvoHpM$ffvD43-QC(LT3x$Q#1E- zFb|ZzEW2dZOup|5lRJsNZVGGgfLY%M+hVC38A?)=Jdc$ixPBGuZ~O# z7w`6#oEpXk%Sp3rZ|u5fjHyfeBs+j*L{9EdamB>cOH1iK_ymn$d&1CkU1==FkovGa zv@w_8!D60ksLS8$h&pfZCkR8p5TABVK8D(kIcM=`a6`+7W0<8@KelEn-w;^UfI+Z}26c)BMfN?ecl zQA!P0Tz$cjgr%bE^~JA;fv@tz9NSIYXQ55wkW|4F3#3zWFn3;n0%aqd5oY}ds+%THHHHj1i&{x!vC&)F9? zR;AB!Kv0t}dTfRxJg$7nH!Mfgi}1bhDZ?k*jKlYkd-_j_cBm)Bcc!WVn~HklX`T~b zU9qvOkGxWXRh22R3xazV>ey(E6hUlWiEH6RKMb7s@;KwH z7Gsy3`wTmLJEqN}HWd*MrDF7jr@WQ_oA+57B94k&ZAy}r#Ei}ovQy4sNTWNY)&^y% zi9>#_rznNzp*uS5ILKOjYx?wIP#=Mcw7t z#M@*%fNg&{VNS4m+i;=K{O_st5UV`gpTA?V?({Yd!(v`x*~Fz%_XU^axb>}1X`BG& z2J%cdYl?U?lRe(tLI;xJ=HX<84WGTCw45+hy>UDN=vAMu=g-{}4BW}5w|`kRSP-Iq z?J7})7JE?}eXqo;;U;a+L;82;aq=luO3#oZIdJ#y`t4cH`t3THcJGfIg=?m?q*}dJ zk{NK_C?WNs>+O4yOP3Z&%blxN--)h2G>Z+#IA-=;6^?}dz5*w#FP)PLZz}RUXe`8A zJvK4KgxI(ncdgyQ2#mf4)o+_g6urhdvC#8Ai{x7STyt-OX+D#P;aKghxWOiEej!Ic zn$cSN)RUp&9?Tkkau4G|z{c1izi(pfdIH&vIOHdb%{^Dg^W0Zob$t&KZTaau8fCD1 z^G%qZJn#33)H3s%5epsx>I6}0*)Lp1ka7Gn@>bK4RgA z^LM=@v)T)HI!D@zzrUuV$8c4EIRmvw!U|^Z?LK*L5_!0-W=(~Dgq+qX2~$j4%ie1`@gOGC6^}dZ@KVv z_A?n>{AJL-vv^3m5~PG1gf}}@>^&3LZ!_K^J*KlWomxt&-~@1TsP!2qm`ToDH}bIE zs?gb|7SrO<5M%wsIr%}Sa$hfM^dd_0J?f~&#t;Ido_tl_5;t)LZujtXUHs@S9EBi0 z2t7CbYmrZOBit^6RFFB@ZVbr?ykb5KI4+;JI)3%hyJJXKnn{hulV&e? zw!a~bwoQ`7F^Rv6LANH~Jkb=UJmJ;{l`=+dcTJwPzL|Bckz&chL8}sUo8DBZ(qk`h zq->H}j$GwingXwo!p*%-(hA(pSfaor{oEZu@a)ftUuz&VVhqAIC|;0FURAzGyf&lL zBlV^~-%@QQddOz4S^TCM&5ml94V_UiH%>M^zjlJ7lxm@emi|slQ_DgfIqp8q{!iE1 z?!|4Y=t_Z%=$mgO5l@BCA`!pqod}iU4f?O%s7XiAM9Dn!eeE`9JENVvg#cpwU&j9t zHz^ZGP%{`LY)bj|Hm0?XmKdqRaw~6zP)A-!MS8%3xk306h+zDeh^yM68ZVLfc7vii1(A7T|fm!VT zI9>gnEc8b!0m@Ye_9`b^{VWwavc=CS;W9rXfK&{SFvKZs!_q-P$RmtyGDaT&K7-rz zaf0y!7rMy}Vw$)UveyvaAK25NAYSM`;LkB1S@-XFFL4q7#qkz@%ewP(58v2Bc{6$Ekq1bDH$XvIU%GyZwL_CA`eFp49z(F`HiNpPp z+M0EdP;ipG{|91VM(Npih6*)hS}ruj`}ZR&t?6I>&AxSOZ7)#xL?^}M3&8$(HI!cf zXw$vJRxSq!{~ks8gV$0m!&nop0Sm5$b{zAN&h|$kf3pe@Zm>xE8H4?dGb-Ho3n>GR zmS*^AwlRVwdkKk&fxEy}E6e1k6Yxs#wY>kH@3EsWFJ;PW9lw z(zrsu*I+D)U$op92@cNRNcOC==q1+(mQtMbZbi?P0TdLdh>xb<*Wm1T1*{Fib`Xb@>EcfT<{HuJe9JqHj=6|kOijdk0 z@T{1g?5u<@i49tQ12fy(#uEFB8dM90#9QhC7F4S}Gk>Y)e{avZ^Py#4OeB0s10{3( zA;-H`;0O4~*|ezliKbe{!$A)+HB4A93*}J@-rQoYks^uV7DcoE(yHHs;7+Zwx}W0{ zoGq3WFilX^tH3pd=kLbUMPrXd>#p{1GIhq`+2F0&4-%@d2!5ge-wRL|?b15BiA)nd zF>v9UyQ-;KGA$r-61jhIE?yY(xS2!`%Ponf6+ZLpU;uD=mh5Nt7$+kx*epJB`&5ti z?k*L|w&0T1jn;cBEV@n4&HLOuxCu)NK>RXQA{; z>9^PhdU#4%vK64UC1XimDq)UV3ZGgEfKHn6>8Ey-I`y^<9PN7-L~9O4?1Mm?@<%P6 zwYLvFF@c-o$6@14E#Tdo&-(fAjAO5|<}qmR{D<0;C-i{P{vZvzes5U{PMLKa@IY}Q zFzkH^)j%keoHuJUEYKPu(;8^a^s3|Myv{|gO;d>fXwj;e`)rxIcf(Gk?&Pw1*yAb7 zMqaEgpjEZ9H$oHifHSc_-mOiq5-({z68P7appZVFjek?v@ORD#Ay1+BjJ8^b-c}2|9*N=0NPO)r8a-o5*}goWXf5eSVO%~ z^7UH3=3*s88$St@#s4K)-JR~t#m{rIdz2&$MMY5y!d361_jh2CmE!xeptS8Pkpegu zkp&Mp4s6J;N6gtv9#Z3oN&RkoeA?|fdKnYlmF1$39=gOxO{dTHdCB-vw-$rzql8^# z9aRu-Deh(<^=<|?{|YNmT@bREHuzhq>?8u60Inw-w_!B@q!3NJs>OtL0p{tJ9^05kRr2ji z0^w7~V(%3CPN%kgyxx^!l@eR`Q9R{{kW=PP-_vPC&Q$YQ6`M z2I&n_L3eE(8?luJP}b9+?WT4=yxw3R-M@EJ4^Z%D6FNNrH#>h55fa9A_|yW8`^$7~ zkJ2g+dY|jYBqQ_Eay4(~dXBzZ$Bl@1DQYS%OH!p@?lNro3Q9iRV7Y{KIw zSI7bg_>$qENzU3%cWG+I7E4NV>KQ_UmrbetZ5mf!#5q2b&;Nyx{q}DYK$Dg7V|We2 zIp*>5BDsjdZy|6lU1M5IV`2P>6L=0*;l(m?6t2L5Oi=z!q8?c67Y~aK`(&?=$MeHt zBkVQpU@>$!m~%P5V}`w6IkoB6aHykCr38tQCddFvNh0euf-_MRO!jZDpqK@^ORw{H7@W(!vpKeLv((-eWb|*&)PQfPtT2xxTrVl8_1V&u~|=a1}IT64BhO=)xunwXyV`=^F!?|$Z697++Y zOLTX>Ej*;1njCWqw^CA_z8|t#L#g4Ijh>OGJcZu_EeL|m8$ro5{X?mC5~hFhNKeHb z0{Q5OD!3Box#;qhSVXYfawLB}NQ>E4mEi1aQgz7ieEJN~diN1{@O>}9S83J0<=ICz z4~a_*pMmtV0%_Gto;&Zordk;ALU$rt0-=(pzQ=F z2pBSPT=Mg7qcx{4Zl`4Ae)I!6yw~zNL`LibsA~T>18`o;&vQ*|xNKqP@~OedJ8$u; z1ZB>5a|4=d;b7-NTiPTqgM#N2)8Y_{zsuy?Cspip35fKuoC383_=CsJ{O;dj0RqG5Mn5&eFe z$s+2^9OKJ!&=RFksv~vxt^4n1Zk%b2Pg?C6u$dJ#fks<|X2k*y%8yK7F$;mxSg<G51yYQE9#?rVT{csv_|X5Z9l7YA+4MPSN|?O$7ho9{A(^)WV5Y4PnO($Kyu<4h2@8hQzoX2&A9LWbM8&}wN;zCZsAUQh(Jg#=hOZzj4OD*+_h zB`hf5K(4f+*$#AU0;SY?BkCBC#2Og_n!n4U4OuD%nQnsW{b#LRBq)+K5Wp1ESoG2Q zqq@NJU6S(ngGvAFhvBo3o|(sdnPYX{qkeB2BiyE*9r9<}3s!jlW%uJpgI`pbX;r!*=eC*wLkE z?Qw2I$nn&F5#l|+UxEbNA=nZ4R1@+f2dq+2OpG4UJfaSw@yVmxH22WUNZ1YaR_|>!a~jLhaq!MC(;~i@##U zKaN;+-M=jjWx}APcorIRCd>$%y^$^q2K)+DtRUkL<*#xY8p*~#0d>r-Ibjl^!nO3~ z9>q{$Ns5<5S&LwZ#SX+ZzwBSt$-S#nh76JYrw071G9_v!%Nqc?5H0}VtQOOTaDd~X z9?}$FApepx4{7T3XiE%K_kcV@{5@3HKpT>AdxFIfQbL}p59lU;B~`2CePGk?DZRT!;5(;RLV$LN83dvQvG1dh}vdf9l$JdKEDxnALMM!7&qS1``CwLB9yP(8vaxYna4657{ z!k)p1}y{dP;WW^v6vh?ioC3Ye1geG;~mpSP92 zX?C)?zi<@6zRd!3GrDHOr=pEDKG$qgBK6$GT-lYb-&`^+aAI5eZ8Pk(HEU z!C9WCQi}^BG$IJqXV}O0j~7|NV{}h-gWILDq0-`X@e3D>{xJ~Y1Sp>prR3Mt|6J?V zH`=g-jfk=L@|?Pgm)GW*D*iA>cF-t07UCQ3-2mX8p+4MKVFT81&L#`c*puK-vCm9t zMXm@UY|bN+F0)V$x4BOH^<}Zrk6T^|lELxNS9;3xl5t&UnBlUV4BP`^P8s&jzE*!$Fewy=7X7p1y9DhFO4NT6iv14A(&gxr3 z#_xlJRB^}_0?VATOQMZfoY$hlkYZm{$+M$;8@F^rLn0HQM-#J{t^-YA>`_1Ghcgc) z!|1x2*T0rhae*v~mfcmqS=;-Un;cdAK)Kl`FX+6Q$BUn}Ai;uH1kZ+u+uUidUfc)o zIwp1bYfLTaM^!f$bsJmOA_Cil|WGtXMDp z>=Zmoy#Hw$7p8L|6R)KKu1CI+E}JemxG11IZ?#N=3OVV>WV6SAdDd;}^OjAxz2K7s z8Clteqh1~SrGOzaYSN&0#@d+Xt*Et=Q{}7|T>cq=+Jk8>F0n?VjAW?1-@mf-7jLx% z|1Jg5^iBk;_{-8yzNO0R_F6)b@3VStohZDo#aM56dL_P1~qYdJsV#RFOc5l#&lk9^$5ez510=n+X**}wqhK0g1sB1RB`F-hBksbpj zEWd~UfZwLMnHyj;9(dq>J6~N2_3tKp%I8L(d|egMa4nQXZ$$L>c*IbZn${>824BJD zAuqJ4MslC7)}_O~tfQYE}S8 zO!FrZRa0c9dY_8}V%6@xo--m#q&_Lbd7 znRMC)J}tcJ_n4PosJ*#VYdpU5K_mxwS6c&_HB9&7jKqX#6+J8{yyGa-JgN^*N6+&8o5k>yIW$p9Ze8SREp*NBH@1o2sKfD^;i|&152SFf55k6_Ioy@g|trhL4BTn#Pjr{uC2>%w+MGfxpYML z{_Hg6uGPUQyEGFpQvLH~7h6wYx?+OYt3ny&>paFp)gF<#3IT^ZB$q9!?H}R~)n5f+M}(tZ@jNey*h-Z-Bz<3^7QF5<~A``#||%siWvM6NczY+zW^ zpr1q;5$z_+!tT#I=HxNO@R`P^<11{PT`Vt=efQs&W)EZTer?I-7`dCUBAVIhg=SGH zYWC%IJ-=^iZe+~_*iX`$gUAK4tl9qP2*5MOIALEi(D;u3pS1J9Q(iNocJE$%1m09`2C%Ed0PU_fGrvA4JJRKb?w#eFCP~3-v7Jf zyxQ~zVB#L~%hG*duQPIGMixnK|MFS+57ZL%HlJs7=%h(GmGBPp_DhFlsujT+7Eggj zndEd~HOcMlK2wGdOOxsLYU3%S1XXWiSajLP7HX?tkmUaL#lXeq>3Bp&_MLcg$Rn0+ zGB;ZB^W5SY6G`}~r}tGU3xjf`MBJnjR2M(~g7H1oEGA^{olxW~0K!%qU6+0*R{Qms z&H2+}zmdFdavaBlo%&JaLb@h~SA;f2Ub0`qAxDRgA_1!39CAfC;o}NCE>5^ABntd8 zU=a-DK6Zv!D5|$2Ex#DRD=hDYeY;msWB|WxEJ4;lE;r@x>y145x8F^l+IP8TlHqTn z$_35rPj>Ymg#~NKFvE+Xs6)x^5VKWhvN|8%m-+GbVl=1ioP&;ZK?;VC*C~YQ3b-D}# z;xB$XUA|m=src*AZ5NBQOS+H@rOIY8dea>Ijy~Od^s89{ID772j5v8a^tY-=)dzAv zUc6TiIJU0$$i=OQo&zA?i&5w`I)l?QZk)WiKB(rwMP~UwD8IDo6CcZWW-`o=uo&|} zH@~+R`uAYKiD%cJ+~oBCr;&#cBk!34LxgF`L#4N@w<&+;(*usMtN-r%gsQBGW|W|R z6ve>senYx{^HuXNn3cw#k;z$%2re=GkDAyuz3crwm#~wpDgW5mKgs1L3z9rCHqL*+ z?f);*&8o(0iG*FerTU*3KhH>yS=d(3$esV>Nhz!7%R)X6RUE%x{EvYVsl-3m`4*Y$ zZ$W>_N7cPW|CrTTl48kN?GX%<{O>jmaBZ+V=s~cukk<^bQC7A7uTM+)cLa6+avd1dlI+CGme>cSiT4i;Hq zbpCHejPROV;aF+SK_2|dCpvuJ6xLpdcUFzf`G$1%CG0bm*OBGOSU&Eu zByHt)>&<@*d}e7)e(wm?M+C(cLZkp&(WGO^{r{Pe+04$jUXLos)L;_oq{sd$zrMjw$?aR@m*E9rMLR`a`5MORSpL)169K^Q zClz2;onk=d^rc8)vEosPLFU$89QykL+~hi3R`^W@w=QH{B+-bn)bvKICOSNW{AC(( z^eT`DOmkyj00sbOqE|T%sx5%#2b=&I(5^?v#5Ld^#WV}{De!B0Z3ojpF6r=Rw;{Sf zSO$Qm={KkdA=1w|%WMJXm+kUHEcvb5QnC_gje6*x*ixJH_?=@H&<^u)z~1O>*G zlUues)9^4%G5KImVNc83A~DIFf<4iL`7y1luMXfvaMc1l6DIv%MNG$xs-`8{;z}Sw z(IjZd2#5l`B*Pf6J@O7Sr2tef{>z!Z0X`N)UjYpTj}%-__VxFk+Kar}-BLzY^7aij z5bdIcfP2B-2T(rsQUUM~6rF>=Q~iMy2F|%qL)!@-4(li~_ra0>DuBOJSG2}?NqC9t z$9kLC%g+yA-U#mJuG=;&^jtd|@0ffIk3x3ai~l>yO;dZQG`xJsg&W_T4<>y2_w%t! zv~Rc7f;w1*8|#DECOyp$$;V`ZGm_YJAtiuz)A)%N?XTGKb!jlEZ97PKB-rlS3Y&ntK3Sq^qY)6?H@m$z% z;(D4M9g_6nJ$J63k(1e{md5`SI5Z=0Z{&a}Wav9@(DU$xO~X1tRpo#r(GwLMIZ`+; zjM*_FzE+yw^f+ok#$LiWniAod-t4%4O4>Hnf=BB7_p$ChD=K%tfE-?7Jnh;Ra-=vp zzocmWmL^0S@crA8w=Yo+HD4uhJ4=v-jTkw$gI`Y9kX!9}p1WV8_;bYYbiudio#=@V zCTaG+>)uDFjf|w~(6F9tc>iorckJnc%W8gLlnHGsX8y(-DKZI!X@viim1wEeHbxuX z?UP9cbN`_W7r(P}x0Km}4+^}jk`=Hy&c9q18xq+ETW+j^|p`Y=Y zbGdZ=u><*Mtks8Fn&Udp!IX3`+MY>~9ECQ<`If+K$IPIMJj0zTM%cLGx=I zO6q%HkR#)gIl1Pcd78TIH2WgAcEyZ#sjEC)XSOUn8X2}dF zWa!;ZmSaegAkcjWAXLEiK#hb+$_9w+0m5j4c+f}6dtbYfZ9ha8%nb2>qRC&qR2}Fb zTY23Pa>EAdI5^X^d!T%Mo_rz6@Fm+$IHyv-$ot1#bpAo5<{g z018_(4^3>FzMiN7A;6gyz1qUpxEe)fY&)R2f|H5;9g8TST=C~aD_w$Ir*#!VuYqc4 zsqCN=#hG|Yp~8yItC=_>cOq2q&OWYUoAH^OoNi&lrX|l-ha)CF zZkYn%FTpXH*hink0daY*)pAs&C0me@4jYI`ys(aO28`bxRS~nKX-1k@Ux35`^+!K$xOv z_iI(On@L1M6x0S~Mz+`?Vy(dOqmTf5jI(6Lv+RmY#4c!6cZ-u|5?+p@=ydIcTBmqdEye$|K+&`o92cQLTD^V3_e(%m%g4<_!M811!*wyN=%}-= z_c;^wph_jt5Q`g~+aNzTouNxFm^yAt<0R;1!VG+KK^rh8!-`waKF+)d+@ap>5QOYl z1A^@2lLY1xJ4kX$HjoFV&JUGNZ_ps2?lgiEcFb1NxE0lQ9E(l%$sOYEv+)^ z!|)3<9bd(L5hSUk{5S@BfMy1G$(_ZEti+jb3wN)T#?n1zEwFp552a-24dO11g+{?P zit0JId2BnY3wnm!TRu!Sr7ljXPU*?-ob<3*H0m~^yr#0I7;8&DBBi}be2=&Y1n_Zg_J)Yy2K?w6qIYFu)i8vea@Uotn1-l? zUs9FI>w8hq(9%<3^r{=@XFjUCJKEMZJ+h@fd#y?^;P>HS*SDQ>C%+x$_mI4(-~9@k z2h*NsG4a{Ct%{L;NmceJbzqHLWc_{o7rY(vnCi-~$j;zZKI}VR|6aQ{&SW`+^0p|J ztN|DOiNa`M^c;)LLE!lRtKrJSp?cr<8T)RKUDmND$~uTJ$q*9Rmqf^(eJAT6OJk`l zO-)20B3qVGA}VXy#b8R78AS|X=68Iq-}j$$UFSXTdY$t==Xvk@xgVcPY4O@XY?}N2 zD{-cNNE^)%wBVl9bh=>Mtwh?}K#c z8^@fgx;ODf@I$~Vktw6P7aylM!P(UFX-lNNDSpqfAzVF4HbvZCgDG0XAG5)DKZ4ev zgA(^5SB{3otnY@|81Zwhxjzlatro&5Vx_7=dDR&QkImx<>HrwKjz4r4=w`L@?xb&_ zs;9J(Y+{Fjo=gL%vjb8Ome+dGT^Zmk4eey?;S_G$GDRFSw_H|Rvv4e;W}~!Mi2ip! z28WiY*7YwZi!)7X=;%+6uYBjL75R!i)5g%#Yyd5rCUq(z6i01(u(h2GRwH|-xy;pe zq6*6Ozd%HJ)0gaOVGG$ln^ZWv>lTiyS#c{sddtoxl+r?FKy>|bORF|od58L^or;QC zz~uOZJYfg;B-asSt?{a_-xqvojO|{ZjukH{3i3uw9FIu(9*WZAWdYk0qtDh$ZFDbY zhf`8_7Ux1opE*7Bp0pR2O7#U&2Rzu5c5hN4SiwKWQtL~{fe0f?NnZ@2i?SjS(#v)I zc*O9VU_-I*I_^<#eCcU@;W7U(elT(cYugU{I

U;G;X8T>S#Cg1G*7qWB~6ysQ?x zmG|HTN*g)Z%YrEXwcy!E4F~x=;Vaq&M{?MuOl5K3$@%(A4!<1$99uHp7d-4pKG6fP zSM%>x`J84DuT_aB`5-p>f-OqSwo)l!y{BIR_ z1yRw2r#R;{iHI`bV}ab}!>RMpmbeL~`DCB-PuC_76Sb0fxN-vAva5F%&xQ}&Vq|S0 zH3;3ufN}x4B;~$%01Yu?-`e*&bWR&8hd8}cKny7xo}y8Qps-q$r?AMTYdh8eiC!h0 zfCN)guzLQq?=WXv$g0kWkv)K8Ummcdv^R*%cpji%VqI5D80ck6cc11@mq5OfJ`hGb zRSXcm!tA8hr}yO%M#7j&-w1z_T|&Fz|N8jYl$ru~vFjvS;(qLVmH9ESd?{wok za(w-SwsWpeaUY0kvAs|ip#7$Hnh5_zbS%^pHaE7e2*Ap*y>cSEC^wbX9IkA8=X-TElJY3CI*tr{W@&+s(aj>)ur^ZIY1 zDprA1iAwh+0{Bwf_umzloIO%>g{>~XEwcTG>+RMooj}>XJmkjS4r&GUph|nk2w?Ht zYV(K3r}vIB90&Iii1NP+sOlZJ#)`z0_8vBMA=$^u+Dh#+_Crwx4#614=+vz+(Kt~AQ-G$d?f*^6MV;|0KwO%96%jhq+ptQFG=<#jhOz&0LT4{eX z)>Q7lD#AtvT@=F@s(C{o^Po#nxKG_d*>cX0m^S2a;109s&8qB&KJfkwPSj&+KXX}4 znIeZUXP2D{ZRDrxoC+P)X_YHY<8#)N$ljU4o&|=>kgBmpA((FI%L7*;Ac)RXg8ltagu4g{z(XV=BGbo1$B4 zQdj=-qA#Tka(Z2!lwAK7?U~)UU=1Yj(Y;d|8t5=AQ~*rqX!CCDG?f1tZjV$DJO$Xa zQ|_X)-x7m3s1B+FVn#Lr7>zz68&IXS8dyVi=v6tQ!3u8JO8OoKdQ~+#eYvZjSFIf_ z|8iuY^&L%W9VBkLjPwlX1~txwj%8PJwmOxt4p6tuYQZ4JIpfll#o6v4@52HP3`$#Q zZ;s4`N*9QfTHn;-vHJLh74n56`9^%fc7H5aPVmF@AwO2N(x|t~BhRn2)}Hu=0*Jbv z;?JHQ1&V9cW`p>vk{^6C4-+89e^$! z-i3ITIkxJN?W~@_SZ$0VSNPvUCnz1yM!3qQx`dW->K50oS(MP&5wnqFaLo)b3~r~q zlz3N(6XyzOb|HtO(jV2Stm(7(H|(^lt66|aQ)NBiZq5<-o}LkzJa`|a~JfFJZ(Q*3ox!A%UJ?teGZQRxlwVbBNB z+&%E&c2>q64)7bK9lH|aB=r*O=JQsSzsCTTK6tF}A4sb|-6HW5B?Ih7L+O;?d}8*J z7@A%CtLScRkT~9A8I`yz^)mWVTJ_fzN(=FE+lO61FR5CrmkywUD~tdCmEmpPs~qVj zsd9yD`}KQX9|5#_;hN9KB45*oacHdm)sk99u>>*%N!T5v-IjJ9`sT@a-AC(E{xAe2Uv_gLRVfv{yBdvtUp-b^^FG zSw`&z0t27!Fk+FxKl633bMv1Zlq7}2q}JtePy5I-^gUuG3zi{%nJy=o4{CT@6ydSb zO7q)9m_*h9R810)*pnu5DlqC3&ynEtuvb&?RwZoo>gDB1vj)A)YALrS2X?$Nx*J4@ z=^lHq4FUWwJ;Vn`;r#jY9Lg?R$3?^K{Dt(5Wr4I~PMZk8YLkQ+?nnrJF%Hi&kXNqQpjQhQd~-@cVAC_J@Qn zP;6{yQ_m}R<;5dH5b~95H1FW;y+GFMiuvtfj-Jv-k2JdclvX!A*5D5awJgI_naXCU z;kUqhQ~L%6cauv4S!udGaAG#T{E`9Xm8(}2*D_#LPS&FaC$OZNt#HHZq^(n$kzw+c ztVP~r@o2@tP$Wq*6U3{2mw#|Nc4TK|I`v=7iZnCb@@&#awQDCl#Ms!Cq|!%zn4P01 z7jOOt+FP^YgAUEkpMX_xn!Ar+i%KBplnVX90z9vpU@OZEaqooK2%!h&J{_=vqx8vC z+wwpYrw|uTx@h;Mwc+`X6H#XphurXiuw(VM2M#ytkCnd%DxOHQWw zze^U&p!rD(29z$AIYB6ra%>WY{g#RZA8#iYFbVyP$vhEu_{3+%Ix=98QYVZD%2vlI z@$-Ocx!JZAnjc+OXTxoX%ANbMf((Ssm^Ee)exOayaqpqo7^MBwkYId~=X)8dmV-U4 zJ&PcTPApE{E^j*)tbw3Z?Qx))OZ`=SLGMD}!QtFZ^mo{z@@;j?Up2(go5JO!udvJB z`0pbgA3V{q3Yy?TFZ=)DWDKTIG*V#F%`(Nwb5S@=ug&lEXC2otgt#C6AdI~^!MG0A zXmK6)v!EHJi;3-^$vvaxg0|$XJjQ^Tag<-m8!_EioojA{tm5twR$*Ob6Lk5Vx~vwO z+0VF3cF(q$+q~j4^qh~l;8?ZdR%2+fQ8v&-Y_l|8Am2XJtpskj2Jxn?S&{e*!v-|s ziwURDc?BXy+df;kg7q*;HsQ$0Ez7f%#N&l`F+ywdNe~q}=dOR60pH_HrCrJCl7i(g zRr$`M4}SSg7jqC)O-Pm@&vVve?hzzR>CasS^2zH|K^Vs7C5yy)AB?emQxL8QUoUxp zD3_)#2$fOAh7M#$E?Ae-Z-i!PKES((DcF~st{A+R3WdLR(s8<|($Nn*sY&;vq!5a( zzZ#Q0l*DbkPgM3YS}m)J_&qj9T9u(yio_^Y}j()9me2u)S|Ko<)-vjbgN?M z&c_6MI4I1?^`B-8*gvpGkJtszug-o+%$uGCGu>?6@0@sbr)XD-3Au2Zyw;eT@kd=$ z3Z6ySLQ?8n;=iZ*6fJ9Q#XA28ZvpwSf%bro51TW`d;))ED4-J50hZUa_{_wjPQ?+g zi(`IgETUVeMFQ2Igx3VBHQLOC0i?vRA2jZmm7bClr28xD?|9^tk84$r(KbC!kYETh^ROOTxO@|ddp#uk@JFo$W* zp2M{s3rn9H8~zgQ{)xrm7<~^kaee)PPL-KS@`uGHzE~c?@T~q?772ve=0@DeV1285 z`ir{;4s_hO-v^&W!L4VCCr{eF;Ig;eZm88E3c{h=_RW6awjZd@D;4eVIX=a4rM!(ORyZNu9XI1@D)hU$IeTs z*Gd^1uhITCET|_VhIvQ=AYN0L0~!~#UuJr)w~OA_>f%$qw5fcI3f`?&XYUw(ukZ&k z_?!9N1UFW;TkA_DQFR-R`(=^MHUIRt)CIs%&+{|+TZSkfcIOkeU`78Vt1AQArv8Ar z#D)(}(0fz}-Dz(#mYdK6?;K6NC@c)*QD-z}S=GlcvPn|sZEhLnhr>A0h2RuR8Jt5k zv%OX;qYg`mV#epiXFROcGhp>^MiL7MASU0{Us7_z*U=P2FYfys>P_q20k?T3j;)yMRw1<*R+Hd{A`2+b0IJd}ul7n2p$+ zb#!W)oa8ni=UMo8$ld5SE%3EXH(?y|qt3|qe671zlBDg*1^{2s5CC}pqDeNnrs+Cgq7W+p zB;}N#PBNk9`&We;j6aYAE96`L@qR=L08cKCPu;LS0!wDyob#?8Jrk;zkCY@xRf8pS zN(vXMp?z9+{OpsoZtgnSBw4t(E>%Z5`FY=0IeI@5;0{U7`kdH#Sz~LbMNG4Q^P=?dPTlOW^xvT>{#;hR9pqzv>f-?f`&s(XEQ@;n z)5Y~%x9nhyrP*7-b$^rz~nZ!F7TB6 z)^1!HeLQ*2est3?IpS>8-tHY-qR&{K4XP+QGGkVrd{9#1f?jwA@#zk-E}z9MBW2{n z${H$dXx3S9G9Dm4z~t}bhkJSv{v6cbkTV`)^3Ky!T5rQNzQ-t|jK z>fFZG{1^Um&A$RjbAIwe5Fs`1En}VrzuLhA2{F}mptPg#ffZKD5mSjbN=j&76JbGmFwgAq)aXGQQ*tBz z1o1$D8!!hXxvE51NVAbfe7cg}21sf|8Z4>jC>Z2Txm82OT51yKXJc=gnYOWAv|HX} z`$Pw~H4E$%{W~lh!+2|4^lyELV!Fii=RZaRatn`@<9^CG-d(*sd}qMBft*SR<4vS4 zT-+>Ut>l6LS@A1@VGAwV>lOO@RWvhsJG`zM)ApZUhL3ftra4tk{?-G2-LxnPZ}({> zdv<-6E3jJqm|(N$p!$_D3E26{i`0*8qH1214y4c?!z(8Tvj5xy%?5zHWPx~Pcq94$ E0I1q_TmS$7 literal 0 HcmV?d00001 diff --git a/src/examples/text.edc b/src/examples/text.edc new file mode 100644 index 0000000..257a078 --- /dev/null +++ b/src/examples/text.edc @@ -0,0 +1,68 @@ +collections { + group { + name: "sel_group"; + parts { + part { + name: "rect"; + type: RECT; + description { + state: "default" 0.0; + color: 0 255 0 255; /* green */ + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 1.0; + } + } + } + } + group { + name: "example_group"; + max: 500 500; + min: 50 50; + + styles { + style { + name: "textblock_style"; + base: "font=Sans font_size=22 color=#600 wrap=word"; + tag: "br" "\n"; + tag: "hilight" "+ font_weight=Bold"; + tag: "b" "+ font_weight=Bold"; + tag: "tab" "\t"; + } + } + parts { + part { + name: "part_one"; + type: TEXT; + description { + min: 50 50; + state: "default" 0.0; + color: 0 0 255 255; /* blue */ + rel1.relative: 0.0 0.0; + rel2.relative: 1.0 0.5; + text { + font: "arial"; + size: 22; + min: 1 1; + } + } + } + part { + name: "part_two"; + type: TEXTBLOCK; + select_mode: EXPLICIT; + source: "sel_group"; + entry_mode: PLAIN; + description { + min: 50 50; + state: "default" 0.0; + rel1.relative: 0.0 0.5; + rel2.relative: 1.0 1.0; + text { + style: "textblock_style"; + min: 1 1; + } + } + } + } + } +} diff --git a/src/examples/toggle_using_filter.edc b/src/examples/toggle_using_filter.edc new file mode 100644 index 0000000..9971fc0 --- /dev/null +++ b/src/examples/toggle_using_filter.edc @@ -0,0 +1,66 @@ +collections { + group { name: "main"; + parts { + /* white background */ + part { name: "bg"; + type: RECT; + description { state: "default" 0.0; + color: 255 255 255 255; + } + } + /* title label */ + part { name: "title"; + type: TEXT; + description { state: "default" 0.0; + color: 0 0 0 255; + text { + text: "Toggle using filter"; + font: "Sans"; + size: 12; + align: 0.5 0.0; + } + } + } + /* the rectangle, will toggle color on click */ + part { name: "rect"; + type: RECT; + mouse_events: 1; + description { state: "default" 0.0; + color: 255 0 0 150; + max: 150 150; + align: 0.5 0.5; + map { + on: 1; + perspective_on: 1; + smooth: 1; + alpha: 1; + } + } + description { state: "blue" 0.0; + inherit: "default" 0.0; + color: 0 0 255 255; + } + } + } + programs { + /* on mouse click set the blue state, if we are in the default state */ + program { + signal: "mouse,down,1"; + source: "rect"; + filter: "rect" "default"; + action: STATE_SET "blue" 0.0; + transition: SINUSOIDAL 0.4; + target: "rect"; + } + /* or back to the default state if we are in the blue state */ + program { + signal: "mouse,down,1"; + source: "rect"; + filter: "rect" "blue"; + action: STATE_SET "default" 0.0; + transition: SINUSOIDAL 0.4; + target: "rect"; + } + } + } +} diff --git a/src/lib/Edje.h b/src/lib/Edje.h new file mode 100644 index 0000000..98c257b --- /dev/null +++ b/src/lib/Edje.h @@ -0,0 +1,4169 @@ +/** +@brief Edje Graphical Design Library + +These routines are used for Edje. + +@mainpage Edje Library Documentation +@version 1.7 +@date 2003-2012 + +Please see the @ref authors page for contact details. + + + + + + + +@section intro What is Edje? + +Edje is a complex graphical design & layout library. + +It doesn't intend to do containing and regular layout like a widget +set, but it is the base for such components. Based on the requirements +of Enlightenment 0.17, Edje should serve all the purposes of creating +visual elements (borders of windows, buttons, scrollbars, etc.) and +allow the designer the ability to animate, layout and control the look +and feel of any program using Edje as its basic GUI constructor. This +library allows for multiple collections of Layouts in one file, +sharing the same image and font database and thus allowing a whole +theme to be conveniently packaged into 1 file and shipped around. + +Edje separates the layout and behavior logic. Edje files ship with an +image and font database, used by all the parts in all the collections +to source graphical data. It has a directory of logical part names +pointing to the part collection entry ID in the file (thus allowing +for multiple logical names to point to the same part collection, +allowing for the sharing of data between display elements). Each part +collection consists of a list of visual parts, as well as a list of +programs. A program is a conditionally run program that if a +particular event occurs (a button is pressed, a mouse enters or leaves +a part) will trigger an action that may affect other parts. In this +way a part collection can be "programmed" via its file as to hilight +buttons when the mouse passes over them or show hidden parts when a +button is clicked somewhere etc. The actions performed in changing +from one state to another are also allowed to transition over a period +of time, allowing animation. Programs and animations can be run in +"parallel". + +This separation and simplistic event driven style of programming can produce +almost any look and feel one could want for basic visual elements. Anything +more complex is likely the domain of an application or widget set that may +use Edje as a convenient way of being able to configure parts of the display. + +For details of Edje's history, see the \ref history section. + + +@section requirements What does Edje require? + +Edje requires fairly little on your system. to use the Edje runtime library +you need: + + - Evas (library) + - Ecore (library) + - Eet (library) + - Embryo (library) + - Eina (library) + - Lua 5.1 (library) + +Evas needs to be build with the JPEG, PNG and EET image loaders enabled at a +minimum. You will also need the buffer engine (which requires the +software_generic engine) as well. + +Ecore needs the ECORE, ECORE_EVAS and ECORE_X modules built at a minimum. +It's suggested to build all the Ecore modules. You will beed the Buffer +engine support built into Ecore_Evas for edje?_cc to function. + + +@section compiling How to compile and test Edje + +Now you need to compile and install Edje. + +@verbatim + ./configure + make + sudo make install +@endverbatim + +You now have it installed and ready to go, but you need input +data. There are lots of examples in SVN, the best one is +Enlightenment's own theme file. + +You may use different tools to edit and view the generated ".edj" +files, for instance: + + - edje_player (provided by Edje) + - editje (http://trac.enlightenment.org/e/wiki/Editje) + - edje_viewer (http://trac.enlightenment.org/e/wiki/Edje_Viewer) + + +@section details So how does this all work? + +Edje internally holds a geometry state machine and state graph of what is +visible, not, where, at what size, with what colors etc. This is described +to Edje from an Edje .edj file containing this information. These files can +be produced by using edje_cc to take a text file (a .edc file) and "compile" +an output .edj file that contains this information, images and any other +data needed. + +The application using Edje will then create an object in its Evas +canvas and set the bundle file to use, specifying the @b group name to +use. Edje will load such information and create all the required +children objects with the specified properties as defined in each @b +part of the given group. See the following example: +@include edje_example.c + +The above example requires the following annotated source Edje file: +@include edje_example.edc + + +One should save these files as edje_example.c and edje_example.edc then: +@verbatim +gcc -o edje_example edje_example.c `pkg-config --cflags --libs eina evas ecore ecore-evas edje` +edje_cc edje_example.edc + +./edje_example "some text" +@endverbatim + +Although simple, this example illustrates that animations and state +changes can be done from the Edje file itself without any requirement +in the C application. + +Before digging into changing or creating your own Edje source (edc) +files, read the @ref edcref. + + + +@section history Edje History + +It's a sequel to "Ebits" which has serviced the needs of Enlightenment +development for early version 0.17. The original design parameters under +which Ebits came about were a lot more restricted than the resulting +use of them, thus Edje was born. + +Edje is a more complex layout engine compared to Ebits. It doesn't +pretend to do containing and regular layout like a widget set. It +still inherits the more simplistic layout ideas behind Ebits, but it +now does them a lot more cleanly, allowing for easy expansion, and the +ability to cover much more ground than Ebits ever could. For the +purposes of Enlightenment 0.17, Edje was conceived to serve all the +purposes of creating visual elements (borders of windows, buttons, +scrollbars, etc.) and allow the designer the ability to animate, +layout and control the look and feel of any program using Edje as its +basic GUI constructor. + +Unlike Ebits, Edje separates the layout and behavior logic. + + + +@section Edje_Examples Examples on Edje's usage + +What follows is a list with various commented examples, covering a great +part of Edje's API: + +@note The example files are located at /Where/Enlightenment/is/installed/share/edje/examples + +- @ref Example_Edje_Basics +- @ref tutorial_edje_basic2 +- @ref tutorial_edje_swallow +- @ref tutorial_edje_swallow2 +- @ref tutorial_edje_table +- @ref tutorial_edje_box +- @ref tutorial_edje_box2 +- @ref tutorial_edje_color_class +- @ref tutorial_edje_animations +- @ref tutorial_edje_animations_2 +- @ref Example_Edje_Signals_Messages +- @ref tutorial_edje_signals_2 +- @ref tutorial_edje_text +- @ref tutorial_edje_drag +- @ref tutorial_edje_perspective +*/ + +/** +@page authors Authors +@author Carsten Haitzler +@author Tilman Sauerbeck (tilman at code-monkey de) +@author ZigsMcKenzie +@author Cedric BAIL +@author Brian Mattern +@author Mathieu Taillefumier +@author Tristan +@author Gustavo Lima Chaves +@author Bruno Dilly +@author Fabiano Fidêncio +@author Jihoon Kim +@author Tiago Falcão +@author Davide Andreoli +@author Sebastian Dransfeld +@author Tom Hacohen +@author Aharon Hillel +@author Shilpa Singh +@author Mike Blumenkrantz +@author billiob (Boris Faure) +@author Govindaraju SM +@author Prince Kumar Dubey +@author David Seikel +@author Guilherme Íscaro + +Please contact to get in +contact with the developers and maintainers. +*/ + + +/** + +@example embryo_custom_state.edc +This example show how to create a custom state from embryo. Clicking on the +3 labels will rotate the object in the given direction. + +@example embryo_pong.edc +Super-simple Pong implementation in pure embryo. + +@example embryo_run_program.edc +This example show how to run an edje program from embryo code. + +@example embryo_set_state.edc +This example show how to change the state of a part from embryo code. + +@example embryo_set_text.edc +This example show how to set the text in TEXT part from embryo code. + +@example embryo_timer.edc +This example show the usage of timers in embryo. + +@example external_elm_anchorblock.edc +This example use an elementary anchorblock and a button to animate the text. + +@example external_elm_button.edc +This example create some elementary buttons and do some actions on user click. + +@example external_elm_check.edc +This example show EXTERNAL checkbox in action. + +@example external_elm_panes.edc +This example show EXTERNAL elementary panes in action. + +@example external_emotion_elm.edc +Super-concise video player example using Edje/Emotion/Elementary. + +@example lua_script.edc +This example show the usage of lua scripting to create and animate some +objects in the canvas. + +@example toggle_using_filter.edc +This example show how to toggle the state of a part using the 'filter' +param in edje programs + +*/ + +#ifndef _EDJE_H +#define _EDJE_H + +#ifndef _MSC_VER +# include +#endif +#include +#include +#include + +#include + +#ifdef EAPI +# undef EAPI +#endif + +#ifdef HAVE_ECORE_IMF +#include +#endif + +#ifdef _WIN32 +# ifdef EFL_EDJE_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +# else +# define EAPI __declspec(dllimport) +# endif /* ! EFL_EDJE_BUILD */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define EDJE_VERSION_MAJOR 1 +#define EDJE_VERSION_MINOR 7 + + typedef struct _Edje_Version + { + int major; + int minor; + int micro; + int revision; + } Edje_Version; + + EAPI extern Edje_Version *edje_version; + +/** + * @file Edje.h + * @brief Edje Graphical Design Library + * + * These routines are used for Edje. + */ + +/** + * Identifiers of Edje message types, which can be sent back and forth + * code and a given Edje object's theme file/group. + * + * @see edje_object_message_send() + * @see edje_object_message_handler_set() + */ +typedef enum _Edje_Message_Type +{ + EDJE_MESSAGE_NONE = 0, + + EDJE_MESSAGE_SIGNAL = 1, /* DONT USE THIS */ + + EDJE_MESSAGE_STRING = 2, /**< A message with a string as value. Use #Edje_Message_String structs as message body, for this type. */ + EDJE_MESSAGE_INT = 3, /**< A message with an integer number as value. Use #Edje_Message_Int structs as message body, for this type. */ + EDJE_MESSAGE_FLOAT = 4, /**< A message with a floating pointer number as value. Use #Edje_Message_Float structs as message body, for this type. */ + + EDJE_MESSAGE_STRING_SET = 5, /**< A message with a list of strings as value. Use #Edje_Message_String_Set structs as message body, for this type. */ + EDJE_MESSAGE_INT_SET = 6, /**< A message with a list of integer numbers as value. Use #Edje_Message_Int_Set structs as message body, for this type. */ + EDJE_MESSAGE_FLOAT_SET = 7, /**< A message with a list of floating point numbers as value. Use #Edje_Message_Float_Set structs as message body, for this type. */ + + EDJE_MESSAGE_STRING_INT = 8, /**< A message with a struct containing a string and an integer number as value. Use #Edje_Message_String_Int structs as message body, for this type. */ + EDJE_MESSAGE_STRING_FLOAT = 9, /**< A message with a struct containing a string and a floating point number as value. Use #Edje_Message_String_Float structs as message body, for this type. */ + + EDJE_MESSAGE_STRING_INT_SET = 10, /**< A message with a struct containing a string and list of integer numbers as value. Use #Edje_Message_String_Int_Set structs as message body, for this type. */ + EDJE_MESSAGE_STRING_FLOAT_SET = 11 /**< A message with a struct containing a string and list of floating point numbers as value. Use #Edje_Message_String_Float_Set structs as message body, for this type. */ +} Edje_Message_Type; + +typedef enum _Edje_Aspect_Control +{ + EDJE_ASPECT_CONTROL_NONE = 0, + EDJE_ASPECT_CONTROL_NEITHER = 1, + EDJE_ASPECT_CONTROL_HORIZONTAL = 2, + EDJE_ASPECT_CONTROL_VERTICAL = 3, + EDJE_ASPECT_CONTROL_BOTH = 4 +} Edje_Aspect_Control; + +typedef enum _Edje_Object_Table_Homogeneous_Mode +{ + EDJE_OBJECT_TABLE_HOMOGENEOUS_NONE = 0, + EDJE_OBJECT_TABLE_HOMOGENEOUS_TABLE = 1, + EDJE_OBJECT_TABLE_HOMOGENEOUS_ITEM = 2 +} Edje_Object_Table_Homogeneous_Mode; + +typedef enum _Edje_Part_Type +{ + EDJE_PART_TYPE_NONE = 0, + EDJE_PART_TYPE_RECTANGLE = 1, + EDJE_PART_TYPE_TEXT = 2, + EDJE_PART_TYPE_IMAGE = 3, + EDJE_PART_TYPE_SWALLOW = 4, + EDJE_PART_TYPE_TEXTBLOCK = 5, + EDJE_PART_TYPE_GRADIENT = 6, + EDJE_PART_TYPE_GROUP = 7, + EDJE_PART_TYPE_BOX = 8, + EDJE_PART_TYPE_TABLE = 9, + EDJE_PART_TYPE_EXTERNAL = 10, + EDJE_PART_TYPE_PROXY = 11, + EDJE_PART_TYPE_SPACER = 12, /**< @since 1.7 */ + EDJE_PART_TYPE_LAST = 13 +} Edje_Part_Type; + +typedef enum _Edje_Text_Effect +{ +#define EDJE_TEXT_EFFECT_MASK_BASIC 0xf +#define EDJE_TEXT_EFFECT_BASIC_SET(x, s) \ + do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_BASIC) | (s); } while (0) + EDJE_TEXT_EFFECT_NONE = 0, + EDJE_TEXT_EFFECT_PLAIN = 1, + EDJE_TEXT_EFFECT_OUTLINE = 2, + EDJE_TEXT_EFFECT_SOFT_OUTLINE = 3, + EDJE_TEXT_EFFECT_SHADOW = 4, + EDJE_TEXT_EFFECT_SOFT_SHADOW = 5, + EDJE_TEXT_EFFECT_OUTLINE_SHADOW = 6, + EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = 7, + EDJE_TEXT_EFFECT_FAR_SHADOW = 8, + EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = 9, + EDJE_TEXT_EFFECT_GLOW = 10, + + EDJE_TEXT_EFFECT_LAST = 11, + +#define EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION (0x7 << 4) +#define EDJE_TEXT_EFFECT_SHADOW_DIRECTION_SET(x, s) \ + do { x = ((x) & ~EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) | (s); } while (0) + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = (0x0 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = (0x1 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = (0x2 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = (0x3 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = (0x4 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = (0x5 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = (0x6 << 4), + EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = (0x7 << 4) +} Edje_Text_Effect; + +typedef enum _Edje_Action_Type +{ + EDJE_ACTION_TYPE_NONE = 0, + EDJE_ACTION_TYPE_STATE_SET = 1, + EDJE_ACTION_TYPE_ACTION_STOP = 2, + EDJE_ACTION_TYPE_SIGNAL_EMIT = 3, + EDJE_ACTION_TYPE_DRAG_VAL_SET = 4, + EDJE_ACTION_TYPE_DRAG_VAL_STEP = 5, + EDJE_ACTION_TYPE_DRAG_VAL_PAGE = 6, + EDJE_ACTION_TYPE_SCRIPT = 7, + EDJE_ACTION_TYPE_FOCUS_SET = 8, + EDJE_ACTION_TYPE_RESERVED00 = 9, + EDJE_ACTION_TYPE_FOCUS_OBJECT = 10, + EDJE_ACTION_TYPE_PARAM_COPY = 11, + EDJE_ACTION_TYPE_PARAM_SET = 12, + EDJE_ACTION_TYPE_SOUND_SAMPLE = 13, /**< @since 1.1 */ + EDJE_ACTION_TYPE_SOUND_TONE = 14, /**< @since 1.1 */ + EDJE_ACTION_TYPE_LAST = 15 +} Edje_Action_Type; + +typedef enum _Edje_Tween_Mode +{ + EDJE_TWEEN_MODE_NONE = 0, + EDJE_TWEEN_MODE_LINEAR = 1, + EDJE_TWEEN_MODE_SINUSOIDAL = 2, + EDJE_TWEEN_MODE_ACCELERATE = 3, + EDJE_TWEEN_MODE_DECELERATE = 4, + EDJE_TWEEN_MODE_ACCELERATE_FACTOR = 5, + EDJE_TWEEN_MODE_DECELERATE_FACTOR = 6, + EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = 7, + EDJE_TWEEN_MODE_DIVISOR_INTERP = 8, + EDJE_TWEEN_MODE_BOUNCE = 9, + EDJE_TWEEN_MODE_SPRING = 10, + EDJE_TWEEN_MODE_LAST = 11, + EDJE_TWEEN_MODE_MASK = 0xff, + EDJE_TWEEN_MODE_OPT_FROM_CURRENT = (1 << 31) +} Edje_Tween_Mode; + +typedef enum _Edje_Cursor +{ + EDJE_CURSOR_MAIN, + EDJE_CURSOR_SELECTION_BEGIN, + EDJE_CURSOR_SELECTION_END, + EDJE_CURSOR_PREEDIT_START, + EDJE_CURSOR_PREEDIT_END, + EDJE_CURSOR_USER, + EDJE_CURSOR_USER_EXTRA, + // more later +} Edje_Cursor; + +struct _Edje_Entry_Change_Info +{ + union { + struct { + const char *content; + size_t pos; + size_t plain_length; /* Number of cursor positions represented + in content. */ + } insert; + struct { + const char *content; + size_t start, end; + } del; + } change; + Eina_Bool insert : 1; /**< True if the "change" union's "insert" is valid */ + Eina_Bool merge : 1; /**< True if can be merged with the previous one. Used for example with insertion when something is already selected. */ +}; + +/** + * @since 1.1.0 + */ +typedef struct _Edje_Entry_Change_Info Edje_Entry_Change_Info; + +typedef struct _Edje_Message_String Edje_Message_String; +typedef struct _Edje_Message_Int Edje_Message_Int; +typedef struct _Edje_Message_Float Edje_Message_Float; +typedef struct _Edje_Message_String_Set Edje_Message_String_Set; +typedef struct _Edje_Message_Int_Set Edje_Message_Int_Set; +typedef struct _Edje_Message_Float_Set Edje_Message_Float_Set; +typedef struct _Edje_Message_String_Int Edje_Message_String_Int; +typedef struct _Edje_Message_String_Float Edje_Message_String_Float; +typedef struct _Edje_Message_String_Int_Set Edje_Message_String_Int_Set; +typedef struct _Edje_Message_String_Float_Set Edje_Message_String_Float_Set; + +struct _Edje_Message_String +{ + char *str; /**< The message's string pointer */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING messages. The string in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_Int +{ + int val; /**< The message's value */ +}; /**< Structure passed as value on #EDJE_MESSAGE_INT messages */ + +struct _Edje_Message_Float +{ + double val; /**< The message's value */ +}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT messages */ + +struct _Edje_Message_String_Set +{ + int count; /**< The size of the message's array (may be greater than 1) */ + char *str[1]; /**< The message's @b array of string pointers */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_SET messages. The array in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_Int_Set +{ + int count; /**< The size of the message's array (may be greater than 1) */ + int val[1]; /**< The message's @b array of integers */ +}; /**< Structure passed as value on #EDJE_MESSAGE_INT_SET messages. The array in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_Float_Set +{ + int count; /**< The size of the message's array (may be greater than 1) */ + double val[1]; /**< The message's @b array of floats */ +}; /**< Structure passed as value on #EDJE_MESSAGE_FLOAT_SET messages. The array in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_String_Int +{ + char *str; /**< The message's string value */ + int val; /**< The message's integer value */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT messages. The string in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_String_Float +{ + char *str; /**< The message's string value */ + double val; /**< The message's float value */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT messages. The string in it is automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_String_Int_Set +{ + char *str; /**< The message's string value */ + int count; /**< The size of the message's array (may be greater than 1) */ + int val[1]; /**< The message's @b array of integers */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_INT_SET messages. The array and string in it are automatically freed be Edje if passed to you by Edje */ + +struct _Edje_Message_String_Float_Set +{ + char *str; /**< The message's string value */ + int count; /**< The size of the message's array (may be greater than 1) */ + double val[1]; /**< The message's @b array of floats */ +}; /**< Structure passed as value on #EDJE_MESSAGE_STRING_FLOAT_SET messages. The array and string in it are automatically freed be Edje if passed to you by Edje */ + +typedef enum _Edje_Drag_Dir +{ + EDJE_DRAG_DIR_NONE = 0, + EDJE_DRAG_DIR_X = 1, + EDJE_DRAG_DIR_Y = 2, + EDJE_DRAG_DIR_XY = 3 +} Edje_Drag_Dir; + +typedef enum _Edje_Load_Error +{ + EDJE_LOAD_ERROR_NONE = 0, /**< No error happened, the loading was successful */ + EDJE_LOAD_ERROR_GENERIC = 1, /**< A generic error happened during the loading */ + EDJE_LOAD_ERROR_DOES_NOT_EXIST = 2, /**< The file pointed to did not exist */ + EDJE_LOAD_ERROR_PERMISSION_DENIED = 3, /**< Permission to read the given file was denied */ + EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = 4, /**< Resource allocation failed during the loading */ + EDJE_LOAD_ERROR_CORRUPT_FILE = 5, /**< The file pointed to was corrupt */ + EDJE_LOAD_ERROR_UNKNOWN_FORMAT = 6, /**< The file pointed to had an unknown format */ + EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = 7, /**< The file pointed to is incompatible, i.e., it doesn't match the library's current version's format */ + EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = 8, /**< The group/collection set to load from was @b not found in the file */ + EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = 9 /**< The group/collection set to load from had recursive references on its components */ +} Edje_Load_Error; /**< Edje file loading error codes one can get - see edje_load_error_str() too. */ + +typedef enum _Edje_Text_Filter_Type +{ + EDJE_TEXT_FILTER_TEXT = 0, + EDJE_TEXT_FILTER_FORMAT = 1, + EDJE_TEXT_FILTER_MARKUP = 2 +} Edje_Text_Filter_Type; + +typedef enum _Edje_Text_Autocapital_Type +{ + EDJE_TEXT_AUTOCAPITAL_TYPE_NONE, + EDJE_TEXT_AUTOCAPITAL_TYPE_WORD, + EDJE_TEXT_AUTOCAPITAL_TYPE_SENTENCE, + EDJE_TEXT_AUTOCAPITAL_TYPE_ALLCHARACTER +} Edje_Text_Autocapital_Type; + +/** + * The possible types the parameters of an EXTERNAL part can be. + */ +typedef enum _Edje_External_Param_Type +{ + EDJE_EXTERNAL_PARAM_TYPE_INT, /**< Parameter value is an integer. */ + EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, /**< Parameter value is a double. */ + EDJE_EXTERNAL_PARAM_TYPE_STRING, /**< Parameter value is a string. */ + EDJE_EXTERNAL_PARAM_TYPE_BOOL, /**< Parameter value is boolean. */ + EDJE_EXTERNAL_PARAM_TYPE_CHOICE, /**< Parameter value is one of a set of + predefined string choices. */ + EDJE_EXTERNAL_PARAM_TYPE_MAX /**< Sentinel. Don't use. */ +} Edje_External_Param_Type; + +/** + * Flags that determine how a parameter may be accessed in different + * circumstances. + */ +typedef enum _Edje_External_Param_Flags +{ + EDJE_EXTERNAL_PARAM_FLAGS_NONE = 0, /**< Property is incapable of operations, this is used to catch bogus flags. */ + EDJE_EXTERNAL_PARAM_FLAGS_GET = (1 << 0), /**< Property can be read/get. */ + EDJE_EXTERNAL_PARAM_FLAGS_SET = (1 << 1), /**< Property can be written/set. This only enables edje_object_part_external_param_set() and Embryo scripts. To enable the parameter being set from state description whenever it changes state, use #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */ + EDJE_EXTERNAL_PARAM_FLAGS_STATE = (1 << 2), /**< Property can be set from state description. */ + EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR = (1 << 3), /**< This property is only set once when the object is constructed using its value from "default" 0.0 state description. Setting this overrides #EDJE_EXTERNAL_PARAM_FLAGS_STATE. */ + EDJE_EXTERNAL_PARAM_FLAGS_REGULAR = (EDJE_EXTERNAL_PARAM_FLAGS_GET | + EDJE_EXTERNAL_PARAM_FLAGS_SET | + EDJE_EXTERNAL_PARAM_FLAGS_STATE) /**< Convenience flag that sets property as GET, SET and STATE. */ +} Edje_External_Param_Flags; + +typedef enum _Edje_Input_Panel_Layout +{ + EDJE_INPUT_PANEL_LAYOUT_NORMAL, /**< Default layout */ + EDJE_INPUT_PANEL_LAYOUT_NUMBER, /**< Number layout */ + EDJE_INPUT_PANEL_LAYOUT_EMAIL, /**< Email layout */ + EDJE_INPUT_PANEL_LAYOUT_URL, /**< URL layout */ + EDJE_INPUT_PANEL_LAYOUT_PHONENUMBER, /**< Phone Number layout */ + EDJE_INPUT_PANEL_LAYOUT_IP, /**< IP layout */ + EDJE_INPUT_PANEL_LAYOUT_MONTH, /**< Month layout */ + EDJE_INPUT_PANEL_LAYOUT_NUMBERONLY, /**< Number Only layout */ + EDJE_INPUT_PANEL_LAYOUT_INVALID, /**< Never use this */ + EDJE_INPUT_PANEL_LAYOUT_HEX, /**< Hexadecimal layout @since 1.2 */ + EDJE_INPUT_PANEL_LAYOUT_TERMINAL, /**< Command-line terminal layout @since 1.2 */ + EDJE_INPUT_PANEL_LAYOUT_PASSWORD /**< Like normal, but no auto-correct, no auto-capitalization etc. @since 1.2 */ +} Edje_Input_Panel_Layout; + +typedef enum _Edje_Input_Panel_Lang +{ + EDJE_INPUT_PANEL_LANG_AUTOMATIC, /**< Automatic @since 1.2 */ + EDJE_INPUT_PANEL_LANG_ALPHABET /**< Alphabet @since 1.2 */ +} Edje_Input_Panel_Lang; + +typedef enum _Edje_Input_Panel_Return_Key_Type +{ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT, /**< Default @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DONE, /**< Done @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_GO, /**< Go @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_JOIN, /**< Join @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN, /**< Login @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_NEXT, /**< Next @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH, /**< Search or magnifier icon @since 1.2 */ + EDJE_INPUT_PANEL_RETURN_KEY_TYPE_SEND /**< Send @since 1.2 */ +} Edje_Input_Panel_Return_Key_Type; + +/** + * @brief Converts type identifier to string nicer representation. + * + * This may be used to debug or other informational purposes. + * + * @param type the identifier to convert. + * @return the string with the string representation, or @c "(unknown)". + */ +EAPI const char *edje_external_param_type_str(Edje_External_Param_Type type) EINA_PURE; + +/** + * Struct that holds parameters for parts of type EXTERNAL. + */ +struct _Edje_External_Param +{ + const char *name; /**< The name of the parameter. */ + Edje_External_Param_Type type; /**< The type of the parameter. This defines + which of the next three variables holds + the value for it. */ + // XXX these could be in a union, but eet doesn't support them (or does it?) + int i; /**< Used by both integer and boolean */ + double d; /**< Used by double */ + const char *s; /**< Used by both string and choice */ +}; +/** + * Struct that holds parameters for parts of type EXTERNAL. + */ +typedef struct _Edje_External_Param Edje_External_Param; + +/** + * Helper macro to indicate an EXTERNAL's integer parameter is undefined. + */ +#define EDJE_EXTERNAL_INT_UNSET INT_MAX +/** + * Helper macro to indicate an EXTERNAL's double parameter is undefined. + */ +#define EDJE_EXTERNAL_DOUBLE_UNSET DBL_MAX + +/** + * Struct holding information about an EXTERNAL part's parameters. + * + * When creating types to use with EXTERNAL parts, an array of this type is + * used to describe the different parameters the object uses. + * + * This struct holds the name, type and flags that define how and when the + * parameter is used, as well as information specific to each type, like the + * maximum or minimum value, that can be used by editors to restrict the + * range of values to set for each parameter. + */ +typedef struct _Edje_External_Param_Info Edje_External_Param_Info; +/** + * Struct holding information about an EXTERNAL part's parameters. + * + * When creating types to use with EXTERNAL parts, an array of this type is + * used to describe the different parameters the object uses. + * + * This struct holds the name, type and flags that define how and when the + * parameter is used, as well as information specific to each type, like the + * maximum or minimum value, that can be used by editors to restrict the + * range of values to set for each parameter. + */ +struct _Edje_External_Param_Info +{ + const char *name; /**< Name of the parameter. */ + Edje_External_Param_Type type; /**< Type of the parameter. */ + Edje_External_Param_Flags flags; /**< Flags indicating how this parameter is + used. */ + union { + struct { + int def, /**< Default value for the parameter. */ + min, /**< Minimum value it can have. */ + max, /**< Maximum value it can have. */ + step; /**< Values will be a multiple of this. */ + } i; /**< Info about integer type parameters. Use #EDJE_EXTERNAL_INT_UNSET + on any of them to indicate they are not defined.*/ + struct { + double def, /**< Default value for the parameter. */ + min, /**< Minimum value it can have. */ + max, /**< Maximum value it can have. */ + step; /**< Values will be a multiple of this. */ + } d; /**< Info about double type parameters. Use +#EDJE_EXTERNAL_DOUBLE_UNSET on any of them to indicate they are not defined.*/ + struct { + const char *def; /**< Default value. */ + const char *accept_fmt; /**< Not implemented. */ + const char *deny_fmt; /**< Not implemented */ + } s; /**< Info about string type parameters. NULL indicates undefined. */ + struct { + int def; /**< Default value. */ + const char *false_str; /**< String shown by editors to indicate the false state. */ + const char *true_str; /**< String shown by editors to indicate the true state. */ + } b; /**< Info about boolean type parameters.*/ + struct { + const char *def; /**< Default value. */ + const char **choices; /* Array of strings, each represents a + valid value for this parameter. The + last element of the array must be + NULL. */ + char *(*def_get)(void *data, const Edje_External_Param_Info *info); /** return malloc() memory with the default choice, should be used if def is NULL. First parameter is Edje_External_Type::data */ + char **(*query)(void *data, const Edje_External_Param_Info *info); /** NULL terminated array of strings, memory is dynamically allocated and should be freed with free() for array and each element. First parameter is Edje_External_Type::data */ + } c; /**< Info about choice type parameters. */ + } info; +}; + +#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_INT, flags, {.i = {def, min, max, step}}} +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, flags, {.d = {def, min, max, step}}} +#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_STRING, flags, {.s = {def, accept, deny}}} +#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_BOOL, flags, {.b = {def, false_str, true_str}}} +#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {def, choices, NULL, NULL}}} +#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, flags) \ + {name, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, flags, {.c = {NULL, NULL, def_get, query}}} + +#define EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, min, max, step) \ + EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, min, max, step) \ + EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, min, max, step, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) +#define EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, accept, deny) \ + EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, accept, deny, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) +#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, false_str, true_str) \ + EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, false_str, true_str, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) +#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL(name, def, choices) \ + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL_FLAGS(name, def, choices, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) +#define EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL(name, def_get, query) \ + EDJE_EXTERNAL_PARAM_INFO_CHOICE_DYNAMIC_FULL_FLAGS(name, def_get, query, EDJE_EXTERNAL_PARAM_FLAGS_REGULAR) + +#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, def) \ + EDJE_EXTERNAL_PARAM_INFO_INT_FULL(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET) +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, def) \ + EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET) +#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, def) \ + EDJE_EXTERNAL_PARAM_INFO_STRING_FULL(name, def, NULL, NULL) +#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, def) \ + EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL(name, def, "false", "true") + +#define EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, def, flags) \ + EDJE_EXTERNAL_PARAM_INFO_INT_FULL_FLAGS(name, def, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, EDJE_EXTERNAL_INT_UNSET, flags) +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, def, flags) \ + EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FULL_FLAGS(name, def, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, EDJE_EXTERNAL_DOUBLE_UNSET, flags) +#define EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, def, flags) \ + EDJE_EXTERNAL_PARAM_INFO_STRING_FULL_FLAGS(name, def, NULL, NULL, flags) +#define EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, def, flags) \ + EDJE_EXTERNAL_PARAM_INFO_BOOL_FULL_FLAGS(name, def, "false", "true", flags) + +#define EDJE_EXTERNAL_PARAM_INFO_INT(name) \ + EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT(name, 0) +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE(name) \ + EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT(name, 0.0) +#define EDJE_EXTERNAL_PARAM_INFO_STRING(name) \ + EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT(name, NULL) +#define EDJE_EXTERNAL_PARAM_INFO_BOOL(name) \ + EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT(name, 0) + +#define EDJE_EXTERNAL_PARAM_INFO_INT_FLAGS(name, flags) \ + EDJE_EXTERNAL_PARAM_INFO_INT_DEFAULT_FLAGS(name, 0, flags) +#define EDJE_EXTERNAL_PARAM_INFO_DOUBLE_FLAGS(name, flags) \ + EDJE_EXTERNAL_PARAM_INFO_DOUBLE_DEFAULT_FLAGS(name, 0.0, flags) +#define EDJE_EXTERNAL_PARAM_INFO_STRING_FLAGS(name, flags) \ + EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT_FLAGS(name, NULL, flags) +#define EDJE_EXTERNAL_PARAM_INFO_BOOL_FLAGS(name, flags) \ + EDJE_EXTERNAL_PARAM_INFO_BOOL_DEFAULT_FLAGS(name, 0, flags) + +#define EDJE_EXTERNAL_PARAM_INFO_SENTINEL {NULL, 0, 0, {.s = {NULL, NULL, NULL}}} + +/** + * @struct _Edje_External_Type + * + * @brief Information about an external type to be used. + * + * This structure provides information on how to display and modify a + * third party Evas_Object in Edje. + * + * Some function pointers are not really used by Edje, but provide + * means for Edje users to better interact with such objects. For + * instance, an editor may use label_get() and icon_get() to list all + * registered external types. + * + * @note The function pointers provided in this structure must check + * for errors and invalid or out-of-range values as for + * performance reasons Edje will not enforce hints provided as + * #Edje_External_Param_Info in the member parameters_info. + */ +struct _Edje_External_Type +{ +#define EDJE_EXTERNAL_TYPE_ABI_VERSION (3) + unsigned int abi_version; /**< always use: + * - #EDJE_EXTERNAL_TYPE_ABI_VERSION to declare. + * - edje_external_type_abi_version_get() to check. + */ + const char *module; /**< Name of the module that holds these definitions, + as used in the externals {} block of a theme + definition. */ + const char *module_name; /**< Canonical name of the module, for displaying + in edition programs, for example. */ + Evas_Object *(*add) (void *data, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); /**< Creates the object to be used by Edje as the part. @p part_name is the name of the part that holds the object and can be used to forward callbacks from the object as signals from Edje. @p params is the list of #Edje_External_Param, not parsed, from the default state of the part. Parameters of type #EDJE_EXTERNAL_PARAM_FLAGS_CONSTRUCTOR should be set on + the object here. */ + void (*state_set) (void *data, Evas_Object *obj, const void *from_params, const void *to_params, float pos); /**< Called upon state changes, including the initial "default" 0.0 state. Parameters are the value returned by params_parse(). The @p pos parameter is a value between 0.0 and 1.0 indicating the position in time within the state transition. */ + void (*signal_emit) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Feed a signal emitted with emission originally set as part_name:signal to this object (without the "part_name:" prefix) */ + Eina_Bool (*param_set) (void *data, Evas_Object *obj, const Edje_External_Param *param); /**< Dynamically change a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success */ + Eina_Bool (*param_get) (void *data, const Evas_Object *obj, Edje_External_Param *param); /**< Dynamically fetch a parameter of this external, called by scripts and user code. Returns @c EINA_TRUE on success. (Must check parameter name and type!) */ + Evas_Object *(*content_get) (void *data, const Evas_Object *obj, const char *content); /**< Dynamically fetch a sub object of this external, called by scripts and user code. Returns @c Evas_Object * on success. (Must check parameter name and type!) */ + void *(*params_parse) (void *data, Evas_Object *obj, const Eina_List *params); /**< Parses the list of parameters, converting into a friendly representation. Used with state_set() */ + void (*params_free) (void *params); /**< Free parameters parsed with params_parse() */ + + /* The following callbacks aren't used by Edje itself, but by UI design + tools instead */ + const char *(*label_get) (void *data); /**< Get a label to use to identify this EXTERNAL. (For editors) */ + const char *(*description_get) (void *data); /**< Get a user friendly description of this EXTERNAL. (For editors) */ + Evas_Object *(*icon_add) (void *data, Evas *e); /**< Get an icon to use to identify this EXTERNAL. (For editors) */ + Evas_Object *(*preview_add) (void *data, Evas *e); /**< Get a preview of the EXTERNAL object in use. (For editors) */ + const char *(*translate) (void *data, const char *orig); /**< called to translate parameters_info name properties for use in user interfaces that support internationalization (i18n) (For editors) */ + + Edje_External_Param_Info *parameters_info; /**< An array of #Edje_External_Param_Info describing the different parameters this EXTERNAL may have. The last element in the array must be #EDJE_EXTERNAL_PARAM_INFO_SENTINEL. */ + void *data; /**< Private user data that will be passed to all of the class functions. */ +}; +typedef struct _Edje_External_Type Edje_External_Type; + +/** + * Convenience struct used to mass-register types of EXTERNAL objects. + * + * Used with edje_external_type_array_register(). + */ +struct _Edje_External_Type_Info +{ + const char *name; /**< The name of the type to register. */ + const Edje_External_Type *info; /**< The type definition. */ +}; +typedef struct _Edje_External_Type_Info Edje_External_Type_Info; + +typedef void (*Edje_Signal_Cb) (void *data, Evas_Object *obj, const char *emission, const char *source); /**< Edje signal callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the signal comes from. @c emission will identify the exact signal's emission string and @c source the exact signal's source one. */ +typedef void (*Edje_Text_Change_Cb) (void *data, Evas_Object *obj, const char *part); +typedef void (*Edje_Message_Handler_Cb) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg); /**< Edje message handler callback functions's prototype definition. @c data will have the auxiliary data pointer set at the time the callback registration. @c obj will be a pointer the Edje object where the message comes from. @c type will identify the type of the given message and @c msg will be a pointer the message's contents, de facto, which depend on @c type. */ +typedef void (*Edje_Text_Filter_Cb) (void *data, Evas_Object *obj, const char *part, Edje_Text_Filter_Type type, char **text); +typedef void (*Edje_Markup_Filter_Cb) (void *data, Evas_Object *obj, const char *part, char **text); +typedef Evas_Object *(*Edje_Item_Provider_Cb) (void *data, Evas_Object *obj, const char *part, const char *item); + +/** + * @brief Initialize the Edje library. + * + * @return The new init count. The initial value is zero. + * + * This function initializes the Ejde library, making the proper calls + * to internal initialization functions. It will also initialize its + * @b dependencies, making calls to @c eina_init(), @c ecore_init(), + * @c embryo_init() and @c eet_init(). So, there is no need to call + * those functions again, in your code. To shutdown Edje there is the + * function edje_shutdown(). + * + * @see edje_shutdown() + * @see eina_init() + * @see ecore_init() + * @see embryo_init() + * @see eet_init() + * + */ +EAPI int edje_init (void); + +/** + * @brief Shutdown the Edje library. + * + * @return The number of times the library has been initialised + * without being shutdown. + * + * This function shuts down the Edje library. It will also call the + * shutdown functions of its @b dependencies, which are @c + * eina_shutdown(), @c ecore_shutdown(), @c embryo_shutdown() and @c + * eet_shutdown(), so there is no need to call these functions again, + * in your code. + * + * @see edje_init() + * @see eina_shutdown() + * @see ecore_shutdown() + * @see embryo_shutdown() + * @see eet_shutdown() + * + */ +EAPI int edje_shutdown (void); + +/** + * @brief Set edje trasitions' frame time. + * + * @param t The frame time, in seconds. Default value is 1/30. + * + * This function sets the edje built-in animations' frame time (thus, + * affecting their resolution) by calling + * ecore_animator_frametime_set(). This frame time can be retrieved + * with edje_frametime_get(). + * + * @see edje_frametime_get() + * + */ +EAPI void edje_frametime_set (double t); + +/** + * @brief Get edje trasitions' frame time. + * + * @return The frame time, in seconds. + * + * This function returns the edje frame time set by + * edje_frametime_set() or the default value 1/30. + * + * @see edje_frametime_set() + * + */ +EAPI double edje_frametime_get (void); + +/** + * @brief Freeze Edje objects. + * + * This function freezes all Edje animations in the current process. + * + * @note: for freeze a specific object @see edje_object_freeze(). + * + * @see edje_thaw() + * + */ +EAPI void edje_freeze (void); + +/** + * @brief Thaw Edje objects. + * + * This function thaws all Edje animations in the current process. + * + * @note for thaw a specific object @see edje_object_thaw(). + * + * @see edje_freeze() + * + */ +EAPI void edje_thaw (void); + +/** + * @brief Set the edje append fontset. + * + * @param fonts The fontset to append. + * + * This function sets the edje append fontset. + * + */ +EAPI void edje_fontset_append_set (const char *fonts); + +/** + * @brief Get the edje append fontset. + * + * @return The edje append fontset. + * + * This function returns the edje append fontset set by + * edje_fontset_append_set() function. + * + * @see edje_fontset_append_set(). + * + */ +EAPI const char *edje_fontset_append_get (void); + +/** + * @brief Set Edje's global scaling factor. + * + * @param scale The global scaling factor (the default value is @c 1.0) + * + * Edje allows one to build scalable interfaces. Scaling factors, + * which are set to neutral (@c 1.0) values by default (no scaling, + * actual sizes), are of two types: @b global and @b individual. + * Edje's global scaling factor will affect all its objects which + * hadn't their individual scaling factors altered from the default + * value (which is zero). If they had it set differently, by + * edje_object_scale_set(), that factor will @b override the global + * one. + * + * Scaling affects the values of minimum/maximum @b part sizes, which + * are @b multiplied by it. Font sizes are scaled, too. + * + * @warning Only parts which, at EDC level, had the @c "scale" + * property set to @c 1, will be affected by this function. Check the + * complete @ref edcref "syntax reference" for EDC files. + * + * @see edje_scale_get(). + */ +EAPI void edje_scale_set (double scale); + +/** + * @brief Retrieve Edje's global scaling factor. + * + * @return The global scaling factor + * + * This function returns Edje's global scaling factor. + * + * @see edje_scale_set() for more details + * + */ +EAPI double edje_scale_get (void); + +/** + * @brief Show last character in password mode. + * + * @param password_show_last If TRUE enable last character show in password mode. + * + * This function enables last input to be visible when in password mode for few seconds + * or until the next input is entered. + * + * The time out value is obtained by edje_password_show_last_timeout_set function. + * + * @see edje_password_show_last_timeout_set(). + */ +EAPI void edje_password_show_last_set(Eina_Bool password_show_last); + +/** + * @brief Set's the timeout value in last show password mode. + * + * @param password_show_last_timeout The timeout value. + * + * This functions sets the time out value for which the last input entered in password + * mode will be visible. + * + * This value can be used only when last show mode is set in password mode. + * + * @see edje_password_show_last_set(). + * + */ +EAPI void edje_password_show_last_timeout_set(double password_show_last_timeout); + +/** + * @brief Set the scaling factor for a given Edje object. + * + * @param obj A handle to an Edje object + * @param scale The scaling factor (the default value is @c 0.0, + * meaning individual scaling @b not set) + * + * This function sets an @b individual scaling factor on the @a obj + * Edje object. This property (or Edje's global scaling factor, when + * applicable), will affect this object's part sizes. If @p scale is + * not zero, than the individual scaling will @b override any global + * scaling set, for the object @p obj's parts. Put it back to zero to + * get the effects of the global scaling again. + * + * @warning Only parts which, at EDC level, had the @c "scale" + * property set to @c 1, will be affected by this function. Check the + * complete @ref edcref "syntax reference" for EDC files. + * + * @see edje_object_scale_get() + * @see edje_scale_get() for more details + */ +EAPI Eina_Bool edje_object_scale_set (Evas_Object *obj, double scale); + +/** + * @brief Get a given Edje object's scaling factor. + * + * @param obj A handle to an Edje object + * + * This function returns the @c individual scaling factor set on the + * @a obj Edje object. + * + * @see edje_object_scale_set() for more details + * + */ +EAPI double edje_object_scale_get (const Evas_Object *obj); + +/** + * @brief Set the RTL orientation for this object. + * + * @param obj A handle to an Edje object. + * @param rtl new value of flag EINA_TRUE/EINA_FALSE + * @since 1.1.0 + */ +EAPI void edje_object_mirrored_set (Evas_Object *obj, Eina_Bool rtl); + +/** + * @brief Get the RTL orientation for this object. + * + * You can RTL orientation explicitly with edje_object_mirrored_set. + * + * @param obj A handle to an Edje object. + * @return @c EINA_TRUE if the flag is set or @c EINA_FALSE if not. + * @since 1.1.0 + */ +EAPI Eina_Bool edje_object_mirrored_get (const Evas_Object *obj); + +/** + * Get a list of groups in an edje file + * @param file The path to the edje file + * + * @return The Eina_List of group names (char *) + * + * Note: the list must be freed using edje_file_collection_list_free() + * when you are done with it. + */ +EAPI Eina_List *edje_file_collection_list (const char *file); + +/** + * Free file collection list + * @param lst The Eina_List of groups + * + * Frees the list returned by edje_file_collection_list(). + */ +EAPI void edje_file_collection_list_free (Eina_List *lst); + +/** + * Determine whether a group matching glob exists in an edje file. + * @param file The file path + * @param glob A glob to match on + * + * @return 1 if a match is found, 0 otherwise + */ +EAPI Eina_Bool edje_file_group_exists (const char *file, const char *glob); + +/** + * Get data from the file level data block of an edje file + * @param file The path to the .edj file + * @param key The data key + * @return The string value of the data. Must be freed by the user when no + * longer needed. + * + * If an edje file is built from the following edc: + * + * data { + * item: "key1" "value1"; + * item: "key2" "value2"; + * } + * collections { ... } + * + * Then, edje_file_data_get("key1") will return "value1" + */ +EAPI char *edje_file_data_get (const char *file, const char *key); + +/** + * @brief Set the file cache size. + * + * @param count The file cache size in edje file units. Default is 16. + * + * This function sets the file cache size. Edje keeps this cache in + * order to prevent duplicates of edje file entries in memory. The + * file cache size can be retrieved with edje_file_cache_get(). + * + * @see edje_file_cache_get() + * @see edje_file_cache_flush() + * + */ +EAPI void edje_file_cache_set (int count); + +/** + * @brief Return the file cache size. + * + * @return The file cache size in edje file units. Default is 16. + * + * This function returns the file cache size set by + * edje_file_cache_set(). + * + * @see edje_file_cache_set() + * @see edje_file_cache_flush() + * + */ +EAPI int edje_file_cache_get (void); + +/** + * @brief Clean the file cache. + * + * This function cleans the file cache entries, but keeps this cache's + * size to the last value set. + * + * @see edje_file_cache_set() + * @see edje_file_cache_get() + * + */ +EAPI void edje_file_cache_flush (void); + +/** + * @brief Set the collection cache size. + * + * @param count The collection cache size, in edje object units. Default is 16. + * + * This function sets the collection cache size. Edje keeps this cache + * in order to prevent duplicates of edje {collection,group,part} + * entries in memory. The collection cache size can be retrieved with + * edje_collection_cache_get(). + * + * @see edje_collection_cache_get() + * @see edje_collection_cache_flush() + * + */ +EAPI void edje_collection_cache_set (int count); + +/** + * @brief Return the collection cache size. + * + * @return The collection cache size, in edje object units. Default is 16. + * + * This function returns the collection cache size set by + * edje_collection_cache_set(). + * + * @see edje_collection_cache_set() + * @see edje_collection_cache_flush() + * + */ +EAPI int edje_collection_cache_get (void); + +/** + * @brief Clean the collection cache. + * + * This function cleans the collection cache, but keeps this cache's + * size to the last value set. + * + * @see edje_collection_cache_set() + * @see edje_collection_cache_get() + * + */ +EAPI void edje_collection_cache_flush (void); + +/** + * @brief Set Edje color class. + * + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * This function sets the color values for a process level color + * class. This will cause all edje parts in the current process that + * have the specified color class to have their colors multiplied by + * these values. (Object level color classes set by + * edje_object_color_class_set() will override the values set by this + * function). + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * Setting color emits a signal "color_class,set" with source being + * the given color class in all objects. + * + * @see edje_color_class_set(). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_color_class_set (const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); + +/** + * @brief Get Edje color class. + * + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * @return EINA_TRUE if found or EINA_FALSE if not found and all + * values are zeroed. + * + * This function gets the color values for a process level color + * class. This value is the globally set and not per-object, that is, + * the value that would be used by objects if they did not override with + * edje_object_color_class_set(). + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * @see edje_color_class_set(). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_color_class_get (const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); + +/** + * @brief Delete edje color class. + * + * @param color_class + * + * This function deletes any values at the process level for the + * specified color class. + * @note Deleting the color class will revert it to the + * values defined in the theme file. + * + * Deleting the color class will emit the signal "color_class,del" + * to all the Edje objects in the running program. + */ +EAPI void edje_color_class_del (const char *color_class); + +/** + * @brief Lists color classes. + * + * @return A list of color class names (strings). These strings and + * the list must be free()'d by the caller. + * + * This function lists all color classes known about by the current + * process. + * + */ +EAPI Eina_List *edje_color_class_list (void); + +/** + * @brief Set the Edje text class. + * + * @param text_class The text class name + * @param font The font name + * @param size The font size + * + * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error + * + * This function updates all Edje members at the process level which + * belong to this text class with the new font attributes. + * If the @p size is 0 then the font size will be kept with the previous size. + * If the @p size is less then 0 then the font size will be calculated in the + * percentage. For example, if the @p size is -50, then the font size will be + * scaled to half of the original size and if the @p size is -10 then the font + * size will be scaled as much as 0.1x. + * + * @see edje_text_class_get(). + * + */ +EAPI Eina_Bool edje_text_class_set (const char *text_class, const char *font, Evas_Font_Size size); + +/** + * @brief Delete the text class. + * + * @param text_class The text class name string + * + * This function deletes any values at the process level for the + * specified text class. + * + */ +EAPI void edje_text_class_del (const char *text_class); + +/** + * @brief List text classes. + * + * @return A list of text class names (strings). These strings are + * stringshares and the list must be free()'d by the caller. + * + * This function lists all text classes known about by the current + * process. + * + */ +EAPI Eina_List *edje_text_class_list (void); + +/** + * @brief Set the object minimum size. + * + * @param obj A valid Evas_Object handle + * @param minw The minimum width + * @param minh The minimum height + * + * This sets the minimum size restriction for the object. + */ +EAPI void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw, Evas_Coord minh); + +/** + * @brief Set the object maximum size. + * + * @param obj A valid Evas_Object handle + * @param maxw The maximum width + * @param maxh The maximum height + * + * This sets the maximum size restriction for the object. + */ +EAPI void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh); + +/** + * @brief Set the object aspect size. + * + * @param obj A valid Evas_Object handle + * @param aspect The aspect control axes + * @param aw The aspect radio width + * @param ah The aspect ratio height + * + * This sets the desired aspect ratio to keep an object that will be + * swallowed by Edje. The width and height define a preferred size + * ASPECT and the object may be scaled to be larger or smaller, but + * retaining the relative scale of both aspect width and height. + */ +EAPI void edje_extern_object_aspect_set (Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah); + +/** + * @brief Registers a custom layout to be used in edje boxes. + * + * @param name The name of the layout + * @param func The function defining the layout + * @param layout_data_get This function gets the custom data pointer + * for func + * @param layout_data_free Passed to func to free its private data + * when needed + * @param free_data Frees data + * @param data Private pointer passed to layout_data_get + * + * This function registers custom layouts that can be referred from + * themes by the registered name. The Evas_Object_Box_Layout + * functions receive two pointers for internal use, one being private + * data, and the other the function to free that data when it's not + * longer needed. From Edje, this private data will be retrieved by + * calling layout_data_get, and layout_data_free will be the free + * function passed to func. layout_data_get will be called with data + * as its parameter, and this one will be freed by free_data whenever + * the layout is unregistered from Edje. + */ +EAPI void edje_box_layout_register (const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data); + +/** + * @brief Instantiate a new Edje object + * + * @param evas A valid Evas handle, the canvas to place the new object + * in + * @return A handle to the new object created or @c NULL, on errors. + * + * This function creates a new Edje smart object, returning its @c + * Evas_Object handle. An Edje object is useless without a (source) + * file set to it, so you'd most probably call edje_object_file_set() + * afterwards, like in: + * @code + * Evas_Object *edje; + * + * edje = edje_object_add(canvas); + * if (!edje) + * { + * fprintf(stderr, "could not create edje object!\n"); + * return NULL; + * } + * + * if (!edje_object_file_set(edje, "theme.edj", "group_name")) + * { + * int err = edje_object_load_error_get(edje); + * const char *errmsg = edje_load_error_str(err); + * fprintf(stderr, "could not load 'group_name' from theme.edj: %s", + * errmsg); + * + * evas_object_del(edje); + * return NULL; + * } + * + * @endcode + * + * @note You can get a callback every time edje re-calculates the object + * (either due to animation or some kind of signal or input). This is called + * in-line just after the recalculation has occurred. It is a good idea not + * to go and delete or alter the object inside this callbacks, simply make + * a note that the recalculation has taken place and then do something about + * it outside the callback. to register a callback use code like: + * + * @code + * evas_object_smart_callback_add(edje_obj, "recalc", my_cb, my_cb_data); + * @endcode + * + * @see evas_object_smart_callback_add() + * + * @note Before creating the first Edje object in your code, remember + * to initialize the library, with edje_init(), or unexpected behavior + * might occur. + */ +EAPI Evas_Object *edje_object_add (Evas *evas); + +/** + * @brief Retrive an EDC data field's value from a given Edje + * object's group. + * + * @param obj A handle to an Edje object + * @param key The data field's key string + * @return The data's value string. Must not be freed. + * + * This function fetches an EDC data field's value, which is declared + * on the objects building EDC file, under its group. EDC data + * blocks are most commonly used to pass arbitrary parameters from an + * application's theme to its code. + * + * They look like the following: + * + * @code + * collections { + * group { + * name: "a_group"; + * data { + * item: "key1" "value1"; + * item: "key2" "value2"; + * } + * } + * } + * @endcode + * + * EDC data fields always hold @b strings as values, hence the return + * type of this function. Check the complete @ref edcref "syntax reference" + * for EDC files. + * + * @warning Do not confuse this call with edje_file_data_get(), which + * queries for a @b global EDC data field on an EDC declaration file. + * + * @see edje_object_file_set() + */ +EAPI const char *edje_object_data_get (const Evas_Object *obj, const char *key); + +/** + * @brief Sets the @b EDJ file (and group within it) to load an Edje + * object's contents from + * + * @param obj A handle to an Edje object + * @param file The path to the EDJ file to load @p from + * @param group The name of the group, in @p file, which implements an + * Edje object + * @return @c EINA_TRUE, on success or @c EINA_FALSE, on errors (check + * edje_object_load_error_get() after this call to get errors causes) + * + * Edje expects EDJ files, which are theming objects' descriptions and + * resources packed together in an EET file, to read Edje object + * definitions from. They usually are created with the @c .edj + * extension. EDJ files, in turn, are assembled from @b textual object + * description files, where one describes Edje objects declaratively + * -- the EDC files (see @ref edcref "the syntax" for those files). + * + * Those description files were designed so that many Edje object + * definitions -- also called @b groups (or collections) -- could be + * packed together in the same EDJ file, so that a whole + * application's theme could be packed in one file only. This is the + * reason for the @p group argument. + * + * Use this function after you instantiate a new Edje object, so that + * you can "give him life", telling where to get its contents from. + * + * @see edje_object_add() + * @see edje_object_file_get() + */ +EAPI Eina_Bool edje_object_file_set (Evas_Object *obj, const char *file, const char *group); + +/** + * @brief Get the file and group name that a given Edje object is bound to + * + * @param obj A handle to an Edje object + * @param file A pointer to a variable whero to store the file's + * path + * @param group A pointer to a variable where to store the group + * name in + * + * This gets the EDJ file's path, with the respective group set for + * the given Edje object. If @a obj is either not an Edje file, or has + * not had its file/group set previously, by edje_object_file_set(), + * then both @p file and @p group will be set to @c NULL, indicating + * an error. + * + * @see edje_object_file_set() + * + * @note Use @c NULL pointers on the file/group components you're not + * interested in: they'll be ignored by the function. + */ +EAPI void edje_object_file_get (const Evas_Object *obj, const char **file, const char **group); + +/** + * @brief Gets the (last) file loading error for a given Edje object + * + * @param obj A handlet to an Edje object + * + * @return The Edje loading error, one of: + * - #EDJE_LOAD_ERROR_NONE + * - #EDJE_LOAD_ERROR_GENERIC + * - #EDJE_LOAD_ERROR_DOES_NOT_EXIST + * - #EDJE_LOAD_ERROR_PERMISSION_DENIED + * - #EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED + * - #EDJE_LOAD_ERROR_CORRUPT_FILE + * - #EDJE_LOAD_ERROR_UNKNOWN_FORMAT + * - #EDJE_LOAD_ERROR_INCOMPATIBLE_FILE + * - #EDJE_LOAD_ERROR_UNKNOWN_COLLECTION + * - #EDJE_LOAD_ERROR_RECURSIVE_REFERENCE + * + * This function is meant to be used after an Edje EDJ file + * loading, what takes place with the edje_object_file_set() + * function. If that function does not return @c EINA_TRUE, one should + * check for the reason of failure with this one. + * + * @see edje_load_error_str() + */ +EAPI Edje_Load_Error edje_object_load_error_get (const Evas_Object *obj); + +/** + * Converts the given Edje file load error code into a string + * describing it in English. + * + * @param error the error code, a value in ::Edje_Load_Error. + * @return Always returns a valid string. If the given @p error is not + * supported, "Unknown error" is returned. + * + * edje_object_file_set() is a function which sets an error value, + * afterwards, which can be fetched with + * edje_object_load_error_get(). The function in question is meant + * to be used in conjunction with the latter, for pretty-printing any + * possible error cause. + */ +EAPI const char *edje_load_error_str (Edje_Load_Error error); + +/** + * @brief Preload the images on the Edje Object in the background. + * + * @param obj A handle to an Edje object + * @param cancel @c EINA_FALSE will add it the preloading work queue, + * @c EINA_TRUE will remove it (if it was issued before). + * @return @c EINA_FASLE if obj was not a valid Edje object + * otherwise @c EINA_TRUE + * + * This function requests the preload of all data images (on the given + * object) in the background. The work is queued before being processed + * (because there might be other pending requests of this type). + * It emits a signal "preload,done" when finished. + * + * @note Use @c EINA_TRUE on scenarios where you don't need + * the image data preloaded anymore. + */ +EAPI Eina_Bool edje_object_preload (Evas_Object *obj, Eina_Bool cancel); + +/** + * @brief Add a callback for an arriving Edje signal, emitted by + * a given Ejde object. + * + * @param obj A handle to an Edje object + * @param emission The signal's "emission" string + * @param source The signal's "source" string + * @param func The callback function to be executed when the signal is + * emitted. + * @param data A pointer to data to pass in to @p func. + * + * Edje signals are one of the communication interfaces between + * @b code and a given Edje object's @b theme. With signals, one can + * communicate two string values at a time, which are: + * - "emission" value: the name of the signal, in general + * - "source" value: a name for the signal's context, in general + * + * Though there are those common uses for the two strings, one is free + * to use them however they like. + * + * This function adds a callback function to a signal emitted by @a obj, to + * be issued every time an EDC program like the following + * @code + * program { + * name: "emit_example"; + * action: SIGNAL_EMIT "a_signal" "a_source"; + * } + * @endcode + * is run, if @p emission and @p source are given those same values, + * here. + * + * Signal callback registration is powerful, in the way that @b blobs + * may be used to match multiple signals at once. All the @c + * "*?[\" set of @c fnmatch() operators can be used, both for @p + * emission and @p source. + * + * Edje has @b internal signals it will emit, automatically, on + * various actions taking place on group parts. For example, the mouse + * cursor being moved, pressed, released, etc., over a given part's + * area, all generate individual signals. + * + * By using something like + * @code + * edje_object_signal_callback_add(obj, "mouse,down,*", "button.*", + * signal_cb, NULL); + * @endcode + * being @c "button.*" the pattern for the names of parts implementing + * buttons on an interface, you'd be registering for notifications on + * events of mouse buttons being pressed down on either of those parts + * (those events all have the @c "mouse,down," common prefix on their + * names, with a suffix giving the button number). The actual emission + * and source strings of an event will be passed in as the @a emission + * and @a source parameters of the callback function (e.g. @c + * "mouse,down,2" and @c "button.close"), for each of those events. + * + * @note See @ref edcref "the syntax" for EDC files + * @see edje_object_signal_emit() on how to emits Edje signals from + * code to a an object + * @see edje_object_signal_callback_del_full() + */ +EAPI void edje_object_signal_callback_add (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); + +/** + * @brief Remove a signal-triggered callback from an object. + * + * @param obj A valid Evas_Object handle. + * @param emission The emission string. + * @param source The source string. + * @param func The callback function. + * @return The data pointer + * + * This function removes a callback, previously attached to the + * emittion of a signal, from the object @a obj. The parameters @a + * emission, @a source and @a func must match exactly those passed to + * a previous call to edje_object_signal_callback_add(). The data + * pointer that was passed to this call will be returned. + * + * @see edje_object_signal_callback_add(). + * @see edje_object_signal_callback_del_full(). + * + */ +EAPI void *edje_object_signal_callback_del (Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func); + +/** + * @brief Unregister/delete a callback set for an arriving Edje + * signal, emitted by a given Ejde object. + * + * @param obj A handle to an Edje object + * @param emission The signal's "emission" string + * @param source The signal's "source" string + * @param func The callback function passed on the callback's + * registration + * @param data The pointer given to be passed as data to @p func + * @return @p data, on success or @c NULL, on errors (or if @p data + * had this value) + * + * This function removes a callback, previously attached to the + * emittion of a signal, from the object @a obj. The parameters + * @a emission, @a source, @a func and @a data must match exactly those + * passed to a previous call to edje_object_signal_callback_add(). The + * data pointer that was passed to this call will be returned. + * + * @see edje_object_signal_callback_add(). + * @see edje_object_signal_callback_del(). + * + */ +EAPI void *edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); + +/** + * @brief Send/emit an Edje signal to a given Edje object + * + * @param obj A handle to an Edje object + * @param emission The signal's "emission" string + * @param source The signal's "source" string + * + * This function sends a signal to the object @a obj. An Edje program, + * at @p obj's EDC specification level, can respond to a signal by + * having declared matching @c 'signal' and @c 'source' fields on its + * block (see @ref edcref "the syntax" for EDC files). + * + * As an example, + * @code + * edje_object_signal_emit(obj, "a_signal", ""); + * @endcode + * would trigger a program which had an EDC declaration block like + * @code + * program { + * name: "a_program"; + * signal: "a_signal"; + * source: ""; + * action: ... + * } + * @endcode + * + * @see edje_object_signal_callback_add() for more on Edje signals. + */ +EAPI void edje_object_signal_emit (Evas_Object *obj, const char *emission, const char *source); + +/** + * @brief Get extra data passed to callbacks. + * + * @return the extra data for that callback. + * + * Some callbacks pass extra information. This function gives access to that + * extra information. It's somehow like event_info in smart callbacks. + * + * @see edje_object_signal_callback_add() for more on Edje signals. + * @since 1.1.0 + */ +EAPI void * edje_object_signal_callback_extra_data_get(void); + +/** + * @brief Set the Edje object to playing or paused states. + * + * @param obj A handle to an Edje object. + * @param play Object state (@c EINA_TRUE to playing, + * @c EINA_FALSE to paused). + * + * This function sets the Edje object @a obj to playing or paused + * states, depending on the parameter @a play. This has no effect if + * the object was already at that state. + * + * @see edje_object_play_get(). + * + */ +EAPI void edje_object_play_set (Evas_Object *obj, Eina_Bool play); + +/** + * @brief Get the Edje object's state. + * + * @param obj A handle to an Edje object. + * @return @c EINA_FALSE if the object is not connected, its @c delete_me flag + * is set, or it is at paused state; @c EINA_TRUE if the object is at playing + * state. + * + * This function tells if an Edje object is playing or not. This state + * is set by edje_object_play_set(). + * + * @see edje_object_play_set(). + * + */ +EAPI Eina_Bool edje_object_play_get (const Evas_Object *obj); + +/** + * @brief Set the object's animation state. + * + * @param obj A handle to an Edje object. + * @param on The animation state. @c EINA_TRUE to starts or + * @c EINA_FALSE to stops. + * + * This function starts or stops an Edje object's animation. The + * information if it's stopped can be retrieved by + * edje_object_animation_get(). + * + * @see edje_object_animation_get() + * + */ +EAPI void edje_object_animation_set (Evas_Object *obj, Eina_Bool on); + +/** + * @brief Get the Edje object's animation state. + * + * @param obj A handle to an Edje object. + * @return @c EINA_FALSE on error or if object is not animated; + * @c EINA_TRUE if animated. + * + * This function returns if the animation is stopped or not. The + * animation state is set by edje_object_animation_set(). + * + * @see edje_object_animation_set(). + * + */ +EAPI Eina_Bool edje_object_animation_get (const Evas_Object *obj); + +/** + * @brief Freezes the Edje object. + * + * @param obj A handle to an Edje object. + * @return The frozen state or 0 on Error + * + * This function puts all changes on hold. Successive freezes will + * nest, requiring an equal number of thaws. + * + * @see edje_object_thaw() + */ +EAPI int edje_object_freeze (Evas_Object *obj); + +/** + * @brief Thaws the Edje object. + * + * @param obj A handle to an Edje object. + * @return The frozen state or 0 if the object is not frozen or on error. + * + * This function thaws the given Edje object. + * + * @note: If sucessives freezes were done, an equal number of + * thaws will be required. + * + * @see edje_object_freeze() + */ +EAPI int edje_object_thaw (Evas_Object *obj); + +/** + * @brief Sets the object color class. + * + * @param obj A valid Evas_Object handle + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * This function sets the color values for an object level color + * class. This will cause all edje parts in the specified object that + * have the specified color class to have their colors multiplied by + * these values. + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * Setting color emits a signal "color_class,set" with source being + * the given color. + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_object_color_class_set (Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); + +/** + * @brief Gets the object color class. + * + * @param o A valid Evas_Object handle + * @param color_class + * @param r Object Red value + * @param g Object Green value + * @param b Object Blue value + * @param a Object Alpha value + * @param r2 Outline Red value + * @param g2 Outline Green value + * @param b2 Outline Blue value + * @param a2 Outline Alpha value + * @param r3 Shadow Red value + * @param g3 Shadow Green value + * @param b3 Shadow Blue value + * @param a3 Shadow Alpha value + * + * @return EINA_TRUE if found or EINA_FALSE if not found and all + * values are zeroed. + * + * This function gets the color values for an object level color + * class. If no explicit object color is set, then global values will + * be used. + * + * The first color is the object, the second is the text outline, and + * the third is the text shadow. (Note that the second two only apply + * to text parts). + * + * @note unlike Evas, Edje colors are @b not pre-multiplied. That is, + * half-transparent white is 255 255 255 128. + */ +EAPI Eina_Bool edje_object_color_class_get (const Evas_Object *o, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); + +/** + * @brief Delete the object color class. + * + * @param obj The edje object's reference. + * @param color_class The color class to be deleted. + * + * This function deletes any values at the object level for the + * specified object and color class. + * @note Deleting the color class will revert it to the values + * defined by edje_color_class_set() or the color class + * defined in the theme file. + * + * Deleting the color class will emit the signal "color_class,del" + * for the given Edje object. + */ + EAPI void edje_object_color_class_del (Evas_Object *obj, const char *color_class); + +/** + * @brief Sets Edje text class. + * + * @param obj A valid Evas_Object handle + * @param text_class The text class name + * @param font Font name + * @param size Font Size + * + * @return @c EINA_TRUE, on success or @c EINA_FALSE, on error + * + * This function sets the text class for the Edje. + * + */ +EAPI Eina_Bool edje_object_text_class_set (Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size); + +/** + * @brief Get the minimum size specified -- as an EDC property -- for a + * given Edje object + * + * @param obj A handle to an Edje object + * @param minw Pointer to a variable where to store the minimum width + * @param minh Pointer to a variable where to store the minimum height + * + * This function retrieves the @p obj object's minimum size values, + * as declared in its EDC group definition. Minimum size of + * groups have the following syntax + * @code + * collections { + * group { + * name: "a_group"; + * min: 100 100; + * } + * } + * @endcode + * + * where one declares a minimum size of 100 pixels both for width and + * height. Those are (hint) values which should be respected when the + * given object/group is to be controlled by a given container object + * (e.g. an Edje object being "swallowed" into a given @c SWALLOW + * typed part, as in edje_object_part_swallow()). Check the complete + * @ref edcref "syntax reference" for EDC files. + * + * @note If the @c min EDC property was not declared for @p obj, this + * call will return the value 0, for each axis. + * + * @note On failure, this function will make all non-@c NULL size + * pointers' pointed variables be set to zero. + * + * @see edje_object_size_max_get() + */ +EAPI void edje_object_size_min_get (const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); + +/** + * @brief Edje will automatically update the size hints on itself. + * + * @param obj A handle to an Edje object. + * @param update Wether or not update the size hints. + * + * By default edje doesn't set size hints on itself. With this function + * call, it will do so if update is true. Be carefully, it cost a lot to + * trigger this feature as it will recalc the object every time it make + * sense to be sure that's its minimal size hint is always accurate. + */ +EAPI void edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update); + +/** + * @brief Wether or not Edje will update size hints on itself. + * + * @param obj A handle to an Edje object. + * @return @c true if does, @c false if it doesn't. + */ +EAPI Eina_Bool edje_object_update_hints_get(Evas_Object *obj); + +/** + * @brief Get the maximum size specified -- as an EDC property -- for a + * given Edje object + * + * @param obj A handle to an Edje object + * @param maxw Pointer to a variable where to store the maximum width + * @param maxh Pointer to a variable where to store the maximum height + * + * This function retrieves the @p obj object's maximum size values, + * as declared in its EDC group definition. Maximum size of + * groups have the following syntax + * @code + * collections { + * group { + * name: "a_group"; + * max: 100 100; + * } + * } + * @endcode + * + * where one declares a maximum size of 100 pixels both for width and + * height. Those are (hint) values which should be respected when the + * given object/group is to be controlled by a given container object + * (e.g. an Edje object being "swallowed" into a given @c SWALLOW + * typed part, as in edje_object_part_swallow()). Check the complete + * @ref edcref "syntax reference" for EDC files. + * + * @note If the @c max EDC property was not declared for @p obj, this + * call will return the maximum size a given Edje object may have, for + * each axis. + * + * @note On failure, this function will make all non-@c NULL size + * pointers' pointed variables be set to zero. + * + * @see edje_object_size_min_get() + */ +EAPI void edje_object_size_max_get (const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh); + +/** + * @brief Force a Size/Geometry calculation. + * + * @param obj A valid Evas_Object handle + * + * Forces the object @p obj to recalculation layout regardless of + * freeze/thaw. + */ +EAPI void edje_object_calc_force (Evas_Object *obj); + +/** + * @brief Calculate the minimum required size for a given Edje object. + * + * @param obj A handle to an Edje object + * @param minw Pointer to a variable where to store the minimum + * required width + * @param minh Pointer to a variable where to store the minimum + * required height + * + * This call works exactly as edje_object_size_min_restricted_calc(), + * with the last two arguments set to 0. Please refer to its + * documentation, then. + */ +EAPI void edje_object_size_min_calc (Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh); + +/** + * Calculate the geometry of the region, relative to a given Edje + * object's area, occupied by all parts in the object + * + * @param obj A handle to an Edje object + * @param x A pointer to a variable where to store the parts region's + * x coordinate + * @param y A pointer to a variable where to store the parts region's + * y coordinate + * @param w A pointer to a variable where to store the parts region's + * width + * @param h A pointer to a variable where to store the parts region's + * height + * + * This function gets the geometry of the rectangle equal to the area + * required to group all parts in @p obj's group/collection. The @p x + * and @p y coordinates are relative to the top left corner of the + * whole @p obj object's area. Parts placed out of the group's + * boundaries will also be taken in account, so that @p x and @p y + * may be negative. + * + * @note Use @c NULL pointers on the geometry components you're not + * interested in: they'll be ignored by the function. + * + * @note On failure, this function will make all non-@c NULL geometry + * pointers' pointed variables be set to zero. + */ +EAPI Eina_Bool edje_object_parts_extends_calc (Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + +/** + * @brief Calculate the minimum required size for a given Edje object. + * + * @param obj A handle to an Edje object + * @param minw Pointer to a variable where to store the minimum + * required width + * @param minh Pointer to a variable where to store the minimum + * required height + * @param restrictedw Do not allow object's calculated (minimum) width + * to be less than this value + * @param restrictedh Do not allow object's calculated (minimum) + * height to be less than this value + * + * This call will trigger an internal recalculation of all parts of + * the @p obj object, in order to return its minimum required + * dimensions for width and height. The user might choose to @b impose + * those minimum sizes, making the resulting calculation to get to values + * equal or bigger than @p restrictedw and @p restrictedh, for width and + * height, respectively. + * + * @note At the end of this call, @p obj @b won't be automatically + * resized to new dimensions, but just return the calculated + * sizes. The caller is the one up to change its geometry or not. + * + * @warning Be advised that invisible parts in @p obj @b will be taken + * into account in this calculation. + */ +EAPI void edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh); + +/** + * @brief Check if an Edje part exists in a given Edje object's group + * definition. + * + * @param obj A handle to an Edje object + * @param part The part's name to check for existence in @p obj's + * group + * @return @c EINA_TRUE, if the Edje part exists in @p obj's group or + * @c EINA_FALSE, otherwise (and on errors) + * + * This function returns if a given part exists in the Edje group + * bound to object @p obj (with edje_object_file_set()). + * + * This call is useful, for example, when one could expect or not a + * given GUI element, depending on the @b theme applied to @p obj. + */ +EAPI Eina_Bool edje_object_part_exists (const Evas_Object *obj, const char *part); + +/** + * @brief Get a handle to the Evas object implementing a given Edje + * part, in an Edje object. + * + * @param obj A handle to an Edje object + * @param part The Edje part's name + * @return A pointer to the Evas object implementing the given part, + * or @c NULL on failure (e.g. the given part doesn't exist) + * + * This function gets a pointer of the Evas object corresponding to a + * given part in the @p obj object's group. + * + * You should @b never modify the state of the returned object (with + * @c evas_object_move() or @c evas_object_hide() for example), + * because it's meant to be managed by Edje, solely. You are safe to + * query information about its current state (with @c + * evas_object_visible_get() or @c evas_object_color_get() for + * example), though. + */ +EAPI const Evas_Object *edje_object_part_object_get (const Evas_Object *obj, const char *part); + +/** + * @brief Retrieve the geometry of a given Edje part, in a given Edje + * object's group definition, relative to the object's area + * + * @param obj A handle to an Edje object + * @param part The Edje part's name + * @param x A pointer to a variable where to store the part's x + * coordinate + * @param y A pointer to a variable where to store the part's y + * coordinate + * @param w A pointer to a variable where to store the part's width + * @param h A pointer to a variable where to store the part's height + * + * This function gets the geometry of an Edje part within its + * group. The @p x and @p y coordinates are relative to the top left + * corner of the whole @p obj object's area. + * + * @note Use @c NULL pointers on the geometry components you're not + * interested in: they'll be ignored by the function. + * + * @note On failure, this function will make all non-@c NULL geometry + * pointers' pointed variables be set to zero. + */ +EAPI Eina_Bool edje_object_part_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + + +/** + * @brief Set the function that provides item objects for named items in an edje entry text + * + * @param obj A valid Evas Object handle + * @param func The function to call (or NULL to disable) to get item objects + * @param data The data pointer to pass to the @p func callback + * + * Item objects may be deleted any time by Edje, and will be deleted when the + * Edje object is deleted (or file is set to a new file). + */ +EAPI void edje_object_item_provider_set (Evas_Object *obj, Edje_Item_Provider_Cb func, void *data); + + +/** + * @brief Set the object text callback. + * + * @param obj A valid Evas_Object handle + * @param func The callback function to handle the text change + * @param data The data associated to the callback function. + * + * This function sets the callback to be called when the text changes. + */ +EAPI void edje_object_text_change_cb_set (Evas_Object *obj, Edje_Text_Change_Cb func, void *data); + +/** + * @brief Sets the text for an object part + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text The text string + * + * @return @c EINA_BOOL on success, @c EINA_FALSE otherwise + */ +EAPI Eina_Bool edje_object_part_text_set (Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Sets the text for an object part, but converts HTML escapes to UTF8 + * + * This converts the given string @p text to UTF8 assuming it contains HTML + * style escapes like "&" and "©" etc. IF the part is of type TEXT, + * as opposed to TEXTBLOCK. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text The text string + * + * @return @c EINA_BOOL on success, @c EINA_FALSE otherwise + * + * @since 1.2 + */ +EAPI Eina_Bool edje_object_part_text_escaped_set (Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Return the text of the object part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The text string + * + * This function returns the text associated to the object part. + * + * @see edje_object_part_text_set(). + */ +EAPI const char *edje_object_part_text_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the style of the + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param style The style to set (textblock conventions). + * + * This function sets the style associated with the textblock part. + * + * @since 1.2.0 + */ +EAPI void edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, const char *style); + +/** + * @brief Return the text of the object part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The text string + * + * This function returns the style associated with the textblock part. + * + * @since 1.2.0 + */ +EAPI const char *edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part); + +/** + * @brief Delete the top style form the user style stack. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @since 1.2.0 + */ +EAPI void edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part); + +/** + * @brief Sets the raw (non escaped) text for an object part. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text_to_escape The text string + * + * This funciton will not do escape for you if it is a TEXTBLOCK part, that is, + * if text contain tags, these tags will not be interpreted/parsed by TEXTBLOCK. + * + * @see edje_object_part_text_unescaped_get(). + */ +EAPI Eina_Bool edje_object_part_text_unescaped_set (Evas_Object *obj, const char *part, const char *text_to_escape); + +/** + * @brief Returns the text of the object part, without escaping. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The @b allocated text string without escaping, or NULL on + * problems. + * + * This function is the counterpart of + * edje_object_part_text_unescaped_set(). Please notice that the + * result is newly allocated memory and should be released with free() + * when done. + * + * @see edje_object_part_text_unescaped_set(). + */ +EAPI char *edje_object_part_text_unescaped_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return the selection text of the object part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The text string + * + * This function returns selection text of the object part. + * + * @see edje_object_part_text_select_all() + * @see edje_object_part_text_select_none() + */ +EAPI const char *edje_object_part_text_selection_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the selection to be none. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * This function sets the selection text to be none. + */ +EAPI void edje_object_part_text_select_none (const Evas_Object *obj, const char *part); + +/** + * @brief Set the selection to be everything. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * This function selects all text of the object of the part. + */ +EAPI void edje_object_part_text_select_all (const Evas_Object *obj, const char *part); + +/** + * @brief Insert text for an object part. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text The text string + * + * This function inserts the text for an object part just before the + * cursor position. + * + */ +EAPI void edje_object_part_text_insert (Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Insert text for an object part. + * + * @param obj A valid Evas Object handle + * @param part The part name + * @param text The text string + * + * This function inserts the text for an object part at the end; It does not + * move the cursor. + * + * @since 1.1 + */ +EAPI void edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Return a list of char anchor names. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The list of anchors (const char *), do not modify! + * + * This function returns a list of char anchor names. + * + */ +EAPI const Eina_List *edje_object_part_text_anchor_list_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return a list of Evas_Textblock_Rectangle anchor rectangles. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param anchor The anchor name + * + * @return The list of anchor rects (const Evas_Textblock_Rectangle + * *), do not modify! Geometry is relative to entry part. + * + * This function return a list of Evas_Textblock_Rectangle anchor + * rectangles. + * + */ +EAPI const Eina_List *edje_object_part_text_anchor_geometry_get (const Evas_Object *obj, const char *part, const char *anchor); + +/** + * @brief Return a list of char item names. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The list of items (const char *), do not modify! + * + * This function returns a list of char item names. + * + */ +EAPI const Eina_List *edje_object_part_text_item_list_get (const Evas_Object *obj, const char *part); + +/** + * @brief Return item geometry. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param item The item name + * @param cx Item x return (relative to entry part) + * @param cy Item y return (relative to entry part) + * @param cw Item width return + * @param ch Item height return + * + * @return 1 if item exists, 0 if not + * + * This function return a list of Evas_Textblock_Rectangle item + * rectangles. + * + */ +EAPI Eina_Bool edje_object_part_text_item_geometry_get (const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); + +/** + * @brief Returns the cursor geometry of the part relative to the edje + * object. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param x Cursor X position + * @param y Cursor Y position + * @param w Cursor width + * @param h Cursor height + * + */ +EAPI void edje_object_part_text_cursor_geometry_get (const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h); + +/** + * @brief Deletes the selection and emits a change event. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param text The text string + * @since 1.2.0 + */ +EAPI void edje_object_part_text_user_insert (const Evas_Object *obj, const char *part, const char *text); + +/** + * @brief Enables selection if the entry is an EXPLICIT selection mode + * type. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param allow EINA_TRUE to enable, EINA_FALSE otherwise + * + * The default is to @b not allow selection. This function only affects user + * selection, functions such as edje_object_part_text_select_all() and + * edje_object_part_text_select_none() are not affected. + */ +EAPI void edje_object_part_text_select_allow_set (const Evas_Object *obj, const char *part, Eina_Bool allow); + +/** + * @brief Aborts any selection action on a part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_abort (const Evas_Object *obj, const char *part); + +/** + * @brief Starts selecting at current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_begin (const Evas_Object *obj, const char *part); + +/** + * @brief Extends the current selection to the current cursor position + * + * @param obj A valid Evas_Object handle + * @param part The part name + */ +EAPI void edje_object_part_text_select_extend (const Evas_Object *obj, const char *part); + + +/** + * @brief Advances the cursor to the next cursor position. + * @see evas_textblock_cursor_char_next + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The edje cursor to advance + */ +EAPI Eina_Bool edje_object_part_text_cursor_next (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the previous char + * @see evas_textblock_cursor_char_prev + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_prev (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Move the cursor to the char above the current cursor position. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_up (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the char below the current cursor position. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI Eina_Bool edje_object_part_text_cursor_down (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the beginning of the text part + * @see evas_textblock_cursor_paragraph_first + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Moves the cursor to the end of the text part. + * @see evas_textblock_cursor_paragraph_last + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Copy the cursor to another cursor. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param src the cursor to copy from + * @param dst the cursor to copy to + */ +EAPI void edje_object_part_text_cursor_copy (Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst); + +/** + * @brief Move the cursor to the beginning of the line. + * @see evas_textblock_cursor_line_char_first + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_line_begin_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Move the cursor to the end of the line. + * @see evas_textblock_cursor_line_char_last + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur the edje cursor to work on + */ +EAPI void edje_object_part_text_cursor_line_end_set (Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * Position the given cursor to a X,Y position. + * + * This is frequently used with the user cursor. + * + * @param obj An Edje object. + * @param part The part containing the object. + * @param cur The cursor to adjust. + * @param x X Coordinate. + * @param y Y Coordinate. + * @return True on success, false on error. + */ +EAPI Eina_Bool edje_object_part_text_cursor_coord_set (Evas_Object *obj, const char *part, Edje_Cursor cur, Evas_Coord x, Evas_Coord y); + +/** + * @brief Returns whether the cursor points to a format. + * @see evas_textblock_cursor_is_format + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to adjust. + * @return EINA_TRUE if it's true, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_object_part_text_cursor_is_format_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Return true if the cursor points to a visible format + * For example \\t, \\n, item and etc. + * @see evas_textblock_cursor_format_is_visible_get + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to adjust. + */ +EAPI Eina_Bool edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Returns the content (char) at the cursor position. + * @see evas_textblock_cursor_content_get + * + * You must free the return (if not NULL) after you are done with it. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to use + * @return The character string pointed to (may be a multi-byte utf8 sequence) terminated by a nul byte. + */ +EAPI char *edje_object_part_text_cursor_content_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Sets the cursor position to the given value + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to move + * @param pos the position of the cursor + * @since 1.1.0 + */ +EAPI void edje_object_part_text_cursor_pos_set (Evas_Object *obj, const char *part, Edje_Cursor cur, int pos); + +/** + * @brief Retrieves the current position of the cursor + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cur The cursor to get the position + * @return The cursor position + * @since 1.1.0 + */ +EAPI int edje_object_part_text_cursor_pos_get (const Evas_Object *obj, const char *part, Edje_Cursor cur); + +/** + * @brief Reset the input method context if needed. + * + * This can be necessary in the case where modifying the buffer would confuse on-going input method behavior + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @since 1.2.0 + */ +EAPI void edje_object_part_text_imf_context_reset (const Evas_Object *obj, const char *part); + +/** + * @brief Get the input method context in entry. + * + * If ecore_imf was not available when edje was compiled, this function returns NULL + * otherwise, the returned pointer is an Ecore_IMF * + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return The input method context (Ecore_IMF_Context *) in entry + * @since 1.2.0 + */ +EAPI void *edje_object_part_text_imf_context_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the layout of the input panel. + * + * The layout of the input panel or virtual keyboard can make it easier or + * harder to enter content. This allows you to hint what kind of input you + * are expecting to enter and thus have the input panel automatically + * come up with the right mode. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param layout layout type + * @since 1.1 + */ +EAPI void edje_object_part_text_input_panel_layout_set (Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout); + +/** + * @brief Get the layout of the input panel. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * @return Layout type of the input panel + * + * @see edje_object_part_text_input_panel_layout_set + * @since 1.1 + */ +EAPI Edje_Input_Panel_Layout edje_object_part_text_input_panel_layout_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the autocapitalization type on the immodule. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param autocapital_type The type of autocapitalization + * @since 1.1.0 + */ +EAPI void edje_object_part_text_autocapital_type_set (Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type); + +/** + * @brief Retrieves the autocapitalization type + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The autocapitalization type + * @since 1.1.0 + */ +EAPI Edje_Text_Autocapital_Type edje_object_part_text_autocapital_type_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set whether the prediction is allowed or not. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param prediction If true, the prediction feature is allowed. + * @since 1.2.0 + */ +EAPI void edje_object_part_text_prediction_allow_set (Evas_Object *obj, const char *part, Eina_Bool prediction); + +/** + * @brief Get whether the prediction is allowed or not. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return EINA_TRUE if prediction feature is allowed. + * @since 1.2.0 + */ +EAPI Eina_Bool edje_object_part_text_prediction_allow_get (const Evas_Object *obj, const char *part); + +/** + * @brief Sets the attribute to show the input panel automatically. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param enabled If true, the input panel is appeared when entry is clicked or has a focus + * @since 1.1.0 + */ +EAPI void edje_object_part_text_input_panel_enabled_set (Evas_Object *obj, const char *part, Eina_Bool enabled); + +/** + * @brief Retrieve the attribute to show the input panel automatically. + * @see edje_object_part_text_input_panel_enabled_set + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return EINA_TRUE if it supports or EINA_FALSE otherwise + * @since 1.1.0 + */ +EAPI Eina_Bool edje_object_part_text_input_panel_enabled_get (const Evas_Object *obj, const char *part); + +/** + * @brief Show the input panel (virtual keyboard) based on the input panel property such as layout, autocapital types, and so on. + * + * Note that input panel is shown or hidden automatically according to the focus state. + * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part); + +/** + * @brief Hide the input panel (virtual keyboard). + * @see edje_object_part_text_input_panel_show + * + * Note that input panel is shown or hidden automatically according to the focus state. + * This API can be used in the case of manually controlling by using edje_object_part_text_input_panel_enabled_set. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part); + +/** + * Set the language mode of the input panel. + * + * This API can be used if you want to show the Alphabet keyboard. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param lang the language to be set to the input panel. + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang); + +/** + * Get the language mode of the input panel. + * + * See @ref edje_object_part_text_input_panel_language_set for more details. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return input panel language type + * @since 1.2.0 + */ +EAPI Edje_Input_Panel_Lang edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part); + +/** + * Set the input panel-specific data to deliver to the input panel. + * + * This API is used by applications to deliver specific data to the input panel. + * The data format MUST be negotiated by both application and the input panel. + * The size and format of data are defined by the input panel. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param data The specific data to be set to the input panel. + * @param len the length of data, in bytes, to send to the input panel + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len); + +/** + * Get the specific data of the current active input panel. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param data The specific data to be got from the input panel + * @param len The length of data + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len); + +/** + * Set the "return" key type. This type is used to set string or icon on the "return" key of the input panel. + * + * An input panel displays the string or icon associated with this type + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param return_key_type The type of "return" key on the input panel + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type); + +/** + * Get the "return" key type. + * + * @see edje_object_part_text_input_panel_return_key_type_set() for more details + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The type of "return" key on the input panel + * @since 1.2.0 + */ +EAPI Edje_Input_Panel_Return_Key_Type edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part); + +/** + * Set the return key on the input panel to be disabled. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param disabled The state + * @since 1.2.0 + */ +EAPI void edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled); + +/** + * Get whether the return key on the input panel should be disabled or not. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return EINA_TRUE if it should be disabled + * @since 1.2.0 + */ +EAPI Eina_Bool edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part); + +/** + * Add a filter function for newly inserted text. + * + * Whenever text is inserted (not the same as set) into the given @p part, + * the list of filter functions will be called to decide if and how the new + * text will be accepted. + * There are three types of filters, EDJE_TEXT_FILTER_TEXT, + * EDJE_TEXT_FILTER_FORMAT and EDJE_TEXT_FILTER_MARKUP. + * The text parameter in the @p func filter can be modified by the user and + * it's up to him to free the one passed if he's to change the pointer. If + * doing so, the newly set text should be malloc'ed, as once all the filters + * are called Edje will free it. + * If the text is to be rejected, freeing it and setting the pointer to NULL + * will make Edje break out of the filter cycle and reject the inserted + * text. + * + * @warning This function will be deprecated because of difficulty in use. + * The type(format, text, or markup) of text should be always + * checked in the filter function for correct filtering. + * Please use edje_object_text_markup_filter_callback_add() instead. There + * is no need to check the type of text in the filter function + * because the text is always markup. + * @warning If you use this function with + * edje_object_text_markup_filter_callback_add() together, all + * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions + * will be executed, and then filtered text will be inserted. + * + * @see edje_object_text_insert_filter_callback_del + * @see edje_object_text_insert_filter_callback_del_full + * @see edje_object_text_markup_filter_callback_add + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The callback function that will act as filter + * @param data User provided data to pass to the filter function + */ +EAPI void edje_object_text_insert_filter_callback_add (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); + +/** + * Delete a function from the filter list. + * + * Delete the given @p func filter from the list in @p part. Returns + * the user data pointer given when added. + * + * @see edje_object_text_insert_filter_callback_add + * @see edje_object_text_insert_filter_callback_del_full + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * + * @return The user data pointer if successful, or NULL otherwise + */ +EAPI void *edje_object_text_insert_filter_callback_del (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func); + +/** + * Delete a function and matching user data from the filter list. + * + * Delete the given @p func filter and @p data user data from the list + * in @p part. + * Returns the user data pointer given when added. + * + * @see edje_object_text_insert_filter_callback_add + * @see edje_object_text_insert_filter_callback_del + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * @param data The data passed to the callback function + * + * @return The same data pointer if successful, or NULL otherwise + */ +EAPI void *edje_object_text_insert_filter_callback_del_full (Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data); + +/** + * Add a markup filter function for newly inserted text. + * + * Whenever text is inserted (not the same as set) into the given @p part, + * the list of markup filter functions will be called to decide if and how + * the new text will be accepted. + * The text parameter in the @p func filter is always markup. It can be + * modified by the user and it's up to him to free the one passed if he's to + * change the pointer. If doing so, the newly set text should be malloc'ed, + * as once all the filters are called Edje will free it. + * If the text is to be rejected, freeing it and setting the pointer to NULL + * will make Edje break out of the filter cycle and reject the inserted + * text. + * This function is different from edje_object_text_insert_filter_callback_add() + * in that the text parameter in the @p fucn filter is always markup. + * + * @warning If you use this function with + * edje_object_text_insert_filter_callback_add() togehter, all + * Edje_Text_Filter_Cb functions and Edje_Markup_Filter_Cb functions + * will be executed, and then filtered text will be inserted. + * + * @see edje_object_text_markup_filter_callback_del + * @see edje_object_text_markup_filter_callback_del_full + * @see edje_object_text_insert_filter_callback_add + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The callback function that will act as markup filter + * @param data User provided data to pass to the filter function + * @since 1.2.0 + */ +EAPI void edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data); + +/** + * Delete a function from the markup filter list. + * + * Delete the given @p func filter from the list in @p part. Returns + * the user data pointer given when added. + * + * @see edje_object_text_markup_filter_callback_add + * @see edje_object_text_markup_filter_callback_del_full + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * + * @return The user data pointer if successful, or NULL otherwise + * @since 1.2.0 + */ +EAPI void *edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func); + +/** + * Delete a function and matching user data from the markup filter list. + * + * Delete the given @p func filter and @p data user data from the list + * in @p part. + * Returns the user data pointer given when added. + * + * @see edje_object_text_markup_filter_callback_add + * @see edje_object_text_markup_filter_callback_del + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param func The function callback to remove + * @param data The data passed to the callback function + * + * @return The same data pointer if successful, or NULL otherwise + * @since 1.2.0 + */ +EAPI void *edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data); + +/** + * @brief "Swallows" an object into one of the Edje object @c SWALLOW + * parts. + * + * @param obj A valid Edje object handle + * @param part The swallow part's name + * @param obj_swallow The object to occupy that part + * + * Swallowing an object into an Edje object is, for a given part of + * type @c SWALLOW in the EDC group which gave life to @a obj, to set + * an external object to be controlled by @a obj, being displayed + * exactly over that part's region inside the whole Edje object's + * viewport. + * + * From this point on, @a obj will have total control over @a + * obj_swallow's geometry and visibility. For instance, if @a obj is + * visible, as in @c evas_object_show(), the swallowed object will be + * visible too -- if the given @c SWALLOW part it's in is also + * visible. Other actions on @a obj will also reflect on the swallowed + * object as well (e.g. resizing, moving, raising/lowering, etc.). + * + * Finally, all internal changes to @a part, specifically, will + * reflect on the displaying of @a obj_swallow, for example state + * changes leading to different visibility states, geometries, + * positions, etc. + * + * If an object has already been swallowed into this part, then it + * will first be unswallowed (as in edje_object_part_unswallow()) + * before the new object is swallowed. + * + * @note @a obj @b won't delete the swallowed object once it is + * deleted -- @a obj_swallow will get to an unparented state again. + * + * For more details on EDC @c SWALLOW parts, see @ref edcref "syntax + * reference". + */ +EAPI Eina_Bool edje_object_part_swallow (Evas_Object *obj, const char *part, Evas_Object *obj_swallow); + +/** + * @brief Unswallow an object. + * + * @param obj A valid Evas_Object handle + * @param obj_swallow The swallowed object + * + * Causes the edje to regurgitate a previously swallowed object. :) + * + * @note @p obj_swallow will @b not be deleted or hidden. + * @note @p obj_swallow may appear shown on the evas depending on its state when + * it got unswallowed. Make sure you delete it or hide it if you do not want it to. + */ +EAPI void edje_object_part_unswallow (Evas_Object *obj, Evas_Object *obj_swallow); + +/** + * @brief Get the object currently swallowed by a part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The swallowed object, or NULL if there is none. + */ +EAPI Evas_Object *edje_object_part_swallow_get (const Evas_Object *obj, const char *part); + +/** + * @brief Returns the state of the Edje part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param val_ret + * + * @return The part state:\n + * "default" for the default state\n + * "" for other states + */ +EAPI const char *edje_object_part_state_get (const Evas_Object *obj, const char *part, double *val_ret); + +/** + * @brief Determine dragable directions. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * + * The dragable directions are defined in the EDC file, inside the @c dragable + * section, by the attributes @c x and @c y. See the @ref edcref for more + * information. + * + * @return #EDJE_DRAG_DIR_NONE: Not dragable\n + * #EDJE_DRAG_DIR_X: Dragable in X direction\n + * #EDJE_DRAG_DIR_Y: Dragable in Y direction\n + * #EDJE_DRAG_DIR_XY: Dragable in X & Y directions + */ +EAPI Edje_Drag_Dir edje_object_part_drag_dir_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the dragable object location. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x value + * @param dy The y value + * + * Places the dragable object at the given location. + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1, + * representing the relative position to the dragable area on that axis. + * + * This value means, for the vertical axis, that 0.0 will be at the top if the + * first parameter of @c y in the dragable part theme is 1, and at bottom if it + * is -1. + * + * For the horizontal axis, 0.0 means left if the first parameter of @c x in the + * dragable part theme is 1, and right if it is -1. + * + * @see edje_object_part_drag_value_get() + */ +EAPI Eina_Bool edje_object_part_drag_value_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Get the dragable object location. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The X value pointer + * @param dy The Y value pointer + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1, + * representing the relative position to the dragable area on that axis. + * + * @see edje_object_part_drag_value_set() + * + * Gets the drag location values. + */ +EAPI Eina_Bool edje_object_part_drag_value_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Set the dragable object size. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dw The drag width + * @param dh The drag height + * + * Values for @p dw and @p dh are real numbers that range from 0 to 1, + * representing the relative size of the dragable area on that axis. + * + * Sets the size of the dragable object. + * + * @see edje_object_part_drag_size_get() + */ +EAPI Eina_Bool edje_object_part_drag_size_set (Evas_Object *obj, const char *part, double dw, double dh); + +/** + * @brief Get the dragable object size. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dw The drag width pointer + * @param dh The drag height pointer + * + * Gets the dragable object size. + * + * @see edje_object_part_drag_size_set() + */ +EAPI Eina_Bool edje_object_part_drag_size_get (const Evas_Object *obj, const char *part, double *dw, double *dh); + +/** + * @brief Sets the drag step increment. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step amount + * @param dy The y step amount + * + * Sets the x,y step increments for a dragable object. + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1, + * representing the relative size of the dragable area on that axis by which the + * part will be moved. + * + * @see edje_object_part_drag_step_get() + */ +EAPI Eina_Bool edje_object_part_drag_step_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Gets the drag step increment values. + * + * @param obj A valid Evas_Object handle + * @param part The part + * @param dx The x step increment pointer + * @param dy The y step increment pointer + * + * Gets the x and y step increments for the dragable object. + * + * + * @see edje_object_part_drag_step_set() + */ +EAPI Eina_Bool edje_object_part_drag_step_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Sets the page step increments. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x page step increment + * @param dy The y page step increment + * + * Sets the x,y page step increment values. + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1, + * representing the relative size of the dragable area on that axis by which the + * part will be moved. + * + * @see edje_object_part_drag_page_get() + */ +EAPI Eina_Bool edje_object_part_drag_page_set (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Gets the page step increments. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The dx page increment pointer + * @param dy The dy page increment pointer + * + * Gets the x,y page step increments for the dragable object. + * + * @see edje_object_part_drag_page_set() + */ +EAPI Eina_Bool edje_object_part_drag_page_get (const Evas_Object *obj, const char *part, double *dx, double *dy); + +/** + * @brief Steps the dragable x,y steps. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step + * @param dy The y step + * + * Steps x,y where the step increment is the amount set by + * edje_object_part_drag_step_set. + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1. + * + * @see edje_object_part_drag_page() + */ +EAPI Eina_Bool edje_object_part_drag_step (Evas_Object *obj, const char *part, double dx, double dy); + +/** + * @brief Pages x,y steps. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param dx The x step + * @param dy The y step + * + * Pages x,y where the increment is defined by + * edje_object_part_drag_page_set. + * + * Values for @p dx and @p dy are real numbers that range from 0 to 1. + * + * @warning Paging is bugged! + * + * @see edje_object_part_drag_step() + */ +EAPI Eina_Bool edje_object_part_drag_page (Evas_Object *obj, const char *part, double dx, double dy); + + +/** + * @brief Get the object created by this external part. + * + * Parts of type external creates the part object using information + * provided by external plugins. It's somehow like "swallow" + * (edje_object_part_swallow()), but it's all set automatically. + * + * This function returns the part created by such external plugins and + * being currently managed by this Edje. + * + * @note Almost all swallow rules apply: you should not move, resize, + * hide, show, set the color or clipper of such part. It's a bit + * more restrictive as one must @b never delete this object! + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @return The externally created object, or NULL if there is none or + * part is not an external. + */ +EAPI Evas_Object *edje_object_part_external_object_get (const Evas_Object *obj, const char *part); + +/** + * @brief Set the parameter for the external part. + * + * Parts of type external may carry extra properties that have + * meanings defined by the external plugin. For instance, it may be a + * string that defines a button label and setting this property will + * change that label on the fly. + * + * @note external parts have parameters set when they change + * states. Those parameters will never be changed by this + * function. The interpretation of how state_set parameters and + * param_set will interact is up to the external plugin. + * + * @note this function will not check if parameter value is valid + * using #Edje_External_Param_Info minimum, maximum, valid + * choices and others. However these should be checked by the + * underlying implementation provided by the external + * plugin. This is done for performance reasons. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param param the parameter details, including its name, type and + * actual value. This pointer should be valid, and the + * parameter must exist in + * #Edje_External_Type::parameters_info, with the exact type, + * otherwise the operation will fail and @c EINA_FALSE will be + * returned. + * + * @return @c EINA_TRUE if everything went fine, @c EINA_FALSE on errors. + */ +EAPI Eina_Bool edje_object_part_external_param_set (Evas_Object *obj, const char *part, const Edje_External_Param *param); + +/** + * @brief Get the parameter for the external part. + * + * Parts of type external may carry extra properties that have + * meanings defined by the external plugin. For instance, it may be a + * string that defines a button label. This property can be modified by + * state parameters, by explicit calls to + * edje_object_part_external_param_set() or getting the actual object + * with edje_object_part_external_object_get() and calling native + * functions. + * + * This function asks the external plugin what is the current value, + * independent on how it was set. + * + * @param obj A valid Evas_Object handle + * @param part The part name + + * @param param the parameter details. It is used as both input and + * output variable. This pointer should be valid, and the + * parameter must exist in + * #Edje_External_Type::parameters_info, with the exact type, + * otherwise the operation will fail and @c EINA_FALSE will be + * returned. + * + * @return @c EINA_TRUE if everything went fine and @p param members + * are filled with information, @c EINA_FALSE on errors and @p + * param member values are not set or valid. + */ +EAPI Eina_Bool edje_object_part_external_param_get (const Evas_Object *obj, const char *part, Edje_External_Param *param); + +/** + * @brief Get an object contained in an part of type EXTERNAL + * + * The @p content string must not be NULL. Its actual value depends on the + * code providing the EXTERNAL. + * + * @param obj The Edje object + * @param part The name of the part holding the EXTERNAL + * @param content A string identifying which content from the EXTERNAL to get + */ +EAPI Evas_Object *edje_object_part_external_content_get (const Evas_Object *obj, const char *part, const char *content); + +/** + * Facility to query the type of the given parameter of the given part. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param param the parameter name to use. + * + * @return @c EDJE_EXTERNAL_PARAM_TYPE_MAX on errors, or another value + * from #Edje_External_Param_Type on success. + */ +EAPI Edje_External_Param_Type edje_object_part_external_param_type_get (const Evas_Object *obj, const char *part, const char *param); + + +/** + * @brief Appends an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to append + * + * @return @c EINA_TRUE: Successfully added.\n + * @c EINA_FALSE: An error occurred. + * + * Appends child to the box indicated by part. + * + * @see edje_object_part_box_prepend() + * @see edje_object_part_box_insert_before() + * @see edje_object_part_box_insert_at() + */ +EAPI Eina_Bool edje_object_part_box_append (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Prepends an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to prepend + * + * @return @c EINA_TRUE: Successfully added.\n + * @c EINA_FALSE: An error occurred. + * + * Prepends child to the box indicated by part. + * + * @see edje_object_part_box_append() + * @see edje_object_part_box_insert_before() + * @see edje_object_part_box_insert_at() + */ +EAPI Eina_Bool edje_object_part_box_prepend (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Adds an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to insert + * @param reference The object to be used as reference + * + * @return @c EINA_TRUE: Successfully added.\n + * @c EINA_FALSE: An error occurred. + * + * Inserts child in the box given by part, in the position marked by + * reference. + * + * @see edje_object_part_box_append() + * @see edje_object_part_box_prepend() + * @see edje_object_part_box_insert_at() + */ +EAPI Eina_Bool edje_object_part_box_insert_before (Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference); + +/** + * @brief Inserts an object to the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to insert + * @param pos The position where to insert child + * + * @return @c EINA_TRUE: Successfully added.\n + * @c EINA_FALSE: An error occurred. + * + * Adds child to the box indicated by part, in the position given by + * pos. + * + * @see edje_object_part_box_append() + * @see edje_object_part_box_prepend() + * @see edje_object_part_box_insert_before() + */ +EAPI Eina_Bool edje_object_part_box_insert_at (Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos); + +/** + * @brief Removes an object from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child The object to remove + * + * @return Pointer to the object removed, or @c NULL. + * + * Removes child from the box indicated by part. + * + * @see edje_object_part_box_remove_at() + * @see edje_object_part_box_remove_all() + */ +EAPI Evas_Object *edje_object_part_box_remove (Evas_Object *obj, const char *part, Evas_Object *child); + +/** + * @brief Removes an object from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param pos The position index of the object (starts counting from 0) + * + * @return Pointer to the object removed, or @c NULL. + * + * Removes from the box indicated by part, the object in the position + * pos. + * + * @see edje_object_part_box_remove() + * @see edje_object_part_box_remove_all() + */ +EAPI Evas_Object *edje_object_part_box_remove_at (Evas_Object *obj, const char *part, unsigned int pos); + +/** + * @brief Removes all elements from the box. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param clear Delete objects on removal + * + * @return 1: Successfully cleared.\n + * 0: An error occurred. + * + * Removes all the external objects from the box indicated by part. + * Elements created from the theme will not be removed. + * + * @see edje_object_part_box_remove() + * @see edje_object_part_box_remove_at() + */ +EAPI Eina_Bool edje_object_part_box_remove_all (Evas_Object *obj, const char *part, Eina_Bool clear); + +/** + * @brief Retrieve a list all accessibility part names + * + * @param obj A valid Evas_Object handle + * @return A list all accessibility part names on @p obj + * @since 1.7.0 + */ +EAPI Eina_List * edje_object_access_part_list_get (const Evas_Object *obj); + +/** + * @brief Retrieve a child from a table + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param col The column of the child to get + * @param row The row of the child to get + * @return The child Evas_Object + */ +EAPI Evas_Object *edje_object_part_table_child_get (const Evas_Object *obj, const char *part, unsigned int col, unsigned int row); + +/** + * @brief Packs an object into the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child_obj The object to pack in + * @param col The column to place it in + * @param row The row to place it in + * @param colspan Columns the child will take + * @param rowspan Rows the child will take + * + * @return @c EINA_TRUE object was added, @c EINA_FALSE on failure + * + * Packs an object into the table indicated by part. + */ +EAPI Eina_Bool edje_object_part_table_pack (Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); + +/** + * @brief Removes an object from the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param child_obj The object to pack in + * + * @return @c EINA_TRUE object removed, @c EINA_FALSE on failure + * + * Removes an object from the table indicated by part. + */ +EAPI Eina_Bool edje_object_part_table_unpack (Evas_Object *obj, const char *part, Evas_Object *child_obj); + +/** + * @brief Gets the number of columns and rows the table has. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param cols Pointer where to store number of columns (can be NULL) + * @param rows Pointer where to store number of rows (can be NULL) + * + * @return @c EINA_TRUE get some data, @c EINA_FALSE on failure + * + * Retrieves the size of the table in number of columns and rows. + */ +EAPI Eina_Bool edje_object_part_table_col_row_size_get (const Evas_Object *obj, const char *part, int *cols, int *rows); + +/** + * @brief Removes all object from the table. + * + * @param obj A valid Evas_Object handle + * @param part The part name + * @param clear If set, will delete subobjs on remove + * + * @return @c EINA_TRUE clear the table, @c EINA_FALSE on failure + * + * Removes all object from the table indicated by part, except the + * internal ones set from the theme. + */ +EAPI Eina_Bool edje_object_part_table_clear (Evas_Object *obj, const char *part, Eina_Bool clear); + +/** + * @brief Send an (Edje) message to a given Edje object + * + * @param obj A handle to an Edje object + * @param type The type of message to send to @p obj + * @param id A identification number for the message to be sent + * @param msg The message's body, a struct depending on @p type + * + * This function sends an Edje message to @p obj and to all of its + * child objects, if it has any (swallowed objects are one kind of + * child object). @p type and @p msg @b must be matched accordingly, + * as documented in #Edje_Message_Type. + * + * The @p id argument as a form of code and theme defining a common + * interface on message communication. One should define the same IDs + * on both code and EDC declaration (see @ref edcref "the syntax" for + * EDC files), to individualize messages (binding them to a given + * context). + * + * The function to handle messages arriving @b from @b obj is set with + * edje_object_message_handler_set(). + */ +EAPI void edje_object_message_send (Evas_Object *obj, Edje_Message_Type type, int id, void *msg); + +/** + * @brief Set an Edje message handler function for a given Edje object. + * + * @param obj A handle to an Edje object + * @param func The function to handle messages @b coming from @p obj + * @param data Auxiliary data to be passed to @p func + * + * Edje messages are one of the communication interfaces between + * @b code and a given Edje object's @b theme. With messages, one can + * communicate values beyond strings (which are the subject of Edje + * signals -- see edje_object_signal_emit()), like float and integer + * numbers. Moreover, messages can be identified by integer + * numbers. See #Edje_Message_Type for the full list of message types. + * + * For scriptable programs on an Edje object's defining EDC file which + * send messages with the @c send_message() primitive, one can attach + * handler functions, to be called in the code which creates + * that object (see @ref edcref "the syntax" for EDC files). + * + * This function associates a message handler function and the + * attached data pointer to the object @p obj. + * + * @see edje_object_message_send() + */ +EAPI void edje_object_message_handler_set (Evas_Object *obj, Edje_Message_Handler_Cb func, void *data); + +/** + * @brief Process an object's message queue. + * + * @param obj A handle to an Edje object. + * + * This function goes through the object message queue processing the + * pending messages for @b this specific Edje object. Normally they'd + * be processed only at idle time. + * + */ +EAPI void edje_object_message_signal_process (Evas_Object *obj); + + +/** + * @brief Process all queued up edje messages. + * + * This function triggers the processing of messages addressed to any + * (alive) edje objects. + * + */ +EAPI void edje_message_signal_process (void); + +/** + * Register a type to be used by EXTERNAL parts. + * + * Edje supports parts of type EXTERNAL, which will call user defined functions + * to create and manipulate the object that's allocated in that part. This is + * done by expecifying in the @c source property of the part the name of the + * external to use, which must be one registered with this function. + * + * @param type_name name to register and be known by edje's "source:" + * parameter of "type: EXTERNAL" parts. + * @param type_info meta-information describing how to interact with it. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type already registered). + * + * @see edje_external_type_array_register() + */ +EAPI Eina_Bool edje_external_type_register (const char *type_name, const Edje_External_Type *type_info); + +/** + * Unregister a previously registered EXTERNAL type. + * + * @param type_name name to unregister. It should have been registered with + * edje_external_type_register() before. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type_name did not exist). + * + * @see edje_external_type_array_unregister() + */ +EAPI Eina_Bool edje_external_type_unregister (const char *type_name); + +/** + * Register a batch of types and their information. + * + * When several types will be registered it is recommended to use this + * function instead of several calls to edje_external_type_register(), as it + * is faster. + * + * @note The contents of the array will be referenced directly for as long as + * the type remains registered, so both the @c name and @c info in the + * @p array must be kept alive during all this period (usually, the entire + * program lifetime). The most common case would be to keep the array as a + * @c static @c const type anyway. + * + * @param array @c NULL terminated array with type name and + * information. Note that type name or information are + * referenced directly, so they must be kept alive after + * this function returns! + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (like + * type already registered). + * + * @see edje_external_type_register() + */ +EAPI void edje_external_type_array_register (const Edje_External_Type_Info *array); + +/** + * Unregister a batch of given external type previously registered. + * + * @param array @c NULL terminated array, should be the same as the + * one used to register with edje_external_type_array_register() + * + * @see edje_external_type_unregister() + */ +EAPI void edje_external_type_array_unregister (const Edje_External_Type_Info *array); + +/** + * Return the current ABI version for Edje_External_Type structure. + * + * Always check this number before accessing Edje_External_Type in + * your own software. If the number is not the same, your software may + * access invalid memory and crash, or just get garbage values. + * + * @warning @b NEVER, EVER define your own Edje_External_Type using the + * return of this function as it will change as Edje library + * (libedje.so) changes, but your type definition will + * not. Instead, use #EDJE_EXTERNAL_TYPE_ABI_VERSION. + * + * Summary: + * - use edje_external_type_abi_version_get() to check. + * - use #EDJE_EXTERNAL_TYPE_ABI_VERSION to define/declare. + * + * @return The external ABI version the Edje library was compiled with. That + * is, the value #EDJE_EXTERNAL_TYPE_ABI_VERSION had at that moment. + */ +EAPI unsigned int edje_external_type_abi_version_get (void) EINA_CONST; + +/** + * Returns an interator of all the registered EXTERNAL types. + * + * Each item in the iterator is an @c Eina_Hash_Tuple which has the type + * of the external in the @c key and #Edje_External_Type as @c data. + * + * @code + * const Eina_Hash_Tuple *tuple; + * Eina_Iterator *itr; + * const Eina_List *l, *modules; + * const char *s; + * + * modules = edje_available_modules_get(); + * EINA_LIST_FOREACH(modules, l, s) + * { + * if (!edje_module_load(s)) + * printf("Error loading edje module: %s\n", s); + * } + * + * itr = edje_external_iterator_get(); + * EINA_ITERATOR_FOREACH(itr, tuple) + * { + * const char *name = tuple->key; + * const Edje_External_Type *type = tuple->data; + * + * if ((!type) || + * (type->abi_version != edje_external_type_abi_version_get())) + * { + * printf("Error: invalid type %p (abi: %d, expected: %d)\n", + * type, type ? type->abi_version : 0, + * edje_external_type_abi_version_get()); + * continue; + * } + * + * printf("%s: %s (%s) label='%s' desc='%s'\n", + * name, type->module, type->module_name, + * type->label_get ? type->label_get(type->data) : "", + * type->description_get ? type->description_get(type->data) : ""); + * } + * + * @endcode + */ +EAPI Eina_Iterator *edje_external_iterator_get (void); + +/** + * Conevenience function to find a specific parameter in a list of them. + * + * @param params The list of parameters for the external + * @param key The parameter to look for + * + * @return The matching #Edje_External_Param or NULL if it's not found. + */ + EAPI Edje_External_Param *edje_external_param_find (const Eina_List *params, const char *key); +/** + * Get the value of the given parameter of integer type. + * + * Look for the @p key parameter in the @p params list and return its value in + * @p ret. If the parameter is found and is of type + * #EDJE_EXTERNAL_PARAM_TYPE_INT, its value will be stored in the int pointed + * by @p ret, returning EINA_TRUE. In any other case, the function returns + * EINA_FALSE. + * + * @param params List of parameters where to look + * @param key Name of the parameter to fetch + * @param ret Int pointer where to store the value, must not be NULL. + * + * @return EINA_TRUE if the parameter was found and is of integer type, + * EINA_FALSE otherwise. + */ + EAPI Eina_Bool edje_external_param_int_get (const Eina_List *params, const char *key, int *ret); +/** + * Get the value of the given parameter of double type. + * + * Look for the @p key parameter in the @p params list and return its value in + * @p ret. If the parameter is found and is of type + * #EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, its value will be stored in the double + * pointed by @p ret, returning EINA_TRUE. In any other case, the function + * returns EINA_FALSE. + * + * @param params List of parameters where to look + * @param key Name of the parameter to fetch + * @param ret Double pointer where to store the value, must not be NULL. + * + * @return EINA_TRUE if the parameter was found and is of double type, + * EINA_FALSE otherwise. + */ + EAPI Eina_Bool edje_external_param_double_get (const Eina_List *params, const char *key, double *ret); +/** + * Get the value of the given parameter of string type. + * + * Look for the @p key parameter in the @p params list and return its value in + * @p ret. If the parameter is found and is of type + * #EDJE_EXTERNAL_PARAM_TYPE_STRING, its value will be stored in the pointer + * pointed by @p ret, returning EINA_TRUE. In any other case, the function + * returns EINA_FALSE. + * + * The string stored in @p ret must not be freed or modified. + * + * @param params List of parameters where to look + * @param key Name of the parameter to fetch + * @param ret String pointer where to store the value, must not be NULL. + * + * @return EINA_TRUE if the parameter was found and is of string type, + * EINA_FALSE otherwise. + */ + EAPI Eina_Bool edje_external_param_string_get (const Eina_List *params, const char *key, const char **ret); +/** + * Get the value of the given parameter of boolean type. + * + * Look for the @p key parameter in the @p params list and return its value in + * @p ret. If the parameter is found and is of type + * #EDJE_EXTERNAL_PARAM_TYPE_BOOL, its value will be stored in the Eina_Bool + * pointed by @p ret, returning EINA_TRUE. In any other case, the function + * returns EINA_FALSE. + * + * @param params List of parameters where to look + * @param key Name of the parameter to fetch + * @param ret Eina_Bool pointer where to store the value, must not be NULL. + * + * @return EINA_TRUE if the parameter was found and is of boolean type, + * EINA_FALSE otherwise. + */ + EAPI Eina_Bool edje_external_param_bool_get (const Eina_List *params, const char *key, Eina_Bool *ret); +/** + * Get the value of the given parameter of choice type. + * + * Look for the @p key parameter in the @p params list and return its value in + * @p ret. If the parameter is found and is of type + * #EDJE_EXTERNAL_PARAM_TYPE_CHOICE, its value will be stored in the string + * pointed by @p ret, returning EINA_TRUE. In any other case, the function + * returns EINA_FALSE. + * + * The string stored in @p ret must not be freed or modified. + * + * @param params List of parameters where to look + * @param key Name of the parameter to fetch + * @param ret String pointer where to store the value, must not be NULL. + * + * @return EINA_TRUE if the parameter was found and is of integer type, + * EINA_FALSE otherwise. + */ + EAPI Eina_Bool edje_external_param_choice_get (const Eina_List *params, const char *key, const char **ret); + +/** + * Get the array of parameters information about a type given its name. + * + * @note the type names and other strings are static, that means they are + * @b NOT translated. One must use + * Edje_External_Type::translate() to translate those. + * + * @return the NULL terminated array, or @c NULL if type is unknown or + * it does not have any parameter information. + * + * @see edje_external_type_get() + */ +EAPI const Edje_External_Param_Info *edje_external_param_info_get (const char *type_name); + +/** + * Get the #Edje_External_Type that defines an EXTERNAL type registered with + * the name @p type_name. + */ + EAPI const Edje_External_Type *edje_external_type_get (const char *type_name); + + EAPI Eina_Bool edje_module_load (const char *module); + EAPI const Eina_List *edje_available_modules_get (void); + + /* perspective info for maps inside edje objects */ + typedef struct _Edje_Perspective Edje_Perspective; + + /** + * Creates a new perspective in the given canvas. + * + * @param e The given canvas (Evas). + * @return An @ref Edje_Perspective object for this canvas, or @c NULL on errors. + * + * This function creates a perspective object that can be set on an Edje + * object, or globally to all Edje objects on this canvas. + * + * @see edje_perspective_set() + * @see edje_perspective_free() + */ + EAPI Edje_Perspective *edje_perspective_new (Evas *e); + /** + * Delete the given perspective object. + * + * @param ps A valid perspective object, or @c NULL. + * + * This function will delete the perspective object. If the perspective + * effect was being applied to any Edje object or part, this effect won't be + * applied anymore. + * + * @see edje_perspective_new() + */ + EAPI void edje_perspective_free (Edje_Perspective *ps); + /** + * Setup the transform for this perspective object. + * + * This sets the parameters of the perspective transformation. X, Y and Z + * values are used. The px and py points specify the "infinite distance" point + * in the 3D conversion (where all lines converge to like when artists draw + * 3D by hand). The @p z0 value specifies the z value at which there is a 1:1 + * mapping between spatial coordinates and screen coordinates. Any points + * on this z value will not have their X and Y values modified in the transform. + * Those further away (Z value higher) will shrink into the distance, and + * those less than this value will expand and become bigger. The @p foc value + * determines the "focal length" of the camera. This is in reality the distance + * between the camera lens plane itself (at or closer than this rendering + * results are undefined) and the "z0" z value. This allows for some "depth" + * control and @p foc must be greater than 0. + * + * @param ps The perspective object + * @param px The perspective distance X coordinate + * @param py The perspective distance Y coordinate + * @param z0 The "0" z plane value + * @param foc The focal distance + */ + EAPI void edje_perspective_set (Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc); + /** + * Make this perspective object be global for its canvas. + * + * @param ps The given perspective object + * @param global @c EINA_TRUE if the perspective should be global, @c + * EINA_FALSE otherwise. + * + * The canvas which this perspective object is being set as global is the one + * given as argument upon the object creation (the @p evas parameter on the + * function @c edje_perspective_new(evas) ). + * + * There can be only one global perspective object set per canvas, and if + * a perspective object is set to global when there was already another + * global perspective set, the old one will be set as non-global. + * + * A global perspective just affects a part if its Edje object doesn't have a + * perspective object set to it, and if the part doesn't point to another + * part to be used as perspective. + * + * @see edje_object_perspective_set() + * @see edje_perspective_global_get() + * @see edje_perspective_new() + */ + EAPI void edje_perspective_global_set (Edje_Perspective *ps, Eina_Bool global); + /** + * Get whether the given perspective object is global or not. + * + * @param ps The given perspective object. + * @return @c EINA_TRUE if this perspective object is global, @c EINA_FALSE + * otherwise. + * + * @see edje_perspective_global_set() + */ + EAPI Eina_Bool edje_perspective_global_get (const Edje_Perspective *ps); + /** + * Get the global perspective object set for this canvas. + * + * @param e The given canvas (Evas). + * @return The perspective object set as global for this canvas. Or @c NULL + * if there is no global perspective set and on errors. + * + * This function will return the perspective object that was set as global + * with edje_perspective_global_set(). + * + * @see edje_perspective_global_set() + * @see edje_perspective_global_get() + */ + EAPI const Edje_Perspective *edje_evas_global_perspective_get(const Evas *e); + /** + * Set the given perspective object on this Edje object. + * + * @param obj The Edje object on the perspective will be set. + * @param ps The perspective object that will be used. + * + * Make the given perspective object be the default perspective for this Edje + * object. + * + * There can be only one perspective object per Edje object, and if a + * previous one was set, it will be removed and the new perspective object + * will be used. + * + * An Edje perspective will only affect a part if it doesn't point to another + * part to be used as perspective. + * + * @see edje_object_perspective_new() + * @see edje_object_perspective_get() + * @see edje_perspective_set() + */ + EAPI void edje_object_perspective_set (Evas_Object *obj, Edje_Perspective *ps); + /** + * Get the current perspective used on this Edje object. + * + * @param obj the given Edje object. + * @return The perspective object being used on this Edje object. Or @c NULL + * if there was none, and on errors. + * + * @see edje_object_perspective_set() + */ + EAPI const Edje_Perspective *edje_object_perspective_get (const Evas_Object *obj); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/lib/Edje_Edit.h b/src/lib/Edje_Edit.h new file mode 100644 index 0000000..935d661 --- /dev/null +++ b/src/lib/Edje_Edit.h @@ -0,0 +1,3539 @@ +#ifndef _EDJE_EDIT_H +#define _EDJE_EDIT_H + +#ifndef EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT +#error "Do not use the Edje_Edit API unless you know what you are doing. It's meant only for writing editors and nothing else." +#endif + +#include + +#ifdef EAPI +# undef EAPI +#endif + +#ifdef _WIN32 +# ifdef EFL_EDJE_BUILD +# ifdef DLL_EXPORT +# define EAPI __declspec(dllexport) +# else +# define EAPI +# endif /* ! DLL_EXPORT */ +# else +# define EAPI __declspec(dllimport) +# endif /* ! EFL_EDJE_BUILD */ +#else +# ifdef __GNUC__ +# if __GNUC__ >= 4 +# define EAPI __attribute__ ((visibility("default"))) +# else +# define EAPI +# endif +# else +# define EAPI +# endif +#endif + + +typedef enum _Edje_Edit_Image_Comp +{ + EDJE_EDIT_IMAGE_COMP_RAW, + EDJE_EDIT_IMAGE_COMP_USER, + EDJE_EDIT_IMAGE_COMP_COMP, + EDJE_EDIT_IMAGE_COMP_LOSSY +} Edje_Edit_Image_Comp; + +struct _Edje_Edit_Script_Error +{ + const char *program_name; /* null == group shared script */ + int line; + const char *error_str; +}; +typedef struct _Edje_Edit_Script_Error Edje_Edit_Script_Error; + +/** + * @file + * @brief Functions to deal with edje internal object. Don't use in standard + * situations. The use of any of the edje_edit_* functions can break your + * theme ability, remember that the program must be separated from the interface! + * + * This was intended ONLY for use in an actual edje editor program. Unless + * you are writing one of these, do NOT use this API here. + * + * The API can be used to query or set every part of an edje object in real time. + * You can manage every aspect of parts, part states, programs, script and whatever + * is contained in the edje file. For a reference of what all parameter means + * look at the complete @ref edcref. + * + * Don't forget to free all the strings and the lists returned by any edje_edit_*() + * functions using edje_edit_string_free() and edje_edit_string_list_free() when + * you don't need anymore. + * + * Example: print all the part in a loaded edje_object + * @code + * Eina_List *parts, *l; + * char *part; + * + * parts = edje_edit_parts_list_get(edje_object); + * EINA_LIST_FOREACH(parts, l, part) + * { + * printf("Part: %s\n", part); + * } + * edje_edit_string_list_free(parts); + * @endcode + * + * Example: Change the color of a rect inside an edje file + * @code + * Evas_Object *edje; + * + * edje = edje_edit_object_add(evas); + * edje_object_file_set(edje, "edj/file/name", "group to load"); + * edje_edit_state_color_set(edje, "MyRectName", "default", 0.00, 255, 255, 0, 255); + * edje_edit_save(edje); + * @endcode + * +*/ + + +#ifdef __cplusplus +extern "C" { +#endif + +/******************************************************************************/ +/************************** GENERAL API ***********************************/ +/******************************************************************************/ +/** @name General API + * General functions that don't fit in other cateories. + */ //@{ + +/** Adds an editable Edje object to the canvas. + * + * An Edje_Edit object is, for the most part, a standard Edje object. Only + * difference is you can use the Edje_Edit API on them. + * + * @param e Evas canvas where to add the object. + * + * @return An Evas_Object of type Edje_Edit, or NULL if an error occurred. + */ +EAPI Evas_Object * edje_edit_object_add(Evas *e); + +/** Free a generic Eina_List of (char *) allocated by an edje_edit_*_get() function. + * + * @param lst List of strings to free. + */ +EAPI void edje_edit_string_list_free(Eina_List *lst); + +/** Free a generic string (char *) allocated by an edje_edit_*_get() function. + * + * @param str String to free. + */ +EAPI void edje_edit_string_free(const char *str); + +/** Get the name of the program that compiled the edje file. + * Can be 'edje_cc' or 'edje_edit' + * + * @param obj Object being edited. + * + * @return Compiler stored in the Edje file + */ +EAPI const char * edje_edit_compiler_get(Evas_Object *obj); + +/** Save the modified edje object back to his file. + * + * Use this function when you are done with your editing, all the change made + * to the current loaded group will be saved back to the original file. + * + * @note Source for the whole file will be auto generated and will overwrite + * any previously stored source. + * + * @param obj Object to save back to the file it was loaded from. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * + * @todo Add a way to check what the error actually was, the way Edje Load does. + */ +EAPI Eina_Bool edje_edit_save(Evas_Object *obj); + +/** Saves every group back into the file. + * + * @param obj Object to save. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * + * @see edje_edit_save() + */ +EAPI Eina_Bool edje_edit_save_all(Evas_Object *obj); + +/** Print on standard output many information about the internal status + * of the edje object. + * + * This is probably only useful to debug. + * + * @param obj Object being edited. + */ +EAPI void edje_edit_print_internal_status(Evas_Object *obj); + + +//@} +/******************************************************************************/ +/************************** GROUPS API ************************************/ +/******************************************************************************/ +/** @name Groups API + * Functions to deal with groups property (see @ref edcref). + */ //@{ + +/** Create a new empty group in the given edje. + * + * If a group with the same name exist none is created. + * + * @param obj Object being edited. + * @param name Name of the new group. + * + * @return EINA_TRUE if successfully added the group, EINA_FALSE if an error + * occurred or if a group with the same name exists. + */ + +/** + * @brief Add an edje (empty) group to an edje object's group set. + * + * @param obj The pointer to edje object. + * @param name The name of the group. + * + * @return 1 If it could allocate memory to the part group added + * or zero if not. + * + * This function adds, at run time, one more group, which will reside + * in memory, to the group set found in the .edj file which @a obj was + * loaded with. This group can be manipulated by other API functions, + * like @c edje_edit_part_add(), for example. If desired, the new + * group can be actually committed the respective .edj by use of @c + * edje_edit_save(). + * + */ +EAPI Eina_Bool edje_edit_group_add(Evas_Object *obj, const char *name); + +/** Delete the specified group from the given edje. + * + * You can only delete a currently unused group. + * All the parts and the programs inside the group will be deleted as well, + * but not image or font embedded in the edje. + * + * @param obj Object being edited. + * @param group_name Name of group to delete. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ + +/** + * @brief Delete the specified group from the edje file. + * + * @param obj The pointer to the edje object. + * @param group_name Group to delete. + * + * @return @c EINA_TRUE on success, @c EINA_FALSE on failure. + * + * This function deletes the given group from the file @a obj is set to. This + * operation can't be undone as all references to the group are removed from + * the file. + * This function may fail if the group to be deleted is currently in use. + * + */ +EAPI Eina_Bool edje_edit_group_del(Evas_Object *obj, const char *group_name); + +/** Check if a group with the given name exist in the edje. + * + * @param obj Object being edited. + * @param group Group name to check for. + * + * @return EINA_TRUE if group exists, EINA_FALSE if not. + */ +EAPI Eina_Bool edje_edit_group_exist(Evas_Object *obj, const char *group); + +/** Set a new name for the current open group. + * + * You can only rename a group that is currently loaded + * Note that the relative getter function don't exist as it doesn't make sense ;) + * @param obj Object being edited. + * @param new_name New name for the group. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_group_name_set(Evas_Object *obj, const char *new_name); + +/** Get the group minimum width. + * + * @param obj Object being edited. + * + * @return The minimum width set for the group. -1 if an error occurred. + */ +EAPI int edje_edit_group_min_w_get(Evas_Object *obj); + +/** Set the group minimum width. + * + * @param obj Object being edited. + * @param w New minimum width for the group. + */ +EAPI void edje_edit_group_min_w_set(Evas_Object *obj, int w); + +/** Get the group minimum height. + * + * @param obj Object being edited. + * + * @return The minimum height set for the group. -1 if an error occurred. + */ +EAPI int edje_edit_group_min_h_get(Evas_Object *obj); + +/** Set the group minimum height. + * + * @param obj Object being edited. + * @param h New minimum height for the group. + */ +EAPI void edje_edit_group_min_h_set(Evas_Object *obj, int h); + +/** Get the group maximum width. + * + * @param obj Object being edited. + * + * @return The maximum width set for the group. -1 if an error occurred. + */ +EAPI int edje_edit_group_max_w_get(Evas_Object *obj); + +/** Set the group maximum width. + * + * @param obj Object being edited. + * @param w New maximum width for the group. + */ +EAPI void edje_edit_group_max_w_set(Evas_Object *obj, int w); + +/** Get the group maximum height. + * + * @param obj Object being edited. + * + * @return The maximum height set for the group. -1 if an error occurred. + */ +EAPI int edje_edit_group_max_h_get(Evas_Object *obj); + +/** Set the group maximum height. + * + * @param obj Object being edited. + * @param h New maximum height for the group. + */ +EAPI void edje_edit_group_max_h_set(Evas_Object *obj, int h); + + +//@} +/******************************************************************************/ +/************************** DATA API **************************************/ +/******************************************************************************/ +/** @name Data API + * Functions to deal with data embedded in the edje (see @ref edcref). + */ //@{ + +/** Retrieves a list with the item names inside the data block. + * + * @param obj Object being edited. + * + * @return List of strings, each being a name entry in the global data block for the file. + */ +EAPI Eina_List * edje_edit_data_list_get(Evas_Object *obj); + +/** Create a new *global* data object in the given edje file. + * + * If another data entry with the same name exists, nothing is created and + * EINA_FALSE is returned. + * + * @param obj Object being edited. + * @param itemname Name for the new data entry. + * @param value Value for the new data entry. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_data_add(Evas_Object *obj, const char *itemname, const char *value); + +/** Delete the given data object from edje. + * + * @param obj Object being edited. + * @param itemname Data entry to remove from the global data block. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_data_del(Evas_Object *obj, const char *itemname); + +/** Get the data associated with the given itemname. + * + * @param obj Object being edited. + * @param itemname Name of the data entry to fetch the value for. + * + * @return Value of the given entry, or NULL if not found. + */ +EAPI const char * edje_edit_data_value_get(Evas_Object *obj, const char *itemname); + +/** Set the data associated with the given itemname. + * + * @param obj Object being edited. + * @param itemname Name of data entry to change the value. + * @param value New value for the entry. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_data_value_set(Evas_Object *obj, const char *itemname, const char *value); + +/** Change the name of the given data object. + * + * @param obj Object being edited. + * @param itemname Data entry to rename. + * @param newname New name for the data entry. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_data_name_set(Evas_Object *obj, const char *itemname, const char *newname); + +/** Retrieves a list with the item names inside the data block at the group level. + * + * @param obj Object being edited. + * + * @return List of strings, each being a name entry in the data block for the group. + */ +EAPI Eina_List * edje_edit_group_data_list_get(Evas_Object *obj); + +/** Create a new data object in the given edje file *belonging to the current group*. + * + * If another data entry with the same name exists, + * nothing is created and EINA_FALSE is returned. + * + * @param obj Object being edited. + * @param itemname Name for the new data entry. + * @param value Value for the new data entry. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_group_data_add(Evas_Object *obj, const char *itemname, const char *value); + +/** Delete the given data object from the group. + * + * @param obj Object being edited. + * @param itemname Name of the data entry to remove. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_group_data_del(Evas_Object *obj, const char *itemname); + +/** Get the data associated with the given itemname. + * + * @param obj Object being edited. + * @param itemname Name of the data entry. + * + * @return Value of the data entry or NULL if not found. + */ +EAPI const char * edje_edit_group_data_value_get(Evas_Object *obj, const char *itemname); + +/** Set the data associated with the given itemname. + * + * @param obj Object being edited. + * @param itemname Name of the data entry to set the value. + * @param value Value to set for the data entry. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_group_data_value_set(Evas_Object *obj, const char *itemname, const char *value); + +/** Change the name of the given data object. + * + * @param obj Object being edited. + * @param itemname Name of the data entry to rename. + * @param newname New name for the data entry. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_group_data_name_set(Evas_Object *obj, const char *itemname, const char *newname); + + +//@} +/******************************************************************************/ +/*********************** COLOR CLASSES API ********************************/ +/******************************************************************************/ +/** @name Color Classes API + * Functions to deal with Color Classes (see @ref edcref). + */ //@{ + +/** Get the list of all the Color Classes in the given edje object. + * + * @param obj Object being edited. + * + * @return List of strings, each being one color class. + */ +EAPI Eina_List * edje_edit_color_classes_list_get(Evas_Object *obj); + +/** Create a new color class object in the given edje. + * + * If another class with the same name exists nothing is created and EINA_FALSE is returned. + * + * @param obj Object being edited. + * @param name Name for the new color class. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_color_class_add(Evas_Object *obj, const char *name); + +/** Delete the given class object from edje. + * + * @param obj Object being edited. + * @param name Color class to delete. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_color_class_del(Evas_Object *obj, const char *name); + +/** Get all the colors that compose the class. + * + * You can pass NULL to colors you are not intrested in. + * + * @param obj Object being edited. + * @param class_name Color class to fetch values. + * @param r Red component of main color. + * @param g Green component of main color. + * @param b Blue component of main color. + * @param a Alpha component of main color. + * @param r2 Red component of secondary color. + * @param g2 Green component of secondary color. + * @param b2 Blue component of secondary color. + * @param a2 Alpha component of secondary color. + * @param r3 Red component of tertiary color. + * @param g3 Green component of tertiary color. + * @param b3 Blue component of tertiary color. + * @param a3 Alpha component of tertiary color. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_color_class_colors_get(Evas_Object *obj, const char *class_name, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3); + +/** Set the colors for the given color class. + * + * If you set a color to -1 it will not be touched. + * + * @param obj Object being edited. + * @param class_name Color class to fetch values. + * @param r Red component of main color. + * @param g Green component of main color. + * @param b Blue component of main color. + * @param a Alpha component of main color. + * @param r2 Red component of secondary color. + * @param g2 Green component of secondary color. + * @param b2 Blue component of secondary color. + * @param a2 Alpha component of secondary color. + * @param r3 Red component of tertiary color. + * @param g3 Green component of tertiary color. + * @param b3 Blue component of tertiary color. + * @param a3 Alpha component of tertiary color. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_color_class_colors_set(Evas_Object *obj, const char *class_name, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3); + +/** Change the name of a color class. + * + * @param obj Object being edited. + * @param name Color class to rename. + * @param newname New name for the color class. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_color_class_name_set(Evas_Object *obj, const char *name, const char *newname); + +//@} + + +/******************************************************************************/ +/************************** TEXT STYLES *************************************/ +/******************************************************************************/ +/** @name Text styles API + * Functions to deal with text styles (see @ref edcref). + */ //@{ + +/** Get the list of all the text styles in the given edje object. + * + * @param obj Object being edited. + * + * @return List of strings, each being the name for a text style. + */ +EAPI Eina_List * edje_edit_styles_list_get(Evas_Object *obj); + +/** Create a new text style object in the given edje. + * + * If another style with the same name exists nothing is created and EINA_FALSE is returned. + * + * @param obj Object being edited. + * @param style Name for the new style. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_style_add(Evas_Object *obj, const char *style); + +/** Delete the given text style and all the child tags. + * + * @param obj Object being edited. + * @param style Style to delete. + */ +EAPI void edje_edit_style_del(Evas_Object *obj, const char *style); + +/** Get the list of all the tags name in the given text style. + * + * @param obj Object being edited. + * @param style Style to get the tags for. + * + * @return List of strings, each being one tag in the given style. + */ +EAPI Eina_List * edje_edit_style_tags_list_get(Evas_Object *obj, const char *style); + +/** Get the value of the given tag. + * + * @param obj Object being edited. + * @param style Style containing the tag being. + * @param tag Tag to get the value for. + * + * @return Value of the given tag. + */ +EAPI const char * edje_edit_style_tag_value_get(Evas_Object *obj, const char *style, const char *tag); + +/** Set the value of the given tag. + * + * @param obj Object being edited. + * @param style Style containing the tag to change. + * @param tag Name of the tag to set the value for. + * @param new_value Value for the tag. + */ +EAPI void edje_edit_style_tag_value_set(Evas_Object *obj, const char *style, const char *tag, const char *new_value); + +/** Set the name of the given tag. + * + * @param obj Object being edited. + * @param style Style containing the tag to rename. + * @param tag Tag to rename. + * @param new_name New name for the tag. + */ +EAPI void edje_edit_style_tag_name_set(Evas_Object *obj, const char *style, const char *tag, const char *new_name); + +/** Add a new tag to the given text style. + * + * If another tag with the same name exists nothing is created and EINA_FALSE is returned. + * + * @param obj Object being edited. + * @param style Style where to add the new tag. + * @param tag_name Name for the new tag. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_style_tag_add(Evas_Object *obj, const char *style, const char *tag_name); + +/** Delete the given tag. + * + * @param obj Object being edited. + * @param style Style from where to remove the tag. + * @param tag Tag to delete. + */ +EAPI void edje_edit_style_tag_del(Evas_Object *obj, const char *style, const char *tag); + + +//@} +/******************************************************************************/ +/************************ EXTERNALS API ***********************************/ +/******************************************************************************/ +/** @name Externals API + * Functions to deal with list of external modules (see @ref edcref). + */ //@{ + +/** Get the list of all the externals requested in the given edje object. + * + * @param obj Object being edited. + * + * @return List of strings, each being an entry in the block of automatically loaded external modules. + */ +EAPI Eina_List * edje_edit_externals_list_get(Evas_Object *obj); + +/** Add an external module to be requested on edje load. + * + * @param obj Object being edited. + * @param external Name of the external module to add to the list of autoload. + * + * @return EINA_TRUE on success (or it was already there), EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_external_add(Evas_Object *obj, const char *external); + +/** Delete the given external from the list. + * + * @param obj Object being edited. + * @param external Name of the external module to remove from the autoload list. + * + * @return EINA_TRUE on success, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_external_del(Evas_Object *obj, const char *external); + + +//@} +/******************************************************************************/ +/************************** PARTS API *************************************/ +/******************************************************************************/ +/** @name Parts API + * Functions to deal with part objects (see @ref edcref). + */ //@{ + +/** Get the list of all the parts in the given edje object. + * + * @param obj Object being edited. + * + * @return List of strings, each being the name for a part in the open group. + */ +EAPI Eina_List * edje_edit_parts_list_get(Evas_Object *obj); + +/** Create a new part in the given edje. + * + * If another part with the same name just exists nothing is created and EINA_FALSE is returned. + * Note that this function also create a default description for the part. + * + * @param obj Object being edited. + * @param name Name for the new part. + * @param type Type of the new part. See @ref edcref for more info on this. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type); + +/** Create a new part of type EXTERNAL in the given edje. + * + * If another part with the same name just exists nothing is created and EINA_FALSE is returned. + * Note that this function also create a default description for the part. + * + * @param obj Object being edited. + * @param name Name for the new part. + * @param source The registered external type to use for this part. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_external_add(Evas_Object *obj, const char *name, const char *source); + +/** Delete the given part from the edje. + * + * All the reference to this part will be zeroed. + * + * @param obj Object being edited. + * @param part Name of part to delete. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_del(Evas_Object *obj, const char *part); + +/** Check if a part with the given name exist in the edje object. + * + * @param obj Object being edited. + * @param part Name of part to check for its existence. + * + * @return EINA_TRUE if the part exists, EINA_FALSE if not. + */ +EAPI Eina_Bool edje_edit_part_exist(Evas_Object *obj, const char *part); + +/** Get the name of part stacked above the one passed. + * + * @param obj Object being edited. + * @param part Name of part of which to check the one above. + * + * @return Name of the part above. NULL if an error occurred or if @p part is + * the topmost part in the group. + */ +EAPI const char * edje_edit_part_above_get(Evas_Object *obj, const char *part); + +/** Get the name of part stacked below the one passed. + * + * @param obj Object being edited. + * @param part Name of part of which to check the one below. + * + * @return Name of the part below. NULL if an error occurred or if @p part is + * the bottommost part in the group. + */ +EAPI const char * edje_edit_part_below_get(Evas_Object *obj, const char *part); + +/** Move the given part below the previous one. + * + * @param obj Object being edited. + * @param part Name of part to move one step below. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_restack_below(Evas_Object *obj, const char *part); + +/** Move the given part above the next one. + * + * @param obj Object being edited. + * @param part Name of part to move one step above. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_restack_above(Evas_Object *obj, const char *part); + +/** Set a new name for part. + * + * Note that the relative getter function don't exist as it don't make sense ;) + * + * @param obj Object being edited. + * @param part Name of part to rename. + * @param new_name New name for the given part. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_name_set(Evas_Object *obj, const char *part, const char *new_name); + +/** Get api's name of a part. + * + * @param obj Object being edited. + * @param part Name of the part. + * + * @return name of the api if successful, NULL otherwise. + */ +EAPI const char * edje_edit_part_api_name_get(Evas_Object *obj, const char *part); + +/** Get api's description of a part. + * + * @param obj Object being edited. + * @param part Name of the part. + * + * @return description of the api if successful, NULL otherwise. + */ +EAPI const char * edje_edit_part_api_description_get(Evas_Object *obj, const char *part); + +/** Set api's name of a part. + * + * @param obj Object being edited. + * @param part Name of the part. + * @param name New name for the api property. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_api_name_set(Evas_Object *obj, const char *part, const char *name); + +/** Set api's description of a part. + * + * @param obj Object being edited. + * @param part Name of part. + * @param description New description for the api property. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_api_description_set(Evas_Object *obj, const char *part, const char *description); + +/** Get the type of a part. + * + * @param obj Object being edited. + * @param part Name of part to get the type of. + * + * @return Type of the part. See @ref edcref for details. + */ +EAPI Edje_Part_Type edje_edit_part_type_get(Evas_Object *obj, const char *part); + +/** Get the clip_to part. + * + * @param obj Object being edited. + * @param part Name of the part whose clipper to get. + * + * @return Name of the part @p part is clipped to. NULL is returned on errors and if the part don't have a clip. + */ +EAPI const char * edje_edit_part_clip_to_get(Evas_Object *obj, const char *part); + +/** Set a part to clip part to. + * + * @param obj Object being edited. + * @param part Part to set the clipper to. + * @param clip_to Part to use as clipper, if NULL then the clipping value will be cancelled (unset clipping). + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_clip_to_set(Evas_Object *obj, const char *part, const char *clip_to); + +/** Get the source of part. + * + * The meaning of this parameter varies depending on the type of the part. + * For GROUP parts, it's the name of another group in the Edje file which will + * be autoloaded and swallowed on this part. + * For TEXTBLOCK parts, it's the name of a group to be used for selection + * display under the text. + * For EXTERNAL parts, it's the name of the registered external widget to load + * and swallow on this part. + * + * @param obj Object being edited. + * @param part Part to get the source from. + * + * @return Content of the source parameter or NULL if nothing set or an error occurred. + */ +EAPI const char * edje_edit_part_source_get(Evas_Object *obj, const char *part); + +/** Set the source of part. + * + * @param obj Object being edited. + * @param part Part to set the source of. + * @param source Value for the source parameter. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + * + * @see edje_edit_part_source_get() + * + * @note You can't change the source for EXTERNAL parts, it's akin to changing + * the type of the part. + * + * NOTE: This is not applied now. You must reload the edje to see the change. + */ +EAPI Eina_Bool edje_edit_part_source_set(Evas_Object *obj, const char *part, const char *source); + +/** Get the effect for a given part. + * + * Gets the effect used for parts of type TEXT. See @ref edcref for more details. + * + * @param obj Object being edited. + * @param part Part to get the effect of. + * + * @return The effect set for the part. + */ +EAPI Edje_Text_Effect edje_edit_part_effect_get(Evas_Object *obj, const char *part); + +/** Set the effect for a given part. + * + * @param obj Object being edited. + * @param part Part to set the effect to. Only makes sense on type TEXT. + * @param effect Effect to set for the part. + */ +EAPI void edje_edit_part_effect_set(Evas_Object *obj, const char *part, Edje_Text_Effect effect); + +/** Get the current selected state in part. + * + * @param obj Object being edited. + * @param part Part to get the selected state of. + * @param value Pointer to a double where the value of the state will be stored. + * + * @return The name of the currently selected state for the part. + */ +EAPI const char * edje_edit_part_selected_state_get(Evas_Object *obj, const char *part, double *value); + +/** Set the current state in part. + * + * @param obj Object being edited. + * @param part Part to set the state of. + * @param state Name of the state to set. + * @param value Value of the state. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get mouse_events for part. + * + * @param obj Object being edited. + * @param part Part to get if the mouse events is accepted. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_mouse_events_get(Evas_Object *obj, const char *part); + +/** Set mouse_events for part. + * + * @param obj Object being edited. + * @param part The part to set if the mouse events is accepted. + * @param mouse_events EINA_TRUE if part will accept mouse events, EINA_FALSE otherwise. + */ +EAPI void edje_edit_part_mouse_events_set(Evas_Object *obj, const char *part, Eina_Bool mouse_events); + +/** Get repeat_events for part. + * + * @param obj Object being edited. + * @param part Part to set if will pass all events to the other parts. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_part_repeat_events_get(Evas_Object *obj, const char *part); + +/** Set repeat_events for part. + * + * @param obj Object being edited. + * @param part Part to set if will repeat all the received mouse events to other parts. + * @param repeat_events EINA_TRUE if the events received will propagate to other parts, EINA_FALSE otherwise + */ +EAPI void edje_edit_part_repeat_events_set(Evas_Object *obj, const char *part, Eina_Bool repeat_events); + +/** Get ignore_flags for part. + * + * @param obj Object being edited. + * @param part Part to get which event_flags are being ignored. + * + * @return The Event flags set to the part. + */ +EAPI Evas_Event_Flags edje_edit_part_ignore_flags_get(Evas_Object *obj, const char *part); + +/** Set ignore_flags for part. + * + * @param obj Object being edited. + * @param part Part to set which event flags will be ignored. + * @param ignore_flags The Event flags to be ignored by the part. + */ +EAPI void edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags ignore_flags); + +/** Set scale property for the part. + * + * This property tells Edje that the given part should be scaled by the + * Edje scale factor. + * + * @param obj Object being edited. + * @param part Part to set scale for. + * @param scale Scale value to set. + */ +EAPI void edje_edit_part_scale_set(Evas_Object *obj, const char *part, Eina_Bool scale); + +/** Get scale for the part. + * + * @param obj Object being edited. + * @param part Part to get the scale value of. + * + * @return Whether scale is on (EINA_TRUE) or not. + */ +EAPI Eina_Bool edje_edit_part_scale_get(Evas_Object *obj, const char *part); + +/** Get horizontal dragable state for part. + * + * @param obj Object being edited. + * @param part Part to get if can be dragged horizontally; + * + * @return 1 (or -1) if the part can be dragged horizontally, 0 otherwise. + */ +EAPI int edje_edit_part_drag_x_get(Evas_Object *obj, const char *part); + +/** Set horizontal dragable state for part. + * + * @param obj Object being edited. + * @param part Part to set if should be dragged horizontally. + * @param drag 1 (or -1) if the part should be dragged horizontally, 0 otherwise. + */ +EAPI void edje_edit_part_drag_x_set(Evas_Object *obj, const char *part, int drag); + +/** Get vertical dragable state for part. + * + * @param obj Object being edited. + * @param part Part to get if can be dragged vertically. + * + * @return 1 (or - 1) if the part can be dragged vertically, 0 otherwise. + */ +EAPI int edje_edit_part_drag_y_get(Evas_Object *obj, const char *part); + +/** Set vertical dragable state for part. + * + * @param obj Object being edited. + * @param part Part to set if should be dragged vertically. + * @param drag 1 (or -1) of the part shpuld be dragged vertically, 0 otherwise. + */ +EAPI void edje_edit_part_drag_y_set(Evas_Object *obj, const char *part, int drag); + +/** Get horizontal dragable step for part. + * + * @param obj Object being edited. + * @param part Part to get the drag horizontal step value. + * + * @return The step value. + */ +EAPI int edje_edit_part_drag_step_x_get(Evas_Object *obj, const char *part); + +/** Set horizontal dragable state for part. + * + * @param obj Object being edited. + * @param part Part to set the drag horizontal step value. + * @param step The step the will be dragged. + */ +EAPI void edje_edit_part_drag_step_x_set(Evas_Object *obj, const char *part, int step); + +/** Get vertical dragable step for part. + * + * @param obj Object being edited. + * @param part Part to get the drag vertical step value. + * + * @return The step value. + */ +EAPI int edje_edit_part_drag_step_y_get(Evas_Object *obj, const char *part); + +/** Set vertical dragable state for part. + * + * @param obj Object being edited. + * @param part Part to set the drag vertical step value. + * @param step The step the will be dragged. + */ +EAPI void edje_edit_part_drag_step_y_set(Evas_Object *obj, const char *part, int step); + +/** Get horizontal dragable count for part. + * + * @param obj Object being edited. + * @param part Part to get the drag horizontal count value. + */ +EAPI int edje_edit_part_drag_count_x_get(Evas_Object *obj, const char *part); + +/** Set horizontal dragable count for part. + * + * @param obj Object being edited. + * @param part Part to set the drag horizontal count value. + * @param count The count value. + */ +EAPI void edje_edit_part_drag_count_x_set(Evas_Object *obj, const char *part, int count); + +/** Get vertical dragable count for part. + * + * @param obj Object being edited. + * @param part Part to get the drag vertical count value. + */ +EAPI int edje_edit_part_drag_count_y_get(Evas_Object *obj, const char *part); + +/** Set vertical dragable count for part. + * + * @param obj Object being edited. + * @param part Part to set the drag vertical count value. + * @param count The count value. + */ +EAPI void edje_edit_part_drag_count_y_set(Evas_Object *obj, const char *part, int count); + +/** Get the name of the part that is used as 'confine' for the given draggies. + * + * @param obj Object being edited. + * @param part Part to get the name that is used as 'confine' for the given draggies. + * + * @return The name of the confine part or NULL (if unset). + */ +EAPI const char * edje_edit_part_drag_confine_get(Evas_Object *obj, const char *part); + +/** Set the name of the part that is used as 'confine' for the given draggies. + * + * @param obj Object being edited. + * @param part Part to set the name that is used as 'confine' for the given draggies. + * @param confine The name of the confine part or NULL to unset confine. + */ +EAPI void edje_edit_part_drag_confine_set(Evas_Object *obj, const char *part, const char *confine); + +/** Get the name of the part that is used as the receiver of the drag event. + * + * @param obj Object being edited. + * @param part Part to get the name that is used as the receiver of the drag event. + * + * @return The name of the part that will receive events, or NULL (if unset). + */ +EAPI const char * edje_edit_part_drag_event_get(Evas_Object *obj, const char *part); + +/** Set the name of the part that will receive events from the given draggies. + * + * @param obj Object being edited. + * @param part Part to set the name that will receive events from the given draggies. + * @param event The name of the part that will receive events, or NULL to unset. + */ +EAPI void edje_edit_part_drag_event_set(Evas_Object *obj, const char *part, const char *event); + + +//@} +/******************************************************************************/ +/************************** STATES API ************************************/ +/******************************************************************************/ +/** @name States API + * Functions to deal with part states (see @ref edcref). + */ //@{ + +/** Get the list of all the states in the given part. + * + * @param obj Object being edited. + * @param part Part to get the states names list. + * + * @return An Eina_List* of string (char *)containing all the states names found + * in part, including the float value (ex: "default 0.00"). + * + * Use edje_edit_string_list_free() when you don't need it anymore. + */ +EAPI Eina_List * edje_edit_part_states_list_get(Evas_Object *obj, const char *part); + +/** Set a new name for the given state in the given part. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state Name of the state to rename. + * @param value Value of the state to rename. + * @param new_name The new name for the state. + * @param new_value The new value for the state. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, double value, const char *new_name, double new_value); + +/** Create a new state to the give part. + * + * @param obj Object being edited. + * @param part Part to set the name of the new state. + * @param name Name for the new state (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE if successfully, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double value); + +/** Delete the given part state from the edje. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The current name of the state (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE if successfully, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_del(Evas_Object *obj, const char *part, const char *state, double value); + +/** Check if a part state with the given name exist. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to check (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE if the part state exist, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_exist(Evas_Object *obj, const char *part, const char *state, double value); + +/** Copies the state @p from into @p to. If @p to doesn't exist it will be created. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param from State to copy from (not including state value). + * @param val_from The value of the state to copy from. + * @param to State to copy into (not including state value). + * @param val_to The value of the state to copy into. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, double val_from, const char *to, double val_to); + +/** Get the 'rel1 relative X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel1 relative X' (not including the state value). + * @param value The state value. + * + * @return The 'rel1 relative X' value of the part state. + */ +EAPI double edje_edit_state_rel1_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel1 relative Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel1 relative Y' (not including the state value). + * @param value The state value. + * + * @return The 'rel1 relative Y' value of the part state. + */ +EAPI double edje_edit_state_rel1_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel2 relative X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel2 relative X' (not including the state value). + * @param value The state value. + * + * @return The 'rel2 relative X' value of the part state. + */ +EAPI double edje_edit_state_rel2_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel2 relative Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel2 relative Y' (not including the state value). + * @param value The state value. + * + * @return The 'rel2 relative Y' value of the part state. + */ +EAPI double edje_edit_state_rel2_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the 'rel1 relative X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel1 relative X' (not including the state value). + * @param value The state value. + * @param x The new 'rel1 relative X' value to set'. + */ +EAPI void edje_edit_state_rel1_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the 'rel1 relative Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel1 relative Y' (not including the state value). + * @param value The state value. + * @param y The new 'rel1 relative Y' value to set'. + */ +EAPI void edje_edit_state_rel1_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Set the 'rel2 relative X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel2 relative X' (not including the state value). + * @param value The state value. + * @param x The new 'rel2 relative X' value to set'. + */ +EAPI void edje_edit_state_rel2_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the 'rel2 relative Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel2 relative Y' (not including the state value). + * @param value The state value. + * @param y The new 'rel2 relative Y' value to set'. + */ +EAPI void edje_edit_state_rel2_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Get the 'rel1 offset X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel1 offset X' (not including the state value). + * @param value The state value. + * + * @return The 'rel1 offset X' value of the part state. + */ +EAPI int edje_edit_state_rel1_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel1 offset Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel1 offset Y' (not including the state value). + * @param value The state value. + * + * @return The 'rel1 offset Y' value of the part state. + */ +EAPI int edje_edit_state_rel1_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel2 offset X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel2 offset X' (not including the state value). + * @param value The state value. + * + * @return The 'rel2 offset X' value of the part state. + */ +EAPI int edje_edit_state_rel2_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the 'rel2 offset Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get 'rel2 offset Y' (not including the state value). + * @param value The state value. + * + * @return The 'rel2 offset Y' value of the part state. + */ +EAPI int edje_edit_state_rel2_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the 'rel1 offset X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel1 offset X' (not including the state value). + * @param value The state value. + * @param x The new 'rel1 offset X' value to set'. + */ +EAPI void edje_edit_state_rel1_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the 'rel1 offset Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel1 offset Y' (not including the state value). + * @param value The state value. + * @param y The new 'rel1 offset Y' value to set'. + */ +EAPI void edje_edit_state_rel1_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Set the 'rel2 offset X' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel2 offset X' (not including the state value). + * @param value The state value. + * @param x The new 'rel2 offset X' value to set'. + */ +EAPI void edje_edit_state_rel2_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the 'rel2 offset Y' value of state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set 'rel2 offset Y' (not including the state value). + * @param value The state value. + * @param y The new 'rel2 offset Y' value to set'. + */ +EAPI void edje_edit_state_rel2_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Get the part name rel1x is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The state that contain which the part name rel1x is relative to (not including the state value). + * @param value The state value. + * + * @return The part name rel1x is relative to or NULL if the part is relative to the whole interface. + */ +EAPI const char * edje_edit_state_rel1_to_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the part name rel1y is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The state that contain which the part name rel1y is relative to (not including the state value). + * @param value The state value. + * + * @return The part name rel1y is relative to or NULL if the part is relative to the whole interface. + */ +EAPI const char * edje_edit_state_rel1_to_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the part name rel2x is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The state that contain which the part name rel2x is relative to (not including the state value). + * @param value The state value. + * + * @return The part name rel2x is relative to or NULL if the part is relative to the whole interface. + */ +EAPI const char * edje_edit_state_rel2_to_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the part name rel2y is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The state that contain which the part name rel2y is relative to (not including the state value). + * @param value The state value. + * + * @return The part name rel2y is relative to or NULL if the part is relative to the whole interface. + */ +EAPI const char * edje_edit_state_rel2_to_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the part rel1x is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set rel1x is relative to (not including the state value). + * @param value The state value. + * @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface). + * + * @return The part name rel1x is relative to or NULL if the part is relative to the whole interface. + */ +EAPI void edje_edit_state_rel1_to_x_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to); + +/** Set the part rel1y is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set rel1y is relative to (not including the state value). + * @param value The state value. + * @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface). + * + * @return The part name rel1y is relative to or NULL if the part is relative to the whole interface. + */ +EAPI void edje_edit_state_rel1_to_y_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to); + +/** Set the part rel2x is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set rel2x is relative to (not including the state value). + * @param value The state value. + * @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface). + * + * @return The part name rel2x is relative to or NULL if the part is relative to the whole interface. + */ +EAPI void edje_edit_state_rel2_to_x_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to); + +/** Set the part rel2y is relative to. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set rel2y is relative to (not including the state value). + * @param value The state value. + * @param rel_to The name of the part that is used as container/parent (NULL make the part relative to the whole interface). + * + * @return The part name rel2y is relative to or NULL if the part is relative to the whole interface. + */ +EAPI void edje_edit_state_rel2_to_y_set(Evas_Object *obj, const char *part, const char *state, double value, const char *rel_to); + +/** Get the color of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get color (not including the state value). + * @param value The state value. + * @param r A pointer to store the red value. + * @param g A pointer to store the green value. + * @param b A pointer to store the blue value. + * @param a A pointer to store the alpha value. + */ +EAPI void edje_edit_state_color_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a); + +/** Get the color2 of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get color (not including the state value). + * @param value The state value. + * @param r A pointer to store the red value. + * @param g A pointer to store the green value. + * @param b A pointer to store the blue value. + * @param a A pointer to store the alpha value. + */ +EAPI void edje_edit_state_color2_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a); + +/** Get the color3 of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get color (not including the state value). + * @param value The state value. + * @param r A pointer to store the red value. + * @param g A pointer to store the green value. + * @param b A pointer to store the blue value. + * @param a A pointer to store the alpha value. + */ +EAPI void edje_edit_state_color3_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a); + +/** Set the color of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set color (not including the state value). + * @param value The state value. + * @param r The red value of the color. + * @param g The green value of the color. + * @param b The blue value of the color. + * @param a The alpha value of the color. + */ +EAPI void edje_edit_state_color_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a); + +/** Set the color2 of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set color (not including the state value). + * @param value The state value. + * @param r The red value of the color. + * @param g The green value of the color. + * @param b The blue value of the color. + * @param a The alpha value of the color. + */ +EAPI void edje_edit_state_color2_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a); + +/** Set the color3 of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set color (not including the state value). + * @param value The state value. + * @param r The red value of the color. + * @param g The green value of the color. + * @param b The blue value of the color. + * @param a The alpha value of the color. + */ +EAPI void edje_edit_state_color3_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a); + +/** Get the horizontal align value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get horizontal align (not including the state value). + * @param value The state value. + * + * @return The horizontal align value for the given state + */ +EAPI double edje_edit_state_align_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the vertical align value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get horizontal align (not including the state value). + * @param value The state value. + * + * @return The vertical align value for the given state + */ +EAPI double edje_edit_state_align_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the horizontal align value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get horizontal align (not including the state value). + * @param value The state value. + * @param align The new vertical align value. + */ +EAPI void edje_edit_state_align_x_set(Evas_Object *obj, const char *part, const char *state, double value, double align); + +/** Set the vertical align value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get vertical align (not including the state value). + * @param value The state value. + * @param align The new vertical align value. + */ +EAPI void edje_edit_state_align_y_set(Evas_Object *obj, const char *part, const char *state, double value, double align); + +/** Get the minimum width value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get minimum width (not including the state value). + * @param value The state value. + * + * @return The minimum width value. + */ +EAPI int edje_edit_state_min_w_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the minimum width value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set minimum width (not including the state value). + * @param value The state value. + * @param min_w Minimum width value. + */ +EAPI void edje_edit_state_min_w_set(Evas_Object *obj, const char *part, const char *state, double value, int min_w); + +/** Get the minimum height value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get minimum height (not including the state value). + * @param value The state value. + * + * @return The minimum height value. + */ +EAPI int edje_edit_state_min_h_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the minimum height value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set minimum height (not including the state value). + * @param value The state value. + * @param min_h Minimum height value. + */ +EAPI void edje_edit_state_min_h_set(Evas_Object *obj, const char *part, const char *state, double value, int min_h); + +/** Get the maximum width value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get maximum width (not including the state value). + * @param value The state value. + * + * @return The maximum width value. + */ +EAPI int edje_edit_state_max_w_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the maximum width value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set maximum width (not including the state value). + * @param value The state value. + * @param max_w Maximum width value. + */ +EAPI void edje_edit_state_max_w_set(Evas_Object *obj, const char *part, const char *state, double value, int max_w); + +/** Get the maximum height value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get maximum height (not including the state value). + * @param value The state value. + * + * @return The maximum height value. + */ +EAPI int edje_edit_state_max_h_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the maximum height value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set maximum height (not including the state value). + * @param value The state value. + * @param max_h Maximum height value. + */ +EAPI void edje_edit_state_max_h_set(Evas_Object *obj, const char *part, const char *state, double value, int max_h); + +/** Get the minimum aspect value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get minimum aspect (not including the state value). + * @param value The state value. + * + * @return The minimum aspect + */ +EAPI double edje_edit_state_aspect_min_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the maximum aspect value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get maximum aspect (not including the state value). + * @param value The state value. + * + * @return The maximum aspect + */ +EAPI double edje_edit_state_aspect_max_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the minimum aspect value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set minimum aspect (not including the state value). + * @param value The state value. + * @param aspect Minimum aspect value. + */ +EAPI void edje_edit_state_aspect_min_set(Evas_Object *obj, const char *part, const char *state, double value, double aspect); + +/** Set the maximum aspect value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set maximum aspect (not including the state value). + * @param value The state value. + * @param aspect Maximum aspect value. + */ +EAPI void edje_edit_state_aspect_max_set(Evas_Object *obj, const char *part, const char *state, double value, double aspect); + +/** Get the aspect preference of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get aspect preference (not including the state value). + * @param value The state value. + * + * @return The aspect preference (0 = None, 1 = Vertical, 2 = Horizontal, 3 = Both) + */ +EAPI unsigned char edje_edit_state_aspect_pref_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the aspect preference of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set aspect preference (not + * including the state value). + * @param value The state value. + * @param pref The aspect preference to set (0 = None, 1 = Vertical, 2 + * = Horizontal, 3 = Both) + */ +EAPI void edje_edit_state_aspect_pref_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char pref); + +/** Get the fill horizontal origin relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the fill horizontal origin relative to area (not including the state value). + * @param value The state value. + * + * @return The fill horizontal origin relative to area. + */ +EAPI double edje_edit_state_fill_origin_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill vertical origin relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill vertical origin relative to area (not including the state value). + * @param value The state value. + * + * @return The fill vertical origin relative to area. + */ +EAPI double edje_edit_state_fill_origin_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill horizontal origin offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill horizontal origin offset relative to area (not including the state value). + * @param value The state value. + * + * @return The fill horizontal origin offset relative to area. + */ +EAPI int edje_edit_state_fill_origin_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill vertical origin offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill vertical origin offset relative to area (not including the state value). + * @param value The state value. + * + * @return The fill vertical origin offset value. + */ +EAPI int edje_edit_state_fill_origin_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the fill horizontal origin relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill horizontal origin relative to area (not including the state value). + * @param value The state value. + * @param x The fill horizontal origin value. + */ +EAPI void edje_edit_state_fill_origin_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the fill horizontal origin relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill vertical origin relative to area (not including the state value). + * @param value The state value. + * @param y The fill vertical origin value. + */ +EAPI void edje_edit_state_fill_origin_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Set the fill horizontal origin offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill horizontal origin offset relative to area (not including the state value). + * @param value The state value. + * @param x The fill horizontal origin offset value. + */ +EAPI void edje_edit_state_fill_origin_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the fill vertical origin offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill vertical origin offset relative to area (not including the state value). + * @param value The state value. + * @param y The fill vertical origin offset value. + */ +EAPI void edje_edit_state_fill_origin_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Get the fill horizontal size relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill horizontal size relative to area (not including the state value). + * @param value The state value. + * + * @return The fill horizontal size relative to area. + */ +EAPI double edje_edit_state_fill_size_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill vertical size relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill vertical size relative to area (not including the state value). + * @param value The state value. + * + * @return The fill vertical size relative to area. + */ +EAPI double edje_edit_state_fill_size_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill horizontal size offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill horizontal size + * offset relative to area (not including the state value). + * @param value The state value. + * + * @return The fill horizontal size offset relative to area. + */ +EAPI int edje_edit_state_fill_size_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the fill vertical size offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get fill vertical size offset + * relative to area (not including the state value). + * @param value The state value. + * + * @return The fill vertical size offset relative to area. + */ +EAPI int edje_edit_state_fill_size_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the fill horizontal size relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill horizontal size + * relative value (not including the state value). + * @param value The state value. + * @param x The horizontal size relative value. + */ +EAPI void edje_edit_state_fill_size_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the fill vertical size relative value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill vertical size + * relative value (not including the state value). + * @param value The state value. + * @param x The vertical size relative value. + */ +EAPI void edje_edit_state_fill_size_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the fill horizontal size offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill horizontal size + * offset relative value (not including the state value). + * @param value The state value. + * @param x The horizontal size offset value. + */ +EAPI void edje_edit_state_fill_size_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, double x); + +/** Set the fill vertical size offset value of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set fill vertical size offset + * relative value (not including the state value). + * @param value The state value. + * @param y The vertical size offset value. + */ +EAPI void edje_edit_state_fill_size_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, double y); + +/** Get the visibility of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get visibility (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE if the state is visible, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_visible_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the visibility of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set visibility (not including the state value). + * @param value The state value. + * @param visible To set state visible (EINA_TRUE if the state is visible, EINA_FALSE otherwise) + */ +EAPI void edje_edit_state_visible_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool visible); + +/** Get the color class of the given part state. + * + * Remember to free the string with edje_edit_string_free() + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get color class (not including the state value). + * @param value The state value. + * + * @return The current color class. + */ +EAPI const char *edje_edit_state_color_class_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the color class of the given part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set color class (not including the state value). + * @param value The state value. + * @param color_class The color class to assign. + */ +EAPI void edje_edit_state_color_class_set(Evas_Object *obj, const char *part, const char *state, double value, const char *color_class); + +/** Get the list of parameters for an external part. + * + * DO NOT FREE THE LIST! + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get list of Edje_External_Param (not including the state value). + * @param value The state value. + * + * @return The list of Edje_External_Param. + */ +EAPI const Eina_List * edje_edit_state_external_params_list_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the external parameter type and value. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter (not including the state value). + * @param value The state value. + * @param param The name of the paramter to look for. + * @param type The type of the parameter will be stored here. + * @param val Pointer to value will be stored here - DO NOT FREE IT! + * + * @return EINA_TRUE if the parameter was found, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type *type, void **val); + +/** Get external parameter of type INT. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type INT (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val The value of the parameter. + * + * @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type. + */ +EAPI Eina_Bool edje_edit_state_external_param_int_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int *val); + +/** Get external parameter of type BOOL. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type BOOL (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val The value of the parameter. + * + * @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type. + */ +EAPI Eina_Bool edje_edit_state_external_param_bool_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool *val); + +/** Get external parameter of type DOUBLE. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type DOUBLE (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val The value of the parameter. + * + * @return EINA_TRUE if successful. EINA_FALSE if not found or is of different type. + */ +EAPI Eina_Bool edje_edit_state_external_param_double_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double *val); + +/** Get external parameter of type STRING. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of + * type STRING (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val The value of the parameter. + * + * @return EINA_TRUE if successful. EINA_FALSE if not found or is of + * different type. + */ +EAPI Eina_Bool edje_edit_state_external_param_string_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val); + +/** Get external parameter of type CHOICE. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of + * type CHOICE (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val The value of the parameter. + * + * @return EINA_TRUE if successful. EINA_FALSE if not found or is of + * different type. + */ +EAPI Eina_Bool edje_edit_state_external_param_choice_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val); + +/** Set the external parameter type and value, adding it if it didn't + * exist before. + * + * @param obj Object being edited. + + * @param part Part that contain state. + * @param state The name of the state to get external parameter (not + * including the state value). + * @param value The state value. + * @param param The name of the paramter set. + * @param type The type of the parameter. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ + +/** + * Arguments should have proper sized values matching their types: + * - EDJE_EXTERNAL_PARAM_TYPE_INT: int + * - EDJE_EXTERNAL_PARAM_TYPE_BOOL: int + * - EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: double + * - EDJE_EXTERNAL_PARAM_TYPE_STRING: char* + * - EDJE_EXTERNAL_PARAM_TYPE_CHOICE: char* + * + * @note: The validation of the parameter will occur only if the part + * is in the same state as the one being modified. + */ +EAPI Eina_Bool edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type type, ...); + +/** Set external parameter of type INT. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of + * type INT (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val Value will be stored here. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_int_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int val); + +/** Set external parameter of type BOOL. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type BOOL (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val Value will be stored here. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_bool_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool val); + +/** Set external parameter of type DOUBLE. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type DOUBLE (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val Value will be stored here. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_double_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double val); + +/** Set external parameter of type STRING. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type STRING (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val Value will be stored here. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_string_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val); + +/** Set external parameter of type CHOICE. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get external parameter of type CHOICE (not including the state value). + * @param value The state value. + * @param param The name of the paramter. + * @param val Value will be stored here. + * + * @return EINA_TRUE if it was set, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_external_param_choice_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val); + + +//@} +/******************************************************************************/ +/************************** TEXT API ************************************/ +/******************************************************************************/ +/** @name Text API + * Functions to deal with text objects (see @ref edcref). + */ //@{ + +/** Get the text of a part state. + * + * Remember to free the returned string with edje_edit_string_free(). + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get text (not including the state value). + * @param value The state value. + * + * @return A newly allocated string containing the text for the given state. + */ +EAPI const char * edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the text of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set text (not including the state value). + * @param value The state value. + * @param text The new text to assign. + */ +EAPI void edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, double value,const char *text); + +/** Get font name for a given part state. + * + * @param obj Object being edited. + * @param part The name of the part to get the font of. + * @param state The state of the part to get the font of. + * @param value Value of the state. + * + * @return Font used by the part or NULL if error or nothing is set. + */ +EAPI const char * edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set font name for a given part state. + * + * Font name can be any alias of an internal font in the Edje file and, + * if it doesn't match any, Edje will look for a font with the given name + * in the system fonts. + * + * @param obj Object being edited. + * @param part Part to set the font of. + * @param state State in which the font is set. + * @param value Value of the state. + * @param font The font name to use. + */ +EAPI void edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font); + +/** Get the text size of a part state + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get text size (not including the state value). + * @param value The state value. + * + * @return The text size or -1 on errors. + */ +EAPI int edje_edit_state_text_size_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the text size of a part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set text size (not including the state value). + * @param value The state value. + * @param size The new font size to set (in pixel) + */ +EAPI void edje_edit_state_text_size_set(Evas_Object *obj, const char *part, const char *state, double value, int size); + +/** Get the text horizontal align of a part state. + * + * The value range is from 0.0(right) to 1.0(left) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the text horizontal align (not including the state value). + * @param value The state value. + * + * @return The text horizont align value + */ +EAPI double edje_edit_state_text_align_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the text vertical align of a part state. + * + * The value range is from 0.0(top) to 1.0(bottom) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the text vertical align (not including the state value). + * @param value The state value. + * + * @return The text horizont align value + */ +EAPI double edje_edit_state_text_align_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the text horizontal align of a part state. + * + * The value range is from 0.0(right) to 1.0(left) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the text horizontal align (not including the state value). + * @param value The state value. + * @param align The new text horizontal align value + */ +EAPI void edje_edit_state_text_align_x_set(Evas_Object *obj, const char *part, const char *state, double value, double align); + +/** Set the text vertical align of a part state. + * + * The value range is from 0.0(top) to 1.0(bottom) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the text vertical align (not including the state value). + * @param value The state value. + * @param align The new text vertical align value + */ +EAPI void edje_edit_state_text_align_y_set(Evas_Object *obj, const char *part, const char *state, double value, double align); + +/** Get the text elipsis of a part state. + * + * The value range is from 0.0(right) to 1.0(left) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the text elipses value (not including the state value). + * @param value The state value. + * + * @return The text elipsis value + */ +EAPI double edje_edit_state_text_elipsis_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the text vertical align of a part state. + * + * The value range is from 0.0(right) to 1.0(left) + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the text elipses value (not including the state value). + * @param value The state value. + * @param balance The position where to cut the string + */ +EAPI void edje_edit_state_text_elipsis_set(Evas_Object *obj, const char *part, const char *state, double value, double balance); + +/** Get if the text part fit it's container horizontally + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the if the text part fit it's container horizontally (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE If the part fit it's container horizontally, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_text_fit_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set if the text part should fit it's container horizontally + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the if the text part fit it's container horizontally (not including the state value). + * @param value The state value. + * @param fit EINA_TRUE to make the text fit it's container horizontally, EINA_FALSE otherwise. + */ +EAPI void edje_edit_state_text_fit_x_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit); + +/** Get if the text part fit it's container vertically + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the if the text part fit it's container vertically (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE If the part fit it's container vertically, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_text_fit_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set if the text part should fit it's container vertically + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the if the text part fit it's container vertically (not including the state value). + * @param value The state value. + * @param fit EINA_TRUE to make the text fit it's container vertically, EINA_FALSE otherwise. + */ +EAPI void edje_edit_state_text_fit_y_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit); + +/** Get the list of all the fonts in the given edje. + * + * Use edje_edit_string_list_free() when you don't need the list anymore. + * + * @param obj Object being edited. + * + * @return A list containing all the fonts names found in the edje file. + */ +EAPI Eina_List * edje_edit_fonts_list_get(Evas_Object *obj); + +/** Add a new font to the edje file. + * + * The newly created font will be available to all the groups in the edje, not only the current one. + * + * @param obj Object being edited. + * @param path The file path to load the font from. + * @param alias The alias for file, or NULL to use filename + * + * @return EINA_TRUE if font cat be loaded, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_font_add(Evas_Object *obj, const char *path, const char* alias); + +/** Delete font from the edje file. + * + * The font will be removed from all the groups in the edje, not only the current one. + * + * @param obj Object being edited. + * @param alias The font alias + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise (including the + * case when the alias is not valid). + */ +EAPI Eina_Bool edje_edit_font_del(Evas_Object *obj, const char* alias); + +/** Get font path for a given font alias. + * + * Remember to free the string with edje_edit_string_free() + * + * @param obj Object being edited. + * @param alias The font alias. + * + * @return The path of the given font alias. + */ +EAPI const char *edje_edit_font_path_get(Evas_Object *obj, const char *alias); + + +/** Get font name for a given part state. + * + * Remember to free the returned string using edje_edit_string_free(). + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the name of the font used (not including the state value). + * @param value The state value. + * + * @return The name of the font used in the given part state. + */ +EAPI const char * edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set font name for a given part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the name of the font that will be used (not including the state value). + * @param value The state value. + * @param font The name of the font to use in the given part state. + */ +EAPI void edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font); + + +//@} +/******************************************************************************/ +/************************** IMAGES API ************************************/ +/******************************************************************************/ +/** @name Images API + * Functions to deal with image objects (see @ref edcref). + */ //@{ + +/** Get the list of all the images in the given edje. + * Use edje_edit_string_list_free() when you don't need the list anymore. + * + * @param obj Object being edited. + * + * @return A List containing all images names found in the edje file. + */ +EAPI Eina_List * edje_edit_images_list_get(Evas_Object *obj); + +/** Add an new image to the image collection + * + * This function add the given image inside the edje. Don't add a new image part + * but only put the image inside the edje file. It actually write directly to + * the file so you don't have to save. + * After you have to create a new image_part that use this image. Note that all + * the parts in the edje share the same image collection, thus you can/must use + * the same image for different part. + * + * The format of the image files that can be loaded depend on the evas engine on your system + * + * @param obj Object being edited. + * @param path The name of the image file to include in the edje. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_image_add(Evas_Object *obj, const char *path); + +/** Delete an image from the image collection + * + * It actually write directly to the file so you don't have to save. + * + * @param obj Object being edited. + * @param name The name of the image file to include in the edje. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise (including the + * case when the name is not valid). + */ +EAPI Eina_Bool edje_edit_image_del(Evas_Object *obj, const char *name); + +/** Add an image entry to the image collection + * + * This function adds the given image entry to the edje image collection. The + * image needs to be inside the eet already, with key name "images/id". After + * you have to create a new image_part that use this image, referring to it as + * "name". Note that all the parts in the edje share the same image collection, + * thus you can/must use the same image for different part. + * + * @param obj Object being edited. + * @param name The image entry name. + * @param id The image id. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_image_data_add(Evas_Object *obj, const char *name, int id); + +/** Get normal image name for a given part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the name that is being used (not including the state value). + * @param value The state value. + * + * @return The name of the image used by state. + */ +EAPI const char * edje_edit_state_image_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set normal image for a given part state. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the image that will be used (not including the state value). + * @param value The state value. + * @param image The name of the image (must be an image contained in the edje file). + */ +EAPI void edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, double value, const char *image); + +/** Get image id for a given image name. + * + * @param obj Object being edited. + * @param image_name The image name. + * + * @return The id of the given image name. + */ +EAPI int edje_edit_image_id_get(Evas_Object *obj, const char *image_name); + +/** Get compression type for the given image. + * + * @param obj Object being edited. + * @param image The name of the image. + * + * @return One of Image Compression types. + * (EDJE_EDIT_IMAGE_COMP_RAW, EDJE_EDIT_IMAGE_COMP_USER, EDJE_EDIT_IMAGE_COMP_COMP, EDJE_EDIT_IMAGE_COMP_LOSSY). + */ +EAPI Edje_Edit_Image_Comp edje_edit_image_compression_type_get(Evas_Object *obj, const char *image); + +/** Get compression rate for the given image. + * + * @param obj Object being edited. + * @param image The name of the image. + * + * @return The compression rate (if the imnage is @c + * EDJE_EDIT_IMAGE_COMP_LOSSY) or < 0, on errors. + */ +EAPI int edje_edit_image_compression_rate_get(Evas_Object *obj, const char *image); + +/** Get the image border of a part state. + * + * Pass NULL to any of [r,g,b,a] to get only the others. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the image border (not + * including the state value). + * @param value The state value. + * @param l A pointer to store the left value + * @param r A pointer to store the right value + * @param t A pointer to store the top value + * @param b A pointer to store the bottom value + */ +EAPI void edje_edit_state_image_border_get(Evas_Object *obj, const char *part, const char *state, double value, int *l, int *r, int *t, int *b); + +/** Set the image border of a part state. + * + * Pass -1 to any of [l,r,t,b] to leave the value untouched. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the image border (not + * including the state value). + * @param value The state value. + * @param l Left border value (or -1). + * @param r Right border value (or -1). + * @param t Top border value (or -1). + * @param b Bottom border value (or -1). + */ +EAPI void edje_edit_state_image_border_set(Evas_Object *obj, const char *part, const char *state, double value, int l, int r, int t, int b); + +/** Get if the image center should be draw. + * + * 1 means to draw the center, 0 to don't draw it. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the image border fill (not including the state value). + * @param value The state value. + * + * @return 1 if the center of the bordered image is draw, 0 otherwise. + */ +EAPI unsigned char edje_edit_state_image_border_fill_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set if the image center should be draw. + * + * 1 means to draw the center, 0 to don't draw it. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to set the image border fill (not including the state value). + * @param value The state value. + * @param fill Fill to be se. 1 if the center of the bordered image is draw, 0 otherwise. + */ +EAPI void edje_edit_state_image_border_fill_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char fill); + +/** Get the list of all the tweens images in the given part state. + * + * Use edje_edit_string_list_free() when you don't need it anymore. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to get the list of all the tweens images (not including the state value). + * @param value The state value. + * + * @return A string list containing all the image name that form a tween animation in the given part state. + */ +EAPI Eina_List * edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Add a new tween frame to the given part state. + * + * The tween param must be the name of an existing image. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to add a new tween frame (not including the state value). + * @param value The state value. + * @param tween The name of the image to add. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, double value, const char *tween); + +/** Remove the first tween with the given name. + * + * The image is not removed from the edje. + * + * @param obj Object being edited. + * @param part Part that contain state. + * @param state The name of the state to del the tween (not including the state value). + * @param value The state value. + * @param tween The name of the image to del. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, double value, const char *tween); + + +//@} +/******************************************************************************/ +/************************* SPECTRUM API ***********************************/ +/******************************************************************************/ +/** @name Spectrum API + * Functions to manage spectrum (see @ref edcref). + */ //@{ + +/** Get the list of all the spectrum in the given edje object. + * + * Use edje_edit_string_list_free() when you don't need it anymore. + * + * @param obj Object being edited. + * + * @return A list containing all the spectra names. + */ +EAPI Eina_List * edje_edit_spectrum_list_get(Evas_Object *obj); + +/** Add a new spectra in the given edje object. + * + * @param obj Object being edited. + * @param name The name of the spectra to include in the edje. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_spectra_add(Evas_Object *obj, const char *name); + +/** Delete the given spectra from the edje object. + * + * @param obj Object being edited. + * @param spectra The name of the spectra to delete. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_spectra_del(Evas_Object *obj, const char *spectra); + +/** Change the name of the given spectra. + * + * @param obj Object being edited. + * @param spectra The name of the current spectra. + * @param name The new name to assign. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_spectra_name_set(Evas_Object *obj, const char *spectra, const char *name); + +/** Get the number of stops in the given spectra. + * + * @param obj Object being edited. + * @param spectra The name of the spectra. + * + * @return The number of stops (or 0 on errors). + */ +EAPI int edje_edit_spectra_stop_num_get(Evas_Object *obj, const char *spectra); + +/** Set the number of stops in the given spectra. + * + * @param obj Object being edited. + * @param spectra The name of the spectra. + * @param num The number of stops you want + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_spectra_stop_num_set(Evas_Object *obj, const char *spectra, int num); + +/** Get the colors of the given stop. + * + * @param obj Object being edited. + * @param spectra The name of the spectra. + * @param stop_number The number of the stop, + * @param r Where to store the red color value, + * @param g Where to store the green color value, + * @param b Where to store the blue color value, + * @param a Where to store the alpha color value, + * @param d Where to store the delta stop value, + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_spectra_stop_color_get(Evas_Object *obj, const char *spectra, int stop_number, int *r, int *g, int *b, int *a, int *d); + +/** Set the colors of the given stop. + * + * @param obj Object being edited. + * @param spectra The name of the spectra. + * @param stop_number The number of the stops, + * @param r The red color value to set, + * @param g The green color value to set, + * @param b The blue color value to set, + * @param a The alpha color value to set, + * @param d The delta stop value to set, + */ +EAPI Eina_Bool edje_edit_spectra_stop_color_set(Evas_Object *obj, const char *spectra, int stop_number, int r, int g, int b, int a, int d); + + +//@} +/******************************************************************************/ +/************************* GRADIENT API ***********************************/ +/******************************************************************************/ +/** @name Gradient API + * Functions to deal with gradient objects (see @ref edcref). + */ //@{ + +/** Get the type of gradient. + * + * Remember to free the string with edje_edit_string_free(). + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get the gradient type (not including the state value). + * @param value The state value. + * + * @return The type of gradient used in state. + * (linear, linear.diag, linear.codiag, radial, rectangular, angular, sinosoidal) + */ +EAPI const char * edje_edit_state_gradient_type_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the type of gradient. + * + * Gradient type can be on of the following: linear, linear.diag, linear.codiag, radial, rectangular, angular, sinusoidal + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set the gradient type (not including the state value). + * @param value The state value. + * @param type The type of gradient to use. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_type_set(Evas_Object *obj, const char *part, const char *state, double value, const char *type); + +/** Get if the current gradient use the fill properties or the gradient_rel as params. + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set the gradient type (not including the state value). + * @param value The state value. + * + * @return EINA_TRUE if gradient use the fill properties, EINA_FALSE otherwise. + * */ +EAPI Eina_Bool edje_edit_state_gradient_use_fill_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the spectra used by part state. + * + * Remember to free the string with edje_edit_string_free(). + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get the spectra name used (not including the state value). + * @param value The state value. + * + * @return The spectra name used in state. + */ +EAPI const char * edje_edit_state_gradient_spectra_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the spectra used by part state. + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set the spectra (not including the state value). + * @param value The state value. + * @param spectra The spectra name to assign + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_spectra_set(Evas_Object *obj, const char *part, const char *state, double value, const char *spectra); + +/** Get the angle of the gradient. + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get the angle (not including the state value). + * @param value The state value. + * + * @return The angle of the gradient. + */ +EAPI int edje_edit_state_gradient_angle_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the angle of the gradient. + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set the angle (not including the state value). + * @param value The state value. + * @param angle The angle to set. + */ +EAPI void edje_edit_state_gradient_angle_set(Evas_Object *obj, const char *part, const char *state, double value, int angle); + +/** Get the gradient rel1 horizontal relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel1 relative x value (not including the state value). + * @param value The state value. + * + * @return The gradient rel1 horizontal relative value. + */ +EAPI double edje_edit_state_gradient_rel1_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel1 vertical relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel1 relative y value (not including the state value). + * @param value The state value. + * + * @return The gradient rel1 vertical relative value. + */ +EAPI double edje_edit_state_gradient_rel1_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel2 horizontal relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel2 relative x value (not including the state value). + * @param value The state value. + * + * @return The gradient rel2 horizontal relative value. + */ +EAPI double edje_edit_state_gradient_rel2_relative_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel2 vertical relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel2 relative y value (not including the state value). + * @param value The state value. + * + * @return The gradient rel2 vertical relative value. + */ +EAPI double edje_edit_state_gradient_rel2_relative_y_get(Evas_Object *obj, const char *part, const char *state, double value); + + +/** Set the gradient rel1 horizontal relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel1 relative x value (not including the state value). + * @param value The state value. + * @param val The rel1 relative x to be set, + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise.. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel1_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double val); + + +/** Set the gradient rel1 vertical relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel1 relative y value (not including the state value). + * @param value The state value. + * @param val The rel1 relative y to be set, + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise.. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel1_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double val); + +/** Set the gradient rel2 horizontal relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel2 relative x value (not including the state value). + * @param value The state value. + * @param val The rel2 relative x to be set, + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise.. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel2_relative_x_set(Evas_Object *obj, const char *part, const char *state, double value, double val); + +/** Set the gradient rel2 vertical relative value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel2 relative y value (not including the state value). + * @param value The state value. + * @param val The rel2 relative y to be set, + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise.. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel2_relative_y_set(Evas_Object *obj, const char *part, const char *state, double value, double val); + +/** Get the gradient rel1 horizontal offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel1 offset x value (not including the state value). + * @param value The state value. + * + * @return The gradient rel1 horizontal offset value. + */ +EAPI int edje_edit_state_gradient_rel1_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel1 vertical offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel1 offset y value (not including the state value). + * @param value The state value. + * + * @return The gradient rel1 vertical offset value. + */ +EAPI int edje_edit_state_gradient_rel1_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel2 horizontal offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel2 offset x value (not including the state value). + * @param value The state value. + * + * @return The gradient rel2 horizontal offset value. + */ +EAPI int edje_edit_state_gradient_rel2_offset_x_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Get the gradient rel2 vertical offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to get rel2 offset y value (not including the state value). + * @param value The state value. + * + * @return The gradient rel2 vertical offset value. + */ +EAPI int edje_edit_state_gradient_rel2_offset_y_get(Evas_Object *obj, const char *part, const char *state, double value); + +/** Set the gradient rel1 horizontal offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel1 offset x value (not including the state value). + * @param value The state value. + * @param val The rel1 offset x value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel1_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, int val); + +/** Set the gradient rel1 vertical offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel1 offset y value (not including the state value). + * @param value The state value. + * @param val The rel1 offset y value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel1_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, int val); + +/** Set the gradient rel2 horizontal offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel2 offset x value (not including the state value). + * @param value The state value. + * @param val The rel2 offset x value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel2_offset_x_set(Evas_Object *obj, const char *part, const char *state, double value, int val); + +/** Set the gradient rel2 vertical offset value + * + * @param obj Object being edited. + * @param part The part that contain state. + * @param state The name of the state to set rel2 offset y value (not including the state value). + * @param value The state value. + * @param val The rel2 offset y value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_state_gradient_rel2_offset_y_set(Evas_Object *obj, const char *part, const char *state, double value, int val); + + +//@} +/******************************************************************************/ +/************************* PROGRAMS API ***********************************/ +/******************************************************************************/ +/** @name Programs API + * Functions to deal with programs (see @ref edcref). + */ //@{ + +/** Get the list of all the programs in the given edje object. + * + * Use edje_edit_string_list_free() when you don't need it anymore. + * + * @param obj Object being edited. + * + * @return A list containing all the program names. + */ +EAPI Eina_List * edje_edit_programs_list_get(Evas_Object *obj); + +/** Add a new program to the edje file + * + * If a program with the same name just exist the function will fail. + * + * @param obj Object being edited. + * @param name The name of the new program. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_add(Evas_Object *obj, const char *name); + +/** Remove the given program from the edje file. + * + * @param obj Object being edited. + * @param prog The name of the program to remove. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_del(Evas_Object *obj, const char *prog); + +/** Check if a program with the given name exist in the edje object. + * + * @param obj Object being edited. + * @param prog The prog of the program that will be searched. + * + * @return EINA_TRUE if the program exist, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_exist(Evas_Object *obj, const char *prog); + +/** Run the given program. + * + * @param obj Object being edited. + * @param prog The name of the program to execute. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_run(Evas_Object *obj, const char *prog); + +/** Set a new name for the given program + * + * @param obj Object being edited. + * @param prog The current program name. + * @param new_name The new name to assign. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char *new_name); + +/** Get source of a given program. + * + * Remember to free the returned string using edje_edit_string_free(). + * + * @param obj Object being edited. + * @param prog The name of the program to get source. + * + * @return The source value por program. + */ +EAPI const char * edje_edit_program_source_get(Evas_Object *obj, const char *prog); + +/** Set source of the given program. + * + * @param obj Object being edited. + * @param prog The name of the program to set source. + * @param source The new source value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_source_set(Evas_Object *obj, const char *prog, const char *source); + +/** Get signal of a given program. + * + * Remember to free the returned string using edje_edit_string_free(). + * + * @param obj Object being edited. + * @param prog The name of the program to get the signal. + * + * @return The signal value for program. + */ +EAPI const char * edje_edit_program_signal_get(Evas_Object *obj, const char *prog); + +/** Set signal of the given program. + * + * @param obj Object being edited. + * @param prog The name of the program to set the signal. + * @param signal The new signal value. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_signal_set(Evas_Object *obj, const char *prog, const char *signal); + +/** Get in.from of a given program. + * + * @param obj Object being edited. + * @param prog The name of the program to get the delay. + * + * @return The delay. + */ +EAPI double edje_edit_program_in_from_get(Evas_Object *obj, const char *prog); + +/** Set in.from of a given program. + * + * @param obj Object being edited. + * @param prog The name of the program to set the delay. + * @param seconds Number of seconds to delay the program execution + * + * */ +EAPI Eina_Bool edje_edit_program_in_from_set(Evas_Object *obj, const char *prog, double seconds); + +/** Get in.range of a given program. + * + * @param obj Object being edited. + * @param prog The name of the program to get random delay. + * + * @return The delay random. + */ +EAPI double edje_edit_program_in_range_get(Evas_Object *obj, const char *prog); + +/** Set in.range of a given program. + * + * @param obj Object being edited. + * @param prog The name of the program to set random delay. + * @param seconds Max random number of seconds to delay. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_in_range_set(Evas_Object *obj, const char *prog, double seconds); + +/** Get the action of a given program. + * + * @param obj Object being edited. + * @param prog The name of the program to get the action. + * + * @return The action type, or -1 on errors. + * Action can be one of EDJE_ACTION_TYPE_NONE, _STATE_SET, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, _DRAG_VAL_STEP, _DRAG_VAL_PAGE, _SCRIPT + */ +EAPI Edje_Action_Type edje_edit_program_action_get(Evas_Object *obj, const char *prog); + +/** Set the action of a given program. + * + * Action can be one of EDJE_ACTION_TYPE_NONE, _STATE_SET, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, _DRAG_VAL_STEP, _DRAG_VAL_PAGE, _SCRIPT + * + * @param obj Object being edited. + * @param prog The name of the program to set the action. + * @param action The new action type. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_action_set(Evas_Object *obj, const char *prog, Edje_Action_Type action); + +/** Get the list of the targets for the given program. + * + * Use edje_edit_string_list_free() when you don't need it anymore. + * + * @param obj Object being edited. + * @param prog The name of the progrem to get the list of the targets. + * + * @return A list with all the targets names, or NULL on error. + */ +EAPI Eina_List * edje_edit_program_targets_get(Evas_Object *obj, const char *prog); + +/** Add a new target program to the list of 'targets' in the given program. + * + * If program action is @c EDJE_ACTION_TYPE_ACTION_STOP, then 'target' + * must be an existing program name. If it's @c + * EDJE_ACTION_TYPE_STATE_SET, then 'target' must be an existing part + * name. + * + * @param obj Object being edited. + * @param prog The name of the program to add a new target. + * @param target The name of the new target itself. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_target_add(Evas_Object *obj, const char *prog, const char *target); + +/** Deletes a target from the list of 'targets' in the given program. + * + * If program action is EDJE_ACTION_TYPE_ACTION_STOP then 'target' must be an existing program name. + * If action is EDJE_ACTION_TYPE_STATE_SET then 'target' must be an existing part name. + * + * @param obj Object being edited. + * @param prog The name of the program to del a target from the list of targets. + * @param target The name of another program or another part. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_target_del(Evas_Object *obj, const char *prog, const char *target); + +/** Clear the 'targets' list of the given program + * + * @param obj Object being edited. + * @param prog The name of the program to cleaar the 'targets' list. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_targets_clear(Evas_Object *obj, const char *prog); + +/** Get the list of action that will be run after the give program + * + * Use edje_edit_string_list_free() when you don't need it anymore. + * + * @param obj Object being edited. + * @param prog The name of the program to get the list of actions + * + * @return A list with all program names. or NULL on error. + */ +EAPI Eina_List * edje_edit_program_afters_get(Evas_Object *obj, const char *prog); + +/** Add a new program name to the list of 'afters' in the given program. + * + * All the programs listed in 'afters' will be executed after program execution. + * + * @param obj Object being edited. + * @param prog The name of the program that contains the list of afters + * @param after The name of another program to add to the afters list + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_after_add(Evas_Object *obj, const char *prog, const char *after); + +/** Delete the given program from the list of 'afters' of the program. + * + * @param obj Object being edited. + * @param prog The name of the program from where to remove the after. + * @param after The name of the program to remove from the list of afters. + * + * @return EINA_TRUE is successful or not in the list, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_after_del(Evas_Object *obj, const char *prog, const char *after); + +/** Clear the 'afters' list of the given program. + * + * @param obj Object being edited. + * @param prog The name of the program to clear the 'afters' list. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_afters_clear(Evas_Object *obj, const char *prog); + +/** Get the state for the given program + * + * In a STATE_SET action this is the name of state to set. + * In a SIGNAL_EMIT action is the name of the signal to emit. + * + * @param obj Object being edited. + * @param prog The name of the program to get the state. + * + * @return The name of the state. + */ +EAPI const char * edje_edit_program_state_get(Evas_Object *obj, const char *prog); + +/** Get api's name of a program. + * + * @param obj Object being edited. + * @param prog Name of program. + * + * @return name of the api if successful, NULL otherwise. + */ +EAPI const char * edje_edit_program_api_name_get(Evas_Object *obj, const char *prog); + +/** Get api's description of a program. + * + * @param obj Object being edited. + * @param prog Name of program. + * + * @return description of the api if successful, NULL otherwise. + */ +EAPI const char * edje_edit_program_api_description_get(Evas_Object *obj, const char *prog); + +/** Set api's name of a program. + * + * @param obj Object being edited. + * @param prog Name of the part. + * @param name New name for the api property. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_api_name_set(Evas_Object *obj, const char *prog, const char *name); + +/** Set api's description of a program. + * + * @param obj Object being edited. + * @param prog Name of the program. + * @param description New description for the api property. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_api_description_set(Evas_Object *obj, const char *prog, const char *description); + +/** Set the state for the given program + * + * In a STATE_SET action this is the name of state to set. + * In a SIGNAL_EMIT action is the name of the signal to emit. + * + * @param obj Object being edited. + * @param prog The name of the program to set a state. + * @param state The nameo of the state to set (not including the state value) + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_state_set(Evas_Object *obj, const char *prog, const char *state); + +/** Get the value of state for the given program. + * + * In a STATE_SET action this is the value of state to set. + * Not used on SIGNAL_EMIT action. + * + * @param obj Object being edited. + * @param prog The name of the program to get the value of state. + * + * @return The value of state for the program. + */ +EAPI double edje_edit_program_value_get(Evas_Object *obj, const char *prog); + +/** Set the value of state for the given program. + * + * In a STATE_SET action this is the value of state to set. + * Not used on SIGNAL_EMIT action. + * + * @param obj Object being edited. + * @param prog The name of the program to set the value of state. + * @param value The vale to set. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_value_set(Evas_Object *obj, const char *prog, double value); + +/** Get the state2 for the given program + * + * In a STATE_SET action is not used + * In a SIGNAL_EMIT action is the source of the emitted signal. + * + * @param obj Object being edited. + * @param prog The name of the program to get the state2. + * + * @return The source to emit for the program. + */ +EAPI const char * edje_edit_program_state2_get(Evas_Object *obj, const char *prog); + +/** Set the state2 for the given program + * + * In a STATE_SET action is not used + * In a SIGNAL_EMIT action is the source of the emitted signal. + * + * @param obj Object being edited. + * @param prog The name of the program to set the state2. + * @param state2 The name of the state to set. + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_state2_set(Evas_Object *obj, const char *prog, const char *state2); + +/** Get the value of state2 for the given program. + * + * @param obj Object being edited. + * @param prog The name of the program to get the state2 value. + * + * @return The vale of the state2 for the program. + */ +EAPI double edje_edit_program_value2_get(Evas_Object *obj, const char *prog); + +/** Set the value2 of state for the given program. + * + * This is used in DRAG_ACTION + * + * @param obj Object being edited. + * @param prog The name of the program to set the state2 value. + * @param value The value of the state2 to set. + */ +EAPI Eina_Bool edje_edit_program_value2_set(Evas_Object *obj, const char *prog, double value); + +/** Get the type of transition to use when apply animations. + * + * Can be one of: EDJE_TWEEN_MODE_NONE, EDJE_TWEEN_MODE_LINEAR, EDJE_TWEEN_MODE_SINUSOIDAL, EDJE_TWEEN_MODE_ACCELERATE or EDJE_TWEEN_MODE_DECELERATE. + * + * @param obj Object being edited. + * @param prog The name of the program to get the transition. + * + * @return The type of transition used by program. + */ +EAPI Edje_Tween_Mode edje_edit_program_transition_get(Evas_Object *obj, const char *prog); + +/** Set the type of transition to use when apply animations. + * + * Can be one of: EDJE_TWEEN_MODE_NONE, EDJE_TWEEN_MODE_LINEAR, EDJE_TWEEN_MODE_SINUSOIDAL, EDJE_TWEEN_MODE_ACCELERATE or EDJE_TWEEN_MODE_DECELERATE. + * + * @param obj Object being edited. + * @param prog The name of the program to set the transition. + * @param transition The transition type to set + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_transition_set(Evas_Object *obj, const char *prog, Edje_Tween_Mode transition); + +/** Get the duration of the transition in seconds. + * + * @param obj Object being edited. + * @param prog The name of the program to get the transition time. + * + * @return The duration of the transition. + */ +EAPI double edje_edit_program_transition_time_get(Evas_Object *obj, const char *prog); + +/** Set the duration of the transition in seconds. + * + * @param obj Object being edited. + * @param prog The name of the program to set the transition time. + * @param seconds The duration of the transition (in seconds). + * + * @return EINA_TRUE if successful, EINA_FALSE otherwise. + */ +EAPI Eina_Bool edje_edit_program_transition_time_set(Evas_Object *obj, const char *prog, double seconds); + +EAPI const char * edje_edit_program_filter_part_get(Evas_Object *obj, const char *prog); +EAPI Eina_Bool edje_edit_program_filter_part_set(Evas_Object *obj, const char *prog, const char *filter_part); + +//@} +/******************************************************************************/ +/************************** SCRIPTS API ***********************************/ +/******************************************************************************/ +/** @name Scripts API + * Functions to deal with embryo scripts (see @ref edcref). + */ //@{ + +/** + * Get the Embryo script for the group of the given object. + * + * Get the shared script for the group under edition. Shared script means + * the script {} block for the group, not counting what's in each program. + * It returns a malloc'd duplicate of the code, so users are free to modify + * the contents directly and they should remember to free() it when done. + * NULL will be returned if there's no script or an error occurred. + * + * @param obj Object being edited. + * + * @return The shared script code for this group. + */ +EAPI char *edje_edit_script_get(Evas_Object *obj); + +/** + * Set the code for the group script. + * + * Set the Embryo source code for the shared script of the edited group. + * Note that changing the code itself will not update the running VM, you + * need to call edje_edit_script_compile for it to get updated. + * + * @param obj The object being edited + * @param code The Embryo source + */ +EAPI void edje_edit_script_set(Evas_Object *obj, const char *code); + +/** + * Get the Embryo script for the given program. + * + * Get the script code for the given program. Like the group script, this + * function returns a duplicate of the code that the user can modify at will + * and must free when done using it. + * NULL will be returned if the program doesn't exist, doesn't have any + * script or is not of type script. + * + * @param obj Object being edited + * @param prog Program name + * + * @return The program script code + */ +EAPI char *edje_edit_script_program_get(Evas_Object *obj, const char *prog); + +/** + * Set the Embryo script for the given program. + * + * Set the Embryo source code for the program @p prog. It must be an + * existing program of type EDJE_ACTION_TYPE_SCRIPT, or the function + * will fail and do nothing. + * Note that changing the code itself will not update the running VM, you + * need to call edje_edit_script_compile for it to get updated. + * + * @param obj The object being edited + * @param prog The program name. + * @param code The Embryo source + */ +EAPI void edje_edit_script_program_set(Evas_Object *obj, const char *prog, const char *code); + +/** + * Compile the Embryo script for the given object + * + * If required, this function will process all script code for the group and + * build the bytecode, updating the running Embryo VM Program if the build + * is succesful. + * + * @param obj The object being edited + * + */ +EAPI Eina_Bool edje_edit_script_compile(Evas_Object *obj); + +/** + * Get the list of errors resulting from the last script build + * + * Get the list of errors that resulted from the last attempt to rebuild + * the Embryo script for the edited group. This will be a standard Eina_List + * with Edje_Edit_Script_Error pointers as its data. + * The user should not do anything else but read the contents of this list. + * These errors can be the output of the embryo compiler, or internal errors + * generated by Edje_Edit if the preprocessing of the scripts failed. + * + * @param obj The object being edited + * + * @return A constant list of Edje_Edit_Script_Error, or NULL if there are none + */ +EAPI const Eina_List *edje_edit_script_error_list_get(Evas_Object *obj); + +//@} +/******************************************************************************/ +/************************** ERROR API ***********************************/ +/******************************************************************************/ +/** @name Error API + * to deal with error messages (see @ref edcref). + */ //@{ + +EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED; +EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_REFERENCED; +EAPI extern Eina_Error EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am new file mode 100644 index 0000000..6f0edad --- /dev/null +++ b/src/lib/Makefile.am @@ -0,0 +1,145 @@ + +MAINTAINERCLEANFILES = Makefile.in + +AM_CPPFLAGS = \ +-I. \ +-I$(top_srcdir) \ +-I$(top_srcdir)/src/bin \ +-I$(top_srcdir)/src/lib \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +@EVIL_CFLAGS@ \ +@EDJE_CFLAGS@ \ +@ECORE_IMF_CFLAGS@ \ +@EIO_CFLAGS@ \ +@EFL_EDJE_BUILD@ \ +@REMIX_CFLAGS@ \ +@SNDFILE_CFLAGS@ + +lib_LTLIBRARIES = libedje.la + +includes_HEADERS = Edje.h Edje_Edit.h +includesdir = $(includedir)/edje-@VMAJ@ + +base_sources = \ +edje_box_layout.c \ +edje_cache.c \ +edje_calc.c \ +edje_callbacks.c \ +edje_container.c \ +edje_data.c \ +edje_edit.c \ +edje_embryo.c \ +edje_entry.c \ +edje_external.c \ +edje_load.c \ +edje_lua.c \ +edje_lua2.c \ +edje_lua_script_only.c \ +edje_main.c \ +edje_match.c \ +edje_message_queue.c \ +edje_misc.c \ +edje_module.c \ +edje_multisense.c \ +edje_program.c \ +edje_script_only.c \ +edje_smart.c \ +edje_text.c \ +edje_textblock_styles.c \ +edje_util.c \ +edje_var.c + +if EDJE_AMALGAMATION +nodist_libedje_la_SOURCES = edje_amalgamation.c + +edje_amalgamation.c: $(base_sources) Makefile + -rm -f edje_amalgamation.c + + @echo "#ifdef HAVE_CONFIG_H" >> edje_amalgamation.c + @echo "# include \"config.h\"" >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#ifndef _WIN32" >> edje_amalgamation.c + @echo "#define _GNU_SOURCE" >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#ifdef HAVE_ALLOCA_H" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#elif defined __GNUC__" >> edje_amalgamation.c + @echo "# define alloca __builtin_alloca" >> edje_amalgamation.c + @echo "#elif defined _AIX" >> edje_amalgamation.c + @echo "# define alloca __alloca" >> edje_amalgamation.c + @echo "#elif defined _MSC_VER" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "# define alloca _alloca" >> edje_amalgamation.c + @echo "#else" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "# ifdef __cplusplus" >> edje_amalgamation.c + @echo "#extern \"C\"" >> edje_amalgamation.c + @echo "# endif" >> edje_amalgamation.c + @echo "#void *alloca (size_t);" >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + + @echo "#ifndef _MSC_VER" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#ifdef HAVE_LOCALE_H" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + + @echo "#ifdef HAVE_EVIL" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + @echo "#include " >> edje_amalgamation.c + + @echo "#ifdef HAVE_ECORE_IMF" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#ifdef HAVE_EIO" >> edje_amalgamation.c + @echo "# include " >> edje_amalgamation.c + @echo "#endif" >> edje_amalgamation.c + + @echo "#include " >> edje_amalgamation.c + + @for f in $(base_sources); do \ + if [ `echo $$f | sed -e 's/^...\(.\).*/\1/'` != '/' ]; then \ + file="$(srcdir)/$$f" ; \ + else \ + file="$$f" ; \ + fi ; \ + echo "/* file: $$file */" >> edje_amalgamation.c; \ + grep -v -e '^# *include \+.\(config\|\|Evil\|Eina\|Eet\|Evas\|Ecore\|Embryo\|Ecore_IMF\|Eio\|string\|math\|limits\|sys/stat\|errno\|time\|unistd\|locale\|lua\|lauxlib\|edje_private\)[.]h.*' $$file >> edje_amalgamation.c; \ + done + @echo "edje_amalgamation.c generated" + +else +libedje_la_SOURCES = $(base_sources) +endif + +libedje_la_LIBADD = @EDJE_LIBS@ @ECORE_IMF_LIBS@ @EIO_LIBS@ @EVIL_LIBS@ @REMIX_LIBS@ @SNDFILE_LIBS@ -lm +libedje_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@ + +EXTRA_DIST = edje_private.h edje_container.h edje_convert.h + +clean-local: + @rm -rf *.gcno edje_amalgamation.c diff --git a/src/lib/edje_box_layout.c b/src/lib/edje_box_layout.c new file mode 100644 index 0000000..3585046 --- /dev/null +++ b/src/lib/edje_box_layout.c @@ -0,0 +1,242 @@ +#include "edje_private.h" + +typedef struct _Edje_Transition_Animation_Data Edje_Transition_Animation_Data; +struct _Edje_Transition_Animation_Data +{ + Evas_Object *obj; + struct + { + Evas_Coord x, y, w, h; + } start, end; +}; + +struct _Edje_Part_Box_Animation +{ + struct + { + Evas_Object_Box_Layout layout; + void *data; + void(*free_data)(void *data); + Edje_Alignment align; + Evas_Point padding; + } start, end; + Eina_List *objs; + Eina_Bool recalculate:1; + Evas_Object *box; + double progress; + double start_progress; + int box_start_w, box_start_h; +}; + +static void +_edje_box_layout_find_all(const char *name, const char *name_alt, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)) +{ + if (!_edje_box_layout_find(name, cb, data, free_data)) + { + if ((!name_alt) || + (!_edje_box_layout_find(name_alt, cb, data, free_data))) + { + ERR("box layout '%s' (fallback '%s') not available, using horizontal.", + name, name_alt); + *cb = evas_object_box_layout_horizontal; + *free_data = NULL; + *data = NULL; + } + } +} + +static void +_edje_box_layout_calculate_coords(Evas_Object *obj, Evas_Object_Box_Data *priv, Edje_Part_Box_Animation *anim) +{ + Eina_List *l; + Edje_Transition_Animation_Data *tad; + Evas_Coord x, y; + + evas_object_geometry_get(obj, &x, &y, &anim->box_start_w, &anim->box_start_h); + EINA_LIST_FOREACH(anim->objs, l, tad) + { + evas_object_geometry_get(tad->obj, &tad->start.x, &tad->start.y, + &tad->start.w, &tad->start.h); + tad->start.x = tad->start.x - x; + tad->start.y = tad->start.y - y; + } + evas_object_box_padding_set(obj, anim->end.padding.x, anim->end.padding.y); + evas_object_box_align_set(obj, TO_DOUBLE(anim->end.align.x), TO_DOUBLE(anim->end.align.y)); + anim->end.layout(obj, priv, anim->end.data); + EINA_LIST_FOREACH(anim->objs, l, tad) + { + evas_object_geometry_get(tad->obj, &tad->end.x, &tad->end.y, + &tad->end.w, &tad->end.h); + tad->end.x = tad->end.x - x; + tad->end.y = tad->end.y - y; + } +} + +static void +_edje_box_layout_exec(Evas_Object *obj, Edje_Part_Box_Animation *anim) +{ + Eina_List *l; + Edje_Transition_Animation_Data *tad; + Evas_Coord x, y, w, h; + Evas_Coord cur_x, cur_y, cur_w, cur_h; + double progress; + + evas_object_geometry_get(obj, &x, &y, &w, &h); + progress = (anim->progress - anim->start_progress) / (1 - anim->start_progress); + + EINA_LIST_FOREACH(anim->objs, l, tad) + { + cur_x = x + (tad->start.x + ((tad->end.x - tad->start.x) * progress)) * (w / (double)anim->box_start_w); + cur_y = y + (tad->start.y + ((tad->end.y - tad->start.y) * progress)) * (h / (double)anim->box_start_h); + cur_w = (w / (double)anim->box_start_w) * (tad->start.w + ((tad->end.w - tad->start.w) * progress)); + cur_h = (h / (double)anim->box_start_h) * (tad->start.h + ((tad->end.h - tad->start.h) * progress)); + evas_object_move(tad->obj, cur_x, cur_y); + evas_object_resize(tad->obj, cur_w, cur_h); + } +} + +static void +_edje_box_layout(Evas_Object *obj, Evas_Object_Box_Data *priv, void *data) +{ + Edje_Part_Box_Animation *anim = data; + if (anim->progress < 0.01) + { + if (anim->start.layout) + { + evas_object_box_padding_set(obj, anim->start.padding.x, anim->start.padding.y); + evas_object_box_align_set(obj, TO_DOUBLE(anim->start.align.x), TO_DOUBLE(anim->start.align.y)); + anim->start.layout(obj, priv, anim->start.data); + } + return; + } + + if (anim->recalculate) + { + _edje_box_layout_calculate_coords(obj, priv, anim); + anim->start_progress = anim->progress; + anim->recalculate = EINA_FALSE; + } + + if ((anim->progress > 0) && (anim->start_progress < 1)) + _edje_box_layout_exec(obj, anim); +} + +void +_edje_box_layout_free_data(void *data) +{ + Edje_Transition_Animation_Data *tad; + Edje_Part_Box_Animation *anim = data; + if (anim->start.free_data && anim->start.data) + anim->start.free_data(anim->start.data); + if (anim->end.free_data && anim->end.data) + anim->end.free_data(anim->end.data); + EINA_LIST_FREE(anim->objs, tad) + free(tad); + free(data); +} + +Edje_Part_Box_Animation * +_edje_box_layout_anim_new(Evas_Object *box) +{ + Edje_Part_Box_Animation *anim = calloc(1, sizeof(Edje_Part_Box_Animation)); + if (!anim) + return NULL; + + anim->box = box; + evas_object_box_layout_set(box, _edje_box_layout, anim, NULL); + + return anim; +} + +void +_edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3 __UNUSED__, Edje_Part_Description_Box *chosen_desc) +{ + Evas_Object_Box_Data *priv; +#if 0 + int min_w, min_h; +#endif + if ((ep->param2) && (ep->description_pos != ZERO)) + { + Edje_Part_Description_Box *param2_desc = (Edje_Part_Description_Box *)ep->param2->description; + if (ep->anim->end.layout == NULL) + { + _edje_box_layout_find_all(param2_desc->box.layout, param2_desc->box.alt_layout, &ep->anim->end.layout, &ep->anim->end.data, &ep->anim->end.free_data); + ep->anim->end.padding.x = param2_desc->box.padding.x; + ep->anim->end.padding.y = param2_desc->box.padding.y; + ep->anim->end.align.x = param2_desc->box.align.x; + ep->anim->end.align.y = param2_desc->box.align.y; + + priv = evas_object_smart_data_get(ep->object); + if (priv == NULL) + return; + + evas_object_box_padding_set(ep->object, ep->anim->start.padding.x, ep->anim->start.padding.y); + evas_object_box_align_set(ep->object, TO_DOUBLE(ep->anim->start.align.x), TO_DOUBLE(ep->anim->start.align.y)); + ep->anim->start.layout(ep->object, priv, ep->anim->start.data); + _edje_box_layout_calculate_coords(ep->object, priv, ep->anim); + ep->anim->start_progress = 0.0; + } + evas_object_smart_changed(ep->object); + } + else + { + ep->anim->end.layout = NULL; + } + + if (ep->description_pos < 0.01 || !ep->anim->start.layout) + { + _edje_box_layout_find_all(chosen_desc->box.layout, chosen_desc->box.alt_layout, &ep->anim->start.layout, &ep->anim->start.data, &ep->anim->start.free_data); + ep->anim->start.padding.x = chosen_desc->box.padding.x; + ep->anim->start.padding.y = chosen_desc->box.padding.y; + ep->anim->start.align.x = chosen_desc->box.align.x; + ep->anim->start.align.y = chosen_desc->box.align.y; + evas_object_smart_changed(ep->object); + } + + ep->anim->progress = ep->description_pos; + + if (evas_object_smart_need_recalculate_get(ep->object)) + { + evas_object_smart_need_recalculate_set(ep->object, 0); + evas_object_smart_calculate(ep->object); + } +#if 0 /* Why the hell do we affect part size after resize ??? */ + evas_object_size_hint_min_get(ep->object, &min_w, &min_h); + if (chosen_desc->box.min.h && (p3->w < min_w)) + p3->w = min_w; + if (chosen_desc->box.min.v && (p3->h < min_h)) + p3->h = min_h; +#endif +} + +Eina_Bool +_edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + Edje_Transition_Animation_Data *tad; + tad = calloc(1, sizeof(Edje_Transition_Animation_Data)); + if (!tad) + return EINA_FALSE; + tad->obj = child_obj; + rp->anim->objs = eina_list_append(rp->anim->objs, tad); + rp->anim->recalculate = EINA_TRUE; + return EINA_TRUE; +} + +void +_edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + Eina_List *l; + Edje_Transition_Animation_Data *tad; + + EINA_LIST_FOREACH(rp->anim->objs, l, tad) + { + if (tad->obj == child_obj) + { + free(eina_list_data_get(l)); + rp->anim->objs = eina_list_remove_list(rp->anim->objs, l); + rp->anim->recalculate = EINA_TRUE; + break; + } + } + rp->anim->recalculate = EINA_TRUE; +} diff --git a/src/lib/edje_cache.c b/src/lib/edje_cache.c new file mode 100644 index 0000000..303de70 --- /dev/null +++ b/src/lib/edje_cache.c @@ -0,0 +1,633 @@ +#include "edje_private.h" + + +static Eina_Hash *_edje_file_hash = NULL; +static int _edje_file_cache_size = 16; +static Eina_List *_edje_file_cache = NULL; + +static int _edje_collection_cache_size = 16; + +static Edje_Part_Collection * +_edje_file_coll_open(Edje_File *edf, const char *coll) +{ + Edje_Part_Collection *edc = NULL; + Edje_Part_Collection_Directory_Entry *ce; + int id = -1, size = 0; + Eina_List *l; + char buf[256]; + char *buffer; + void *data; + + ce = eina_hash_find(edf->collection, coll); + if (!ce) return NULL; + + if (ce->ref) + { + ce->ref->references++; + return ce->ref; + } + + EINA_LIST_FOREACH(edf->collection_cache, l, edc) + { + if (!strcmp(edc->part, coll)) + { + edc->references = 1; + ce->ref = edc; + + edf->collection_cache = eina_list_remove_list(edf->collection_cache, l); + return ce->ref; + } + } + + id = ce->id; + if (id < 0) return NULL; + +#define INIT_EMP(Tp, Sz, Ce) \ + buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \ + sprintf(buffer, "%s/%s", ce->entry, #Tp); \ + Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \ + _emp_##Tp = Ce->mp.Tp; + +#define INIT_EMP_BOTH(Tp, Sz, Ce) \ + INIT_EMP(Tp, Sz, Ce) \ + Ce->mp_rtl.Tp = eina_mempool_add("one_big", buffer, NULL, \ + sizeof (Sz), Ce->count.Tp); + + INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce); + INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce); + INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce); + INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce); + INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce); + INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce); + INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce); + INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce); + INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce); + INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce); + INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce); + INIT_EMP(part, Edje_Part, ce); + + snprintf(buf, sizeof(buf), "edje/collections/%i", id); + edc = eet_data_read(edf->ef, _edje_edd_edje_part_collection, buf); + if (!edc) return NULL; + + edc->references = 1; + edc->part = ce->entry; + + /* For Edje file build with Edje 1.0 */ + if (edf->version <= 3 && edf->minor <= 1) + { + /* This will preserve previous rendering */ + unsigned int i; + + /* people expect signal to not be broadcasted */ + edc->broadcast_signal = EINA_FALSE; + + /* people expect text.align to be 0.0 0.0 */ + for (i = 0; i < edc->parts_count; ++i) + { + if (edc->parts[i]->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text; + unsigned int j; + + text = (Edje_Part_Description_Text*) edc->parts[i]->default_desc; + text->text.align.x = TO_DOUBLE(0.0); + text->text.align.y = TO_DOUBLE(0.0); + + for (j = 0; j < edc->parts[i]->other.desc_count; ++j) + { + text = (Edje_Part_Description_Text*) edc->parts[i]->other.desc[j]; + text->text.align.x = TO_DOUBLE(0.0); + text->text.align.y = TO_DOUBLE(0.0); + } + } + } + } + + snprintf(buf, sizeof(buf), "edje/scripts/embryo/compiled/%i", id); + data = eet_read(edf->ef, buf, &size); + + if (data) + { + edc->script = embryo_program_new(data, size); + _edje_embryo_script_init(edc); + free(data); + } + + snprintf(buf, sizeof(buf), "edje/scripts/lua/%i", id); + data = eet_read(edf->ef, buf, &size); + + if (data) + { + _edje_lua2_script_load(edc, data, size); + free(data); + } + + ce->ref = edc; + + return edc; +} + +#ifdef HAVE_EIO +static Eina_Bool +_edje_file_warn(void *data) +{ + Edje_File *edf = data; + Eina_List *l, *ll; + Edje *ed; + + edf->references++; + + EINA_LIST_FOREACH(edf->edjes, l, ed) + _edje_ref(ed); + + EINA_LIST_FOREACH(edf->edjes, l, ed) + { + _edje_emit(ed, "edje,change,file", "edje"); + } + + EINA_LIST_FOREACH_SAFE(edf->edjes, l, ll, ed) + _edje_unref(ed); + + edf->references--; + + edf->timeout = NULL; + return EINA_FALSE; +} + +static Eina_Bool +_edje_file_change(void *data, int ev_type __UNUSED__, void *event) +{ + Edje_File *edf = data; + Eio_Monitor_Event *ev = event; + + if (ev->monitor == edf->monitor) + { + if (edf->timeout) ecore_timer_del(edf->timeout); + edf->timeout = ecore_timer_add(0.5, _edje_file_warn, edf); + } + return ECORE_CALLBACK_PASS_ON; +} +#endif + +static Edje_File * +_edje_file_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, time_t mtime) +{ + Edje_Color_Class *cc; + Edje_File *edf; + Eina_List *l; + Edje_Part_Collection *edc; + Eet_File *ef; +#ifdef HAVE_EIO + Ecore_Event_Handler *ev; +#endif + + ef = eet_open(file, EET_FILE_MODE_READ); + if (!ef) + { + *error_ret = EDJE_LOAD_ERROR_UNKNOWN_FORMAT; + return NULL; + } + edf = eet_data_read(ef, _edje_edd_edje_file, "edje/file"); + if (!edf) + { + *error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE; + eet_close(ef); + return NULL; + } + + edf->ef = ef; + edf->mtime = mtime; +#ifdef HAVE_EIO + edf->monitor = eio_monitor_add(file); + ev = ecore_event_handler_add(EIO_MONITOR_FILE_DELETED, _edje_file_change, edf); + edf->handlers = eina_list_append(edf->handlers, ev); + ev = ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, _edje_file_change, edf); + edf->handlers = eina_list_append(edf->handlers, ev); + ev = ecore_event_handler_add(EIO_MONITOR_FILE_CREATED, _edje_file_change, edf); + edf->handlers = eina_list_append(edf->handlers, ev); + ev = ecore_event_handler_add(EIO_MONITOR_SELF_DELETED, _edje_file_change, edf); + edf->handlers = eina_list_append(edf->handlers, ev); +#endif + + if (edf->version != EDJE_FILE_VERSION) + { + *error_ret = EDJE_LOAD_ERROR_INCOMPATIBLE_FILE; + _edje_file_free(edf); + return NULL; + } + if (!edf->collection) + { + *error_ret = EDJE_LOAD_ERROR_CORRUPT_FILE; + _edje_file_free(edf); + return NULL; + } + + if (edf->minor > EDJE_FILE_MINOR) + { + WRN("`%s` may use feature from a newer edje and could not show up as expected.", file); + } + + edf->path = eina_stringshare_add(file); + edf->references = 1; + + /* This should be done at edje generation time */ + _edje_textblock_style_parse_and_fix(edf); + edf->color_hash = eina_hash_string_small_new(NULL); + EINA_LIST_FOREACH(edf->color_classes, l, cc) + if (cc->name) + eina_hash_direct_add(edf->color_hash, cc->name, cc); + + if (coll) + { + edc = _edje_file_coll_open(edf, coll); + if (!edc) + { + *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; + } + if (edc_ret) *edc_ret = edc; + } + + return edf; +} + +static void +_edje_file_dangling(Edje_File *edf) +{ + if (edf->dangling) return; + edf->dangling = EINA_TRUE; + + eina_hash_del(_edje_file_hash, edf->path, edf); + if (!eina_hash_population(_edje_file_hash)) + { + eina_hash_free(_edje_file_hash); + _edje_file_hash = NULL; + } +} + +Edje_File * +_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, Edje *ed) +{ + Edje_File *edf; + Eina_List *l, *hist; + Edje_Part_Collection *edc; + Edje_Part *ep; + struct stat st; + + if (stat(file, &st) != 0) + return NULL; + + if (!_edje_file_hash) + { + _edje_file_hash = eina_hash_string_small_new(NULL); + goto open_new; + } + + edf = eina_hash_find(_edje_file_hash, file); + if (edf) + { + if (edf->mtime != st.st_mtime) + { + _edje_file_dangling(edf); + goto open_new; + } + + edf->references++; + goto open; + } + + EINA_LIST_FOREACH(_edje_file_cache, l, edf) + { + if (!strcmp(edf->path, file)) + { + if (edf->mtime != st.st_mtime) + { + _edje_file_cache = eina_list_remove_list(_edje_file_cache, l); + _edje_file_free(edf); + goto open_new; + } + + edf->references = 1; + _edje_file_cache = eina_list_remove_list(_edje_file_cache, l); + eina_hash_add(_edje_file_hash, file, edf); + goto open; + } + } + +open_new: + if (!_edje_file_hash) + _edje_file_hash = eina_hash_string_small_new(NULL); + + edf = _edje_file_open(file, coll, error_ret, edc_ret, st.st_mtime); + if (!edf) + return NULL; + +#ifdef HAVE_EIO + if (ed) edf->edjes = eina_list_append(edf->edjes, ed); +#else + (void) ed; +#endif + + eina_hash_add(_edje_file_hash, file, edf); + return edf; + +open: + if (!coll) + return edf; + + edc = _edje_file_coll_open(edf, coll); + if (!edc) + { + *error_ret = EDJE_LOAD_ERROR_UNKNOWN_COLLECTION; + } + else + { + if (!edc->checked) + { + unsigned int j; + + for (j = 0; j < edc->parts_count; ++j) + { + Edje_Part *ep2; + + ep = edc->parts[j]; + + /* Register any color classes in this parts descriptions. */ + hist = NULL; + hist = eina_list_append(hist, ep); + ep2 = ep; + while (ep2->dragable.confine_id >= 0) + { + if (ep2->dragable.confine_id >= (int) edc->parts_count) + { + ERR("confine_to above limit. invalidating it."); + ep2->dragable.confine_id = -1; + break; + } + + ep2 = edc->parts[ep2->dragable.confine_id]; + if (eina_list_data_find(hist, ep2)) + { + ERR("confine_to loops. invalidating loop."); + ep2->dragable.confine_id = -1; + break; + } + hist = eina_list_append(hist, ep2); + } + eina_list_free(hist); + hist = NULL; + hist = eina_list_append(hist, ep); + ep2 = ep; + while (ep2->dragable.event_id >= 0) + { + Edje_Part* prev; + + if (ep2->dragable.event_id >= (int) edc->parts_count) + { + ERR("event_id above limit. invalidating it."); + ep2->dragable.event_id = -1; + break; + } + prev = ep2; + + ep2 = edc->parts[ep2->dragable.event_id]; + if (!ep2->dragable.x && !ep2->dragable.y) + { + prev->dragable.event_id = -1; + break; + } + + if (eina_list_data_find(hist, ep2)) + { + ERR("events_to loops. invalidating loop."); + ep2->dragable.event_id = -1; + break; + } + hist = eina_list_append(hist, ep2); + } + eina_list_free(hist); + hist = NULL; + hist = eina_list_append(hist, ep); + ep2 = ep; + while (ep2->clip_to_id >= 0) + { + if (ep2->clip_to_id >= (int) edc->parts_count) + { + ERR("clip_to_id above limit. invalidating it."); + ep2->clip_to_id = -1; + break; + } + + ep2 = edc->parts[ep2->clip_to_id]; + if (eina_list_data_find(hist, ep2)) + { + ERR("clip_to loops. invalidating loop."); + ep2->clip_to_id = -1; + break; + } + hist = eina_list_append(hist, ep2); + } + eina_list_free(hist); + hist = NULL; + } + edc->checked = 1; + } + } +#ifdef HAVE_EIO + if (edc && ed) edf->edjes = eina_list_append(edf->edjes, ed); +#else + (void) ed; +#endif + + if (edc_ret) *edc_ret = edc; + + return edf; +} + +void +_edje_cache_coll_clean(Edje_File *edf) +{ + while ((edf->collection_cache) && + (eina_list_count(edf->collection_cache) > (unsigned int) _edje_collection_cache_size)) + { + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Collection *edc; + + edc = eina_list_data_get(eina_list_last(edf->collection_cache)); + edf->collection_cache = eina_list_remove_list(edf->collection_cache, eina_list_last(edf->collection_cache)); + + ce = eina_hash_find(edf->collection, edc->part); + _edje_collection_free(edf, edc, ce); + } +} + +void +_edje_cache_coll_flush(Edje_File *edf) +{ + while (edf->collection_cache) + { + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Collection *edc; + Eina_List *last; + + last = eina_list_last(edf->collection_cache); + edc = eina_list_data_get(last); + edf->collection_cache = eina_list_remove_list(edf->collection_cache, + last); + + ce = eina_hash_find(edf->collection, edc->part); + _edje_collection_free(edf, edc, ce); + } +} + +void +_edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc) +{ + Edje_Part_Collection_Directory_Entry *ce; + + edc->references--; + if (edc->references != 0) return; + + ce = eina_hash_find(edf->collection, edc->part); + if (!ce) + { + ERR("Something is wrong with reference count of '%s'.", edc->part); + } + else if (ce->ref) + { + ce->ref = NULL; + + if (edf->dangling) + { + /* No need to keep the collection around if the file is dangling */ + _edje_collection_free(edf, edc, ce); + _edje_cache_coll_flush(edf); + } + else + { + edf->collection_cache = eina_list_prepend(edf->collection_cache, edc); + _edje_cache_coll_clean(edf); + } + } +} + +static void +_edje_cache_file_clean(void) +{ + int count; + + count = eina_list_count(_edje_file_cache); + while ((_edje_file_cache) && (count > _edje_file_cache_size)) + { + Eina_List *last; + Edje_File *edf; + + last = eina_list_last(_edje_file_cache); + edf = eina_list_data_get(last); + _edje_file_cache = eina_list_remove_list(_edje_file_cache, last); + _edje_file_free(edf); + count = eina_list_count(_edje_file_cache); + } +} + +void +_edje_cache_file_unref(Edje_File *edf) +{ + edf->references--; + if (edf->references != 0) return; + + if (edf->dangling) + { + _edje_file_free(edf); + return; + } + + eina_hash_del(_edje_file_hash, edf->path, edf); + if (!eina_hash_population(_edje_file_hash)) + { + eina_hash_free(_edje_file_hash); + _edje_file_hash = NULL; + } + _edje_file_cache = eina_list_prepend(_edje_file_cache, edf); + _edje_cache_file_clean(); +} + +void +_edje_file_cache_shutdown(void) +{ + edje_file_cache_flush(); +} + + +/*============================================================================* + * Global * + *============================================================================*/ + +/*============================================================================* + * API * + *============================================================================*/ + + +EAPI void +edje_file_cache_set(int count) +{ + if (count < 0) count = 0; + _edje_file_cache_size = count; + _edje_cache_file_clean(); +} + + +EAPI int +edje_file_cache_get(void) +{ + return _edje_file_cache_size; +} + + +EAPI void +edje_file_cache_flush(void) +{ + int ps; + + ps = _edje_file_cache_size; + _edje_file_cache_size = 0; + _edje_cache_file_clean(); + _edje_file_cache_size = ps; +} + + +EAPI void +edje_collection_cache_set(int count) +{ + Eina_List *l; + Edje_File *edf; + + if (count < 0) count = 0; + _edje_collection_cache_size = count; + EINA_LIST_FOREACH(_edje_file_cache, l, edf) + _edje_cache_coll_clean(edf); + /* FIXME: freach in file hash too! */ +} + + +EAPI int +edje_collection_cache_get(void) +{ + return _edje_collection_cache_size; +} + + +EAPI void +edje_collection_cache_flush(void) +{ + int ps; + Eina_List *l; + Edje_File *edf; + + ps = _edje_collection_cache_size; + _edje_collection_cache_size = 0; + EINA_LIST_FOREACH(_edje_file_cache, l, edf) + _edje_cache_coll_flush(edf); + /* FIXME: freach in file hash too! */ + _edje_collection_cache_size = ps; +} diff --git a/src/lib/edje_calc.c b/src/lib/edje_calc.c new file mode 100644 index 0000000..84f8090 --- /dev/null +++ b/src/lib/edje_calc.c @@ -0,0 +1,3084 @@ +#include "edje_private.h" + +static void _edje_part_make_rtl(Edje_Part_Description_Common *desc); +static Edje_Part_Description_Common *_edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src, Edje_Part_Description_Common **dst, unsigned char type); + +static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep, + Edje_Part_Description_Common *desc, Edje_Part_Description_Common *chosen_desc, + Edje_Real_Part *center, Edje_Real_Part *light, Edje_Real_Part *persp, + Edje_Real_Part *rel1_to_x, Edje_Real_Part *rel1_to_y, + Edje_Real_Part *rel2_to_x, Edje_Real_Part *rel2_to_y, + Edje_Real_Part *confine_to, Edje_Calc_Params *params, + FLOAT_T pos); + +void +_edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2) +{ + FLOAT_T fp_pos; + FLOAT_T npos; + + pos = CLAMP(pos, ZERO, FROM_INT(1)); + + fp_pos = pos; + + npos = ZERO; +#if 0 // old code - easy to enable for comparing float vs fixed point + /* take linear pos along timescale and use interpolation method */ + switch (mode) + { + case EDJE_TWEEN_MODE_SINUSOIDAL: + /* npos = (1.0 - cos(pos * PI)) / 2.0; */ + npos = DIV2(SUB(FROM_INT(1), + COS(MUL(fp_pos, + PI)))); + break; + case EDJE_TWEEN_MODE_ACCELERATE: + /* npos = 1.0 - sin((PI / 2.0) + (pos * PI / 2.0)); */ + npos = SUB(FROM_INT(1), + SIN(ADD(DIV2(PI), + MUL(fp_pos, + DIV2(PI))))); + break; + case EDJE_TWEEN_MODE_DECELERATE: + /* npos = sin(pos * PI / 2.0); */ + npos = SIN(MUL(fp_pos, + DIV2(PI))); + break; + case EDJE_TWEEN_MODE_LINEAR: + npos = fp_pos; + break; + default: + npos = fp_pos; + break; + } +#else + switch (mode & EDJE_TWEEN_MODE_MASK) + { + case EDJE_TWEEN_MODE_SINUSOIDAL: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_SINUSOIDAL, + 0.0, 0.0)); + break; + case EDJE_TWEEN_MODE_ACCELERATE: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_ACCELERATE, + 0.0, 0.0)); + break; + case EDJE_TWEEN_MODE_DECELERATE: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_DECELERATE, + 0.0, 0.0)); + break; + case EDJE_TWEEN_MODE_LINEAR: + npos = fp_pos; +/* npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_LINEAR, + 0.0, 0.0)); + */ + break; + case EDJE_TWEEN_MODE_ACCELERATE_FACTOR: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_ACCELERATE_FACTOR, + TO_DOUBLE(v1), 0.0)); + break; + case EDJE_TWEEN_MODE_DECELERATE_FACTOR: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_DECELERATE_FACTOR, + TO_DOUBLE(v1), 0.0)); + break; + case EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_SINUSOIDAL_FACTOR, + TO_DOUBLE(v1), 0.0)); + break; + case EDJE_TWEEN_MODE_DIVISOR_INTERP: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_DIVISOR_INTERP, + TO_DOUBLE(v1), TO_DOUBLE(v2))); + break; + case EDJE_TWEEN_MODE_BOUNCE: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_BOUNCE, + TO_DOUBLE(v1), TO_DOUBLE(v2))); + break; + case EDJE_TWEEN_MODE_SPRING: + npos = FROM_DOUBLE(ecore_animator_pos_map(TO_DOUBLE(pos), + ECORE_POS_MAP_SPRING, + TO_DOUBLE(v1), TO_DOUBLE(v2))); + break; + default: + npos = fp_pos; + break; + } +#endif + if (npos == ep->description_pos) return; + + ep->description_pos = npos; + + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ep->invalidate = 1; +#endif +} + + +/** + * Returns part description + * + * @internal + * + * Converts part description to RTL-desc. + * + * @param desc Pointer to desc buffer. + * + **/ +static void +_edje_part_make_rtl(Edje_Part_Description_Common *desc) +{ + double t; + int i; + + if(!desc) + return; + + /* This makes alignment right-oriented */ + desc->align.x = 1.0 - desc->align.x; + + /* same as above for relative components */ + t = desc->rel1.relative_x; + desc->rel1.relative_x = 1.0 - desc->rel2.relative_x; + desc->rel2.relative_x = 1.0 - t; + + /* +1 and +1 are because how edje works with right + * side borders - nothing is printed beyond that limit + * + * rel2 is now to the left of rel1, and Edje assumes + * the opposite so we switch corners on x-axis to define + * offset from right to left */ + i = desc->rel1.offset_x; + desc->rel1.offset_x = -(desc->rel2.offset_x + 1); + desc->rel2.offset_x = -(i + 1); + + i = desc->rel1.id_x; + desc->rel1.id_x = desc->rel2.id_x; + desc->rel2.id_x = i; +} + +/** + * Returns part description + * + * @internal + * + * Returns part description according to object orientation. + * When object is in RTL-orientation (RTL flag is set) + * this returns the RTL-desc of it. + * RTL-desc would be allocated if was not created by a previous call. + * The dst pointer is updated in case of an allocation. + * + * @param ed Edje object. + * @param src The Left To Right (LTR), original desc. + * @param dst Pointer to Right To Left (RTL) desc-list. + * @param type name of dec type. Example: "default". + * + * @return Edje part description. + * + **/ +static Edje_Part_Description_Common * +_edje_get_description_by_orientation(Edje *ed, Edje_Part_Description_Common *src, Edje_Part_Description_Common **dst, unsigned char type) +{ + Edje_Part_Description_Common *desc_rtl = NULL; + Edje_Part_Collection_Directory_Entry *ce; + size_t memsize = 0; + + /* RTL flag is not set, return original description */ + if(!edje_object_mirrored_get(ed->obj)) + return src; + + if(*dst) + return *dst; /* Was allocated before and we should use it */ + +#define EDIT_ALLOC_POOL_RTL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + Name = eina_mempool_malloc(ce->mp_rtl.Short, \ + sizeof (Edje_Part_Description_##Type)); \ + memset(Name, 0, sizeof(Edje_Part_Description_##Type)); \ + desc_rtl = &Name->common; \ + memsize = sizeof(Edje_Part_Description_##Type); \ + break; \ + } + + ce = eina_hash_find(ed->file->collection, ed->group); + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + desc_rtl = eina_mempool_malloc(ce->mp_rtl.RECTANGLE, + sizeof (Edje_Part_Description_Common)); + ce->count.RECTANGLE++; + memsize = sizeof(Edje_Part_Description_Common); + break; + case EDJE_PART_TYPE_SWALLOW: + desc_rtl = eina_mempool_malloc(ce->mp_rtl.SWALLOW, + sizeof (Edje_Part_Description_Common)); + ce->count.SWALLOW++; + memsize = sizeof(Edje_Part_Description_Common); + break; + case EDJE_PART_TYPE_GROUP: + desc_rtl = eina_mempool_malloc(ce->mp_rtl.GROUP, + sizeof (Edje_Part_Description_Common)); + ce->count.GROUP++; + memsize = sizeof(Edje_Part_Description_Common); + break; + case EDJE_PART_TYPE_SPACER: + desc_rtl = eina_mempool_malloc(ce->mp_rtl.SPACER, + sizeof (Edje_Part_Description_Common)); + ce->count.SPACER++; + memsize = sizeof(Edje_Part_Description_Common); + break; + EDIT_ALLOC_POOL_RTL(TEXT, Text, text); + EDIT_ALLOC_POOL_RTL(TEXTBLOCK, Text, text); + EDIT_ALLOC_POOL_RTL(IMAGE, Image, image); + EDIT_ALLOC_POOL_RTL(PROXY, Proxy, proxy); + EDIT_ALLOC_POOL_RTL(BOX, Box, box); + EDIT_ALLOC_POOL_RTL(TABLE, Table, table); + EDIT_ALLOC_POOL_RTL(EXTERNAL, External, external_params); + } + + if (desc_rtl) + memcpy(desc_rtl, src, memsize); + + _edje_part_make_rtl(desc_rtl); + + *dst = desc_rtl; + return desc_rtl; +} + +Edje_Part_Description_Common * +_edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name, + double val) +{ + Edje_Part *ep = rp->part; + Edje_Part_Description_Common *ret = NULL; + Edje_Part_Description_Common *d; + + double min_dst = 99999.0; + unsigned int i; + + /* RTL flag is set, return RTL description */ + if(edje_object_mirrored_get(ed->obj)) + if(!ep->other.desc_rtl) + ep->other.desc_rtl = (Edje_Part_Description_Common **) + calloc(ep->other.desc_count, + sizeof (Edje_Part_Description_Common *)); + + if (!strcmp(name, "default") && val == 0.0) + return _edje_get_description_by_orientation(ed, + ep->default_desc, &ep->default_desc_rtl, ep->type); + + if (!strcmp(name, "custom")) + return rp->custom ? + _edje_get_description_by_orientation(ed, rp->custom->description, + &rp->custom->description_rtl, ep->type) : NULL; + + if (!strcmp(name, "default")) + { + ret = _edje_get_description_by_orientation(ed, ep->default_desc, + &ep->default_desc_rtl, + ep->type); + + min_dst = ABS(ep->default_desc->state.value - val); + } + + for (i = 0; i < ep->other.desc_count; ++i) + { + d = ep->other.desc[i]; + + if (d->state.name && (d->state.name == name || + !strcmp(d->state.name, name))) + { + double dst; + + dst = ABS(d->state.value - val); + if (dst < min_dst) + { + ret = _edje_get_description_by_orientation(ed, d, + &ep->other.desc_rtl[i], ep->type); + min_dst = dst; + } + } + } + + return ret; +} + +static int +_edje_image_find(Evas_Object *obj, Edje *ed, Edje_Real_Part_Set **eps, Edje_Part_Description_Image *st, Edje_Part_Image_Id *imid) +{ + Edje_Image_Directory_Set_Entry *entry; + Edje_Image_Directory_Set *set = NULL; + Eina_List *l; + int w = 0; + int h = 0; + int id; + + if (!st && !imid) + return -1; + + if (st && !st->image.set) + return st->image.id; + + if (imid && !imid->set) + return imid->id; + + if (imid) + id = imid->id; + else + id = st->image.id; + + evas_object_geometry_get(obj, NULL, NULL, &w, &h); + + if (eps && *eps) + { + if ((*eps)->id == id) + set = (*eps)->set; + + if (set) + if ((*eps)->entry->size.min.w <= w && w <= (*eps)->entry->size.max.w) + if ((*eps)->entry->size.min.h <= h && h <= (*eps)->entry->size.max.h) + return (*eps)->entry->id; + } + + if (!set) + set = ed->file->image_dir->sets + id; + + EINA_LIST_FOREACH(set->entries, l, entry) + { + if (entry->size.min.w <= w && w <= entry->size.max.w) + if (entry->size.min.h <= h && h <= entry->size.max.h) + { + if (eps) + { + if (!*eps) + *eps = calloc(1, sizeof (Edje_Real_Part_Set)); + + if (*eps) + { + (*eps)->entry = entry; + (*eps)->set = set; + (*eps)->id = id; + } + } + return entry->id; + } + } + + return -1; +} + +static void +_edje_real_part_image_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T pos) +{ + int image_id; + int image_count, image_num; + + image_id = _edje_image_find(ep->object, ed, + &ep->param1.set, + (Edje_Part_Description_Image*) ep->param1.description, + NULL); + if (image_id < 0) + { + Edje_Image_Directory_Entry *ie; + + if (!ed->file->image_dir) ie = NULL; + else ie = ed->file->image_dir->entries + (-image_id) - 1; + if ((ie) && + (ie->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL) && + (ie->entry)) + { + evas_object_image_file_set(ep->object, ie->entry, NULL); + } + } + else + { + image_count = 2; + if (ep->param2) + image_count += ((Edje_Part_Description_Image*) ep->param2->description)->image.tweens_count; + image_num = TO_INT(MUL(pos, SUB(FROM_INT(image_count), + FROM_DOUBLE(0.5)))); + if (image_num > (image_count - 1)) + image_num = image_count - 1; + if (image_num <= 0) + { + image_id = _edje_image_find(ep->object, ed, + &ep->param1.set, + (Edje_Part_Description_Image*) ep->param1.description, + NULL); + } + else + if (ep->param2) + { + if (image_num == (image_count - 1)) + { + image_id = _edje_image_find(ep->object, ed, + &ep->param2->set, + (Edje_Part_Description_Image*) ep->param2->description, + NULL); + } + else + { + Edje_Part_Image_Id *imid; + + imid = ((Edje_Part_Description_Image*) ep->param2->description)->image.tweens[image_num - 1]; + image_id = _edje_image_find(ep->object, ed, NULL, NULL, imid); + } + } + if (image_id < 0) + { + ERR("¨Part \"%s\" description, " + "\"%s\" %3.3f with image %i index has a missing image id in a set of %i !!!", + ep->part->name, + ep->param1.description->state.name, + ep->param1.description->state.value, + image_num, + image_count); + } + else + { + char buf[1024]; + + /* Replace snprint("edje/images/%i") == memcpy + itoa */ +#define IMAGES "edje/images/" + memcpy(buf, IMAGES, strlen(IMAGES)); + eina_convert_itoa(image_id, buf + strlen(IMAGES)); /* No need to check length as 2³² need only 10 characteres. */ + + evas_object_image_file_set(ep->object, ed->file->path, buf); + if (evas_object_image_load_error_get(ep->object) != EVAS_LOAD_ERROR_NONE) + { + ERR("Error loading image collection \"%s\" from " + "file \"%s\". Missing EET Evas loader module?", + buf, ed->file->path); + switch (evas_object_image_load_error_get(ep->object)) + { + case EVAS_LOAD_ERROR_GENERIC: + ERR("Error type: EVAS_LOAD_ERROR_GENERIC"); + break; + case EVAS_LOAD_ERROR_DOES_NOT_EXIST: + ERR("Error type: EVAS_LOAD_ERROR_DOES_NOT_EXIST"); + break; + case EVAS_LOAD_ERROR_PERMISSION_DENIED: + ERR("Error type: EVAS_LOAD_ERROR_PERMISSION_DENIED"); + break; + case EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: + ERR("Error type: EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED"); + break; + case EVAS_LOAD_ERROR_CORRUPT_FILE: + ERR("Error type: EVAS_LOAD_ERROR_CORRUPT_FILE"); + break; + case EVAS_LOAD_ERROR_UNKNOWN_FORMAT: + ERR("Error type: EVAS_LOAD_ERROR_UNKNOWN_FORMAT"); + break; + default: + ERR("Error type: ???"); + break; + } + } + } + } +} + +static void +_edje_real_part_rel_to_apply(Edje *ed, Edje_Real_Part *ep, Edje_Real_Part_State *state) +{ + state->rel1_to_x = state->rel1_to_y = NULL; + state->rel2_to_x = state->rel2_to_y = NULL; + + if (state->description) + { + if (state->description->rel1.id_x >= 0) + state->rel1_to_x = ed->table_parts[state->description->rel1.id_x % ed->table_parts_size]; + if (state->description->rel1.id_y >= 0) + state->rel1_to_y = ed->table_parts[state->description->rel1.id_y % ed->table_parts_size]; + if (state->description->rel2.id_x >= 0) + state->rel2_to_x = ed->table_parts[state->description->rel2.id_x % ed->table_parts_size]; + if (state->description->rel2.id_y >= 0) + state->rel2_to_y = ed->table_parts[state->description->rel2.id_y % ed->table_parts_size]; + + if (ep->part->type == EDJE_PART_TYPE_EXTERNAL) + { + Edje_Part_Description_External *external; + + external = (Edje_Part_Description_External*) state->description; + + if (state->external_params) + _edje_external_parsed_params_free(ep->swallowed_object, state->external_params); + state->external_params = _edje_external_params_parse(ep->swallowed_object, external->external_params); + } + } +} + +void +_edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2) +{ + Edje_Part_Description_Common *epd1; + Edje_Part_Description_Common *epd2 = NULL; + Edje_Part_Description_Common *chosen_desc; + + Edje_Part_Description_Image *epdi; + + if (!d1) d1 = "default"; + + epd1 = _edje_part_description_find(ed, ep, d1, v1); + if (!epd1) + epd1 = ep->part->default_desc; /* never NULL */ + + if (d2) + epd2 = _edje_part_description_find(ed, ep, d2, v2); + + epdi = (Edje_Part_Description_Image*) epd2; + + /* There is an animation if both description are different or if description is an image with tweens */ + if (epd2 && (epd1 != epd2 || (ep->part->type == EDJE_PART_TYPE_IMAGE && epdi->image.tweens_count))) + { + if (!ep->param2) + { + ep->param2 = eina_mempool_malloc(_edje_real_part_state_mp, + sizeof(Edje_Real_Part_State)); + memset(ep->param2, 0, sizeof(Edje_Real_Part_State)); + } + else if (ep->part->type == EDJE_PART_TYPE_EXTERNAL) + _edje_external_parsed_params_free(ep->swallowed_object, + ep->param2->external_params); + ep->param2->external_params = NULL; + } + else + if (ep->param2) + { + if (ep->part->type == EDJE_PART_TYPE_EXTERNAL) + _edje_external_parsed_params_free(ep->swallowed_object, + ep->param2->external_params); + if (ep->param2) + free(ep->param2->set); + eina_mempool_free(_edje_real_part_state_mp, ep->param2); + ep->param2 = NULL; + } + + chosen_desc = ep->chosen_description; + ep->param1.description = epd1; + ep->chosen_description = epd1; + + _edje_real_part_rel_to_apply(ed, ep, &ep->param1); + + if (ep->param2) + { + ep->param2->description = epd2; + + _edje_real_part_rel_to_apply(ed, ep, ep->param2); + + if (ep->description_pos > FROM_DOUBLE(0.0)) + ep->chosen_description = epd2; + } + + if (chosen_desc != ep->chosen_description && + ep->part->type == EDJE_PART_TYPE_EXTERNAL) + _edje_external_recalc_apply(ed, ep, NULL, chosen_desc); + + ed->recalc_hints = 1; + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ep->invalidate = 1; +#endif +} + +void +_edje_recalc(Edje *ed) +{ + if ((ed->freeze > 0) || (_edje_freeze_val > 0)) + { + ed->recalc = 1; + if (!ed->calc_only) + { + if (_edje_freeze_val > 0) + { + if (!ed->freeze_calc) + { + _edje_freeze_calc_count++; + _edje_freeze_calc_list = eina_list_append(_edje_freeze_calc_list, ed); + ed->freeze_calc = 1; + } + } + return; + } + } +// XXX: dont need this with current smart calc infra. remove me later +// if (ed->postponed) return; +// if (!ed->calc_only) + evas_object_smart_changed(ed->obj); +// XXX: dont need this with current smart calc infra. remove me later +// ed->postponed = 1; +} + +void +_edje_recalc_do(Edje *ed) +{ + unsigned int i; + Eina_Bool need_calc; + +// XXX: dont need this with current smart calc infra. remove me later +// ed->postponed = 0; + need_calc = evas_object_smart_need_recalculate_get(ed->obj); + evas_object_smart_need_recalculate_set(ed->obj, 0); + if (!ed->dirty) return; + ed->have_mapped_part = 0; + ed->dirty = 0; + ed->state++; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *ep; + + ep = ed->table_parts[i]; + ep->calculated = FLAG_NONE; + ep->calculating = FLAG_NONE; + } + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *ep; + + ep = ed->table_parts[i]; + if (ep->calculated != FLAG_XY) + _edje_part_recalc(ed, ep, (~ep->calculated) & FLAG_XY, NULL); + } + if (!ed->calc_only) ed->recalc = 0; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 0; + ed->text_part_change = 0; +#endif + if (!ed->calc_only) + { + if (ed->recalc_call) + evas_object_smart_callback_call(ed->obj, "recalc", NULL); + } + else + evas_object_smart_need_recalculate_set(ed->obj, need_calc); + ed->recalc_call = 0; + + if (ed->update_hints && ed->recalc_hints && !ed->calc_only) + { + Evas_Coord w, h; + + ed->recalc_hints = 0; + + edje_object_size_min_calc(ed->obj, &w, &h); + evas_object_size_hint_min_set(ed->obj, w, h); + } + + if (!ed->collection) return ; + + for (i = 0; i < ed->collection->limits.parts_count; i++) + { + const char *name; + unsigned char limit; + int part; + + part = ed->collection->limits.parts[i].part; + name = ed->collection->parts[part]->name; + limit = ed->table_parts[part]->chosen_description->limit; + switch (limit) + { + case 0: + ed->collection->limits.parts[i].width = EDJE_PART_LIMIT_UNKNOWN; + ed->collection->limits.parts[i].height = EDJE_PART_LIMIT_UNKNOWN; + break; + case 1: + ed->collection->limits.parts[i].height = EDJE_PART_LIMIT_UNKNOWN; + break; + case 2: + ed->collection->limits.parts[i].width = EDJE_PART_LIMIT_UNKNOWN; + break; + case 3: + break; + } + + if ((limit & 1) == 1) + { + if (ed->table_parts[part]->w > 0 && + (ed->collection->limits.parts[i].width != EDJE_PART_LIMIT_OVER)) + { + ed->collection->limits.parts[i].width = EDJE_PART_LIMIT_OVER; + _edje_emit(ed, "limit,width,over", name); + } + else if (ed->table_parts[part]->w < 0 && + ed->collection->limits.parts[i].width != EDJE_PART_LIMIT_BELOW) + { + ed->collection->limits.parts[i].width = EDJE_PART_LIMIT_BELOW; + _edje_emit(ed, "limit,width,below", name); + } + else if (ed->table_parts[part]->w == 0 && + ed->collection->limits.parts[i].width != EDJE_PART_LIMIT_ZERO) + { + ed->collection->limits.parts[i].width = EDJE_PART_LIMIT_ZERO; + _edje_emit(ed, "limit,width,zero", name); + } + } + if ((limit & 2) == 2) + { + if (ed->table_parts[part]->h > 0 && + (ed->collection->limits.parts[i].height != EDJE_PART_LIMIT_OVER)) + { + ed->collection->limits.parts[i].height = EDJE_PART_LIMIT_OVER; + _edje_emit(ed, "limit,height,over", name); + } + else if (ed->table_parts[part]->h < 0 && + ed->collection->limits.parts[i].height != EDJE_PART_LIMIT_BELOW) + { + ed->collection->limits.parts[i].height = EDJE_PART_LIMIT_BELOW; + _edje_emit(ed, "limit,height,below", name); + } + else if (ed->table_parts[part]->h == 0 && + ed->collection->limits.parts[i].height != EDJE_PART_LIMIT_ZERO) + { + ed->collection->limits.parts[i].height = EDJE_PART_LIMIT_ZERO; + _edje_emit(ed, "limit,height,zero", name); + } + } + } +} + +void +_edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep) +{ + _edje_part_recalc(ed, ep, FLAG_XY, NULL); +} + +int +_edje_part_dragable_calc(Edje *ed __UNUSED__, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y) +{ + if (ep->drag) + { + if (ep->drag->confine_to) + { + FLOAT_T dx, dy, dw, dh; + int ret = 0; + + if ((ep->part->dragable.x != 0) && + (ep->part->dragable.y != 0 )) ret = 3; + else if (ep->part->dragable.x != 0) ret = 1; + else if (ep->part->dragable.y != 0) ret = 2; + + dx = FROM_INT(ep->x - ep->drag->confine_to->x); + dw = FROM_INT(ep->drag->confine_to->w - ep->w); + if (dw != ZERO) dx = DIV(dx, dw); + else dx = ZERO; + + dy = FROM_INT(ep->y - ep->drag->confine_to->y); + dh = FROM_INT(ep->drag->confine_to->h - ep->h); + if (dh != ZERO) dy = DIV(dy, dh); + else dy = ZERO; + + if (x) *x = dx; + if (y) *y = dy; + + return ret; + } + else + { + if (x) *x = ADD(FROM_INT(ep->drag->tmp.x), ep->drag->x); + if (y) *y = ADD(FROM_INT(ep->drag->tmp.y), ep->drag->y); + return 0; + } + } + if (x) *x = ZERO; + if (y) *y = ZERO; + return 0; +} + +void +_edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y) +{ + /* check whether this part is dragable at all */ + if (!ep->drag) return ; + + /* instead of checking for equality, we really should check that + * the difference is greater than foo, but I have no idea what + * value we would set foo to, because it would depend on the + * size of the dragable... + */ + if (ep->drag->x != x || ep->drag->tmp.x) + { + ep->drag->x = x; + ep->drag->tmp.x = 0; + ep->drag->need_reset = 0; + ed->dirty = 1; + ed->recalc_call = 1; + } + + if (ep->drag->y != y || ep->drag->tmp.y) + { + ep->drag->y = y; + ep->drag->tmp.y = 0; + ep->drag->need_reset = 0; + ed->dirty = 1; + ed->recalc_call = 1; + } + +#ifdef EDJE_CALC_CACHE + ep->invalidate = 1; +#endif + _edje_recalc(ed); /* won't do anything if dirty flag isn't set */ +} + +static void +_edje_part_recalc_single_rel(Edje *ed, + Edje_Real_Part *ep __UNUSED__, + Edje_Part_Description_Common *desc, + Edje_Real_Part *rel1_to_x, + Edje_Real_Part *rel1_to_y, + Edje_Real_Part *rel2_to_x, + Edje_Real_Part *rel2_to_y, + Edje_Calc_Params *params) +{ + FLOAT_T x, w; + FLOAT_T y, h; + + if (rel1_to_x) + x = ADD(FROM_INT(desc->rel1.offset_x + rel1_to_x->x), + SCALE(desc->rel1.relative_x, rel1_to_x->w)); + else + x = ADD(FROM_INT(desc->rel1.offset_x), + SCALE(desc->rel1.relative_x, ed->w)); + params->x = TO_INT(x); + + if (rel2_to_x) + w = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_x + rel2_to_x->x), + SCALE(desc->rel2.relative_x, rel2_to_x->w)), + x), + FROM_INT(1)); + else + w = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_x), + SCALE(desc->rel2.relative_x, ed->w)), + x), + FROM_INT(1)); + params->w = TO_INT(w); + + if (rel1_to_y) + y = ADD(FROM_INT(desc->rel1.offset_y + rel1_to_y->y), + SCALE(desc->rel1.relative_y, rel1_to_y->h)); + else + y = ADD(FROM_INT(desc->rel1.offset_y), + SCALE(desc->rel1.relative_y, ed->h)); + params->y = TO_INT(y); + + if (rel2_to_y) + h = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_y + rel2_to_y->y), + SCALE(desc->rel2.relative_y, rel2_to_y->h)), + y), + FROM_INT(1)); + else + h = ADD(SUB(ADD(FROM_INT(desc->rel2.offset_y), + SCALE(desc->rel2.relative_y, ed->h)), + y), + FROM_INT(1)); + params->h = TO_INT(h); +} + +static Edje_Internal_Aspect +_edje_part_recalc_single_aspect(Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description_Common *desc, + Edje_Calc_Params *params, + int *minw, int *minh, + int *maxw, int *maxh, + FLOAT_T pos) +{ + Edje_Internal_Aspect apref = EDJE_ASPECT_PREFER_NONE; + FLOAT_T aspect, amax, amin; + FLOAT_T new_w = ZERO, new_h = ZERO, want_x, want_y, want_w, want_h; + + if (params->h <= ZERO) aspect = FROM_INT(999999); + else aspect = DIV(FROM_INT(params->w), FROM_INT(params->h)); + amax = desc->aspect.max; + amin = desc->aspect.min; + if (desc->aspect.prefer == EDJE_ASPECT_PREFER_SOURCE && + ep->part->type == EDJE_PART_TYPE_IMAGE) + { + Evas_Coord w, h; + + /* We only need pose to find the right image that would be displayed, + and the right aspect ratio in that case */ + _edje_real_part_image_set(ed, ep, pos); + evas_object_image_size_get(ep->object, &w, &h); + amin = amax = DIV(FROM_INT(w), FROM_INT(h)); + } + if ((ep->swallow_params.aspect.w > 0) && + (ep->swallow_params.aspect.h > 0)) + amin = amax = + DIV(FROM_INT(ep->swallow_params.aspect.w), + FROM_INT(ep->swallow_params.aspect.h)); + want_x = FROM_INT(params->x); + want_w = new_w = FROM_INT(params->w); + + want_y = FROM_INT(params->y); + want_h = new_h = FROM_INT(params->h); + + if ((amin > ZERO) && (amax > ZERO)) + { + apref = desc->aspect.prefer; + if (ep->swallow_params.aspect.mode > EDJE_ASPECT_CONTROL_NONE) + { + switch (ep->swallow_params.aspect.mode) + { + case EDJE_ASPECT_CONTROL_NEITHER: + apref = EDJE_ASPECT_PREFER_NONE; + break; + case EDJE_ASPECT_CONTROL_HORIZONTAL: + apref = EDJE_ASPECT_PREFER_HORIZONTAL; + break; + case EDJE_ASPECT_CONTROL_VERTICAL: + apref = EDJE_ASPECT_PREFER_VERTICAL; + break; + case EDJE_ASPECT_CONTROL_BOTH: + apref = EDJE_ASPECT_PREFER_BOTH; + break; + default: + break; + } + } + switch (apref) + { + case EDJE_ASPECT_PREFER_NONE: + /* keep both dimensions in check */ + /* adjust for min aspect (width / height) */ + if ((amin > ZERO) && (aspect < amin)) + { + new_h = DIV(FROM_INT(params->w), amin); + new_w = SCALE(amin, params->h); + } + /* adjust for max aspect (width / height) */ + if ((amax > ZERO) && (aspect > amax)) + { + new_h = DIV(FROM_INT(params->w), amax); + new_w = SCALE(amax, params->h); + } + if ((amax > ZERO) && (new_w < FROM_INT(params->w))) + { + new_w = FROM_INT(params->w); + new_h = DIV(FROM_INT(params->w), amax); + } + if ((amax > ZERO) && (new_h < FROM_INT(params->h))) + { + new_w = SCALE(amax, params->h); + new_h = FROM_INT(params->h); + } + break; + /* prefer vertical size as determiner */ + case EDJE_ASPECT_PREFER_VERTICAL: + /* keep both dimensions in check */ + /* adjust for max aspect (width / height) */ + if ((amax > ZERO) && (aspect > amax)) + new_w = SCALE(amax, params->h); + /* adjust for min aspect (width / height) */ + if ((amin > ZERO) && (aspect < amin)) + new_w = SCALE(amin, params->h); + break; + /* prefer horizontal size as determiner */ + case EDJE_ASPECT_PREFER_HORIZONTAL: + /* keep both dimensions in check */ + /* adjust for max aspect (width / height) */ + if ((amax > ZERO) && (aspect > amax)) + new_h = DIV(FROM_INT(params->w), amax); + /* adjust for min aspect (width / height) */ + if ((amin > ZERO) && (aspect < amin)) + new_h = DIV(FROM_INT(params->w), amin); + break; + case EDJE_ASPECT_PREFER_SOURCE: + case EDJE_ASPECT_PREFER_BOTH: + /* keep both dimensions in check */ + /* adjust for max aspect (width / height) */ + if ((amax > ZERO) && (aspect > amax)) + { + new_w = SCALE(amax, params->h); + new_h = DIV(FROM_INT(params->w), amax); + } + /* adjust for min aspect (width / height) */ + if ((amin > ZERO) && (aspect < amin)) + { + new_w = SCALE(amin, params->h); + new_h = DIV(FROM_INT(params->w), amin); + } + break; + default: + break; + } + + if (!((amin > ZERO) && (amax > ZERO) && + (apref == EDJE_ASPECT_PREFER_NONE))) + { + if ((*maxw >= 0) && (new_w > FROM_INT(*maxw))) + new_w = FROM_INT(*maxw); + if (new_w < FROM_INT(*minw)) + new_w = FROM_INT(*minw); + + if ((FROM_INT(*maxh) >= 0) && (new_h > FROM_INT(*maxh))) + new_h = FROM_INT(*maxh); + if (new_h < FROM_INT(*minh)) + new_h = FROM_INT(*minh); + } + + /* do real adjustment */ + if (apref == EDJE_ASPECT_PREFER_BOTH) + { + if (amin == ZERO) amin = amax; + if (amin != ZERO) + { + /* fix h and vary w */ + if (new_w > FROM_INT(params->w)) + { + // params->w = new_w; + // EXCEEDS BOUNDS in W + new_h = DIV(FROM_INT(params->w), amin); + new_w = FROM_INT(params->w); + if (new_h > FROM_INT(params->h)) + { + new_h = FROM_INT(params->h); + new_w = SCALE(amin, params->h); + } + } + /* fix w and vary h */ + else + { + // params->h = new_h; + // EXCEEDS BOUNDS in H + new_h = FROM_INT(params->h); + new_w = SCALE(amin, params->h); + if (new_w > FROM_INT(params->w)) + { + new_h = DIV(FROM_INT(params->w), amin); + new_w = FROM_INT(params->w); + } + } + params->w = TO_INT(new_w); + params->h = TO_INT(new_h); + } + } + } + if (apref != EDJE_ASPECT_PREFER_BOTH) + { + if ((amin > 0.0) && (amax > ZERO) && (apref == EDJE_ASPECT_PREFER_NONE)) + { + params->w = TO_INT(new_w); + params->h = TO_INT(new_h); + } + else if ((FROM_INT(params->h) - new_h) > (FROM_INT(params->w) - new_w)) + { + if (params->h < TO_INT(new_h)) + params->h = TO_INT(new_h); + else if (params->h > TO_INT(new_h)) + params->h = TO_INT(new_h); + if (apref == EDJE_ASPECT_PREFER_VERTICAL) + params->w = TO_INT(new_w); + } + else + { + if (params->w < TO_INT(new_w)) + params->w = TO_INT(new_w); + else if (params->w > TO_INT(new_w)) + params->w = TO_INT(new_w); + if (apref == EDJE_ASPECT_PREFER_HORIZONTAL) + params->h = TO_INT(new_h); + } + } + params->x = TO_INT(ADD(want_x, + MUL(SUB(want_w, FROM_INT(params->w)), + desc->align.x))); + params->y = TO_INT(ADD(want_y, + MUL(SUB(want_h, FROM_INT(params->h)), + desc->align.y))); + return apref; +} + +static void +_edje_part_recalc_single_step(Edje_Part_Description_Common *desc, + Edje_Calc_Params *params) +{ + if (desc->step.x > 0) + { + int steps; + int new_w; + + steps = params->w / desc->step.x; + new_w = desc->step.x * steps; + if (params->w > new_w) + { + params->x += TO_INT(SCALE(desc->align.x, (params->w - new_w))); + params->w = new_w; + } + } + + if (desc->step.y > 0) + { + int steps; + int new_h; + + steps = params->h / desc->step.y; + new_h = desc->step.y * steps; + if (params->h > new_h) + { + params->y += TO_INT(SCALE(desc->align.y, (params->h - new_h))); + params->h = new_h; + } + } +} + +static void +_edje_part_recalc_single_textblock(FLOAT_T sc, + Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description_Text *chosen_desc, + Edje_Calc_Params *params, + int *minw, int *minh, + int *maxw, int *maxh) +{ + if (chosen_desc) + { + Evas_Coord tw, th, ins_l, ins_r, ins_t, ins_b; + const char *text = ""; + const char *style = ""; + Edje_Style *stl = NULL; + const char *tmp; + Eina_List *l; + + if (chosen_desc->text.id_source >= 0) + { + ep->text.source = ed->table_parts[chosen_desc->text.id_source % ed->table_parts_size]; + + tmp = edje_string_get(&((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style); + if (tmp) style = tmp; + } + else + { + ep->text.source = NULL; + + tmp = edje_string_get(&chosen_desc->text.style); + if (tmp) style = tmp; + } + + if (chosen_desc->text.id_text_source >= 0) + { + ep->text.text_source = ed->table_parts[chosen_desc->text.id_text_source % ed->table_parts_size]; + text = edje_string_get(&((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text); + + if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; + } + else + { + ep->text.text_source = NULL; + text = edje_string_get(&chosen_desc->text.text); + if (ep->text.text) text = ep->text.text; + } + + EINA_LIST_FOREACH(ed->file->styles, l, stl) + { + if ((stl->name) && (!strcmp(stl->name, style))) break; + stl = NULL; + } + + if (ep->part->scale) + evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + + if (stl) + { + const char *ptxt; + + if (evas_object_textblock_style_get(ep->object) != stl->style) + evas_object_textblock_style_set(ep->object, stl->style); + // FIXME: need to account for editing + if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + // do nothing - should be done elsewhere + } + else + { + ptxt = evas_object_textblock_text_markup_get(ep->object); + if (((!ptxt) && (text)) || + ((ptxt) && (text) && (strcmp(ptxt, text))) || + ((ptxt) && (!text))) + evas_object_textblock_text_markup_set(ep->object, text); + } + if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y)) + { + int mw = 0, mh = 0; + + tw = th = 0; + if (!chosen_desc->text.min_x) + { + evas_object_resize(ep->object, params->w, params->h); + evas_object_textblock_size_formatted_get(ep->object, &tw, + &th); + } + else + evas_object_textblock_size_native_get(ep->object, &tw, &th); + evas_object_textblock_style_insets_get(ep->object, &ins_l, + &ins_r, &ins_t, &ins_b); + mw = ins_l + tw + ins_r; + mh = ins_t + th + ins_b; + if (chosen_desc->text.min_x) + { + if (mw > *minw) *minw = mw; + } + if (chosen_desc->text.min_y) + { + if (mh > *minh) *minh = mh; + } + } + } + if ((chosen_desc->text.max_x) || (chosen_desc->text.max_y)) + { + int mw = 0, mh = 0; + + tw = th = 0; + if (!chosen_desc->text.max_x) + { + evas_object_resize(ep->object, params->w, params->h); + evas_object_textblock_size_formatted_get(ep->object, &tw, &th); + } + else + evas_object_textblock_size_native_get(ep->object, &tw, &th); + evas_object_textblock_style_insets_get(ep->object, &ins_l, &ins_r, + &ins_t, &ins_b); + mw = ins_l + tw + ins_r; + mh = ins_t + th + ins_b; + if (chosen_desc->text.max_x) + { + if (mw > *maxw) *maxw = mw; + if (*maxw < *minw) *maxw = *minw; + } + if (chosen_desc->text.max_y) + { + if (mh > *maxw) *maxh = mh; + if (*maxh < *minh) *maxh = *minh; + } + } + if ((chosen_desc->text.fit_x) || (chosen_desc->text.fit_y)) + { + double s = 1.0; + + if (ep->part->scale) s = TO_DOUBLE(sc); + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, &tw, &th); + if (chosen_desc->text.fit_x) + { + if ((tw > 0) && (tw > params->w)) + { + s = (s * params->w) / (double)tw; + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, + &tw, &th); + } + } + if (chosen_desc->text.fit_y) + { + if ((th > 0) && (th > params->h)) + { + s = (s * params->h) / (double)th; + evas_object_scale_set(ep->object, s); + evas_object_textblock_size_formatted_get(ep->object, + &tw, &th); + } + } + } + evas_object_textblock_valign_set(ep->object, TO_DOUBLE(chosen_desc->text.align.y)); + } +} + +static void +_edje_textblock_recalc_apply(Edje *ed, Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Text *chosen_desc) +{ + /* FIXME: this is just an hack. */ + FLOAT_T sc; + sc = ed->scale; + if (sc == ZERO) sc = _edje_scale; + if (chosen_desc->text.fit_x || chosen_desc->text.fit_y) + { + _edje_part_recalc_single_textblock(sc, ed, ep, chosen_desc, params, + NULL, NULL, NULL, NULL); + } +} + +static void +_edje_part_recalc_single_text(FLOAT_T sc __UNUSED__, + Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description_Text *desc, + Edje_Part_Description_Text *chosen_desc, + Edje_Calc_Params *params, + int *minw, int *minh, + int *maxw, int *maxh) +#define RECALC_SINGLE_TEXT_USING_APPLY 1 +#if RECALC_SINGLE_TEXT_USING_APPLY +/* + * XXX TODO NOTE: + * + * Original _edje_part_recalc_single_text() was not working as + * expected since it was not doing size fit, range, ellipsis and so + * on. + * + * The purpose of this function compared with + * _edje_text_recalc_apply() is to be faster, not calling Evas update + * functions. However for text this is quite difficult given that to + * fit we need to set the font, size, style, etc. If it was done + * correctly, we'd save some calls to move and some color sets, + * however those shouldn't matter much in the overall picture. + * + * I've changed this to force applying the value, it should be more + * correct and not so slow. The previous code is kept below for + * reference but should be removed before next release! + * + * -- Gustavo Barbieri at 20-Aug-2011 + */ +{ + int tw, th, mw, mh, l, r, t, b, size; + char *sfont = NULL; + + _edje_text_class_font_get(ed, desc, &size, &sfont); + free(sfont); + params->type.text.size = size; /* XXX TODO used by further calcs, go inside recalc_apply? */ + + _edje_text_recalc_apply(ed, ep, params, chosen_desc); + + evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th); + + if ((!chosen_desc) || + ((!chosen_desc->text.min_x) && (!chosen_desc->text.min_y) && + (!chosen_desc->text.max_x) && (!chosen_desc->text.max_y))) + return; + + evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th); + evas_object_text_style_pad_get(ep->object, &l, &r, &t, &b); + + mw = tw + l + r; + mh = th + t + b; + + if (chosen_desc->text.max_x) + { + if ((*maxw < 0) || (mw < *maxw)) *maxw = mw; + } + if (chosen_desc->text.max_y) + { + if ((*maxh < 0) || (mh < *maxh)) *maxh = mh; + } + if (chosen_desc->text.min_x) + { + if (mw > *minw) *minw = mw; + } + if (chosen_desc->text.min_y) + { + if (mh > *minh) *minh = mh; + } +} +#else +{ + char *sfont = NULL; + int size; + + if (chosen_desc) + { + const char *text; + const char *font; + Evas_Coord tw, th; + int inlined_font = 0; + + /* Update a object_text part */ + + if (chosen_desc->text.id_source >= 0) + ep->text.source = ed->table_parts[chosen_desc->text.id_source % ed->table_parts_size]; + else + ep->text.source = NULL; + + if (chosen_desc->text.id_text_source >= 0) + ep->text.text_source = ed->table_parts[chosen_desc->text.id_text_source % ed->table_parts_size]; + else + ep->text.text_source = NULL; + + if (ep->text.text_source) + text = edje_string_get(&(((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text)); + else + text = edje_string_get(&chosen_desc->text.text); + + if (ep->text.source) + font = _edje_text_class_font_get(ed, ((Edje_Part_Description_Text*)ep->text.source->chosen_description), &size, &sfont); + else + font = _edje_text_class_font_get(ed, chosen_desc, &size, &sfont); + + if (!font) font = ""; + + if (ep->text.text_source) + { + if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; + } + else + { + if (ep->text.text) text = ep->text.text; + } + + if (ep->text.source) + { + if (ep->text.source->text.font) font = ep->text.source->text.font; + if (ep->text.source->text.size > 0) size = ep->text.source->text.size; + } + else + { + if (ep->text.font) font = ep->text.font; + if (ep->text.size > 0) size = ep->text.size; + } + if (!text) text = ""; + + /* check if the font is embedded in the .eet */ + if (ed->file->fonts) + { + Edje_Font_Directory_Entry *fnt; + + fnt = eina_hash_find(ed->file->fonts, font); + + if (fnt) + { + char *font2; + + size_t len = strlen(font) + sizeof("edje/fonts/") + 1; + font2 = alloca(len); + sprintf(font2, "edje/fonts/%s", font); + font = font2; + inlined_font = 1; + } + } + if (ep->part->scale) + evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + if (inlined_font) + { + evas_object_text_font_source_set(ep->object, ed->path); + } + else evas_object_text_font_source_set(ep->object, NULL); + + if ((_edje_fontset_append) && (font)) + { + char *font2; + + font2 = malloc(strlen(font) + 1 + strlen(_edje_fontset_append) + 1); + if (font2) + { + strcpy(font2, font); + strcat(font2, ","); + strcat(font2, _edje_fontset_append); + evas_object_text_font_set(ep->object, font2, size); + free(font2); + } + } + else + evas_object_text_font_set(ep->object, font, size); + if ((chosen_desc->text.min_x) || (chosen_desc->text.min_y) || + (chosen_desc->text.max_x) || (chosen_desc->text.max_y)) + { + int mw, mh; + Evas_Text_Style_Type + style = EVAS_TEXT_STYLE_PLAIN, + shadow = EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT; + const Evas_Text_Style_Type styles[] = { + EVAS_TEXT_STYLE_PLAIN, + EVAS_TEXT_STYLE_PLAIN, + EVAS_TEXT_STYLE_OUTLINE, + EVAS_TEXT_STYLE_SOFT_OUTLINE, + EVAS_TEXT_STYLE_SHADOW, + EVAS_TEXT_STYLE_SOFT_SHADOW, + EVAS_TEXT_STYLE_OUTLINE_SHADOW, + EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW, + EVAS_TEXT_STYLE_FAR_SHADOW, + EVAS_TEXT_STYLE_FAR_SOFT_SHADOW, + EVAS_TEXT_STYLE_GLOW + }; + const Evas_Text_Style_Type shadows[] = { + EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT, + EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT + }; + + if ((ep->part->effect & EVAS_TEXT_STYLE_MASK_BASIC) + < EDJE_TEXT_EFFECT_LAST) + style = styles[ep->part->effect]; + shadow = shadows + [(ep->part->effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) >> 4]; + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET(style, shadow); + + evas_object_text_style_set(ep->object, style); + evas_object_text_text_set(ep->object, text); + evas_object_geometry_get(ep->object, NULL, NULL, &tw, &th); + if (chosen_desc->text.max_x) + { + int l, r; + evas_object_text_style_pad_get(ep->object, &l, &r, NULL, NULL); + mw = tw + l + r; + if ((*maxw < 0) || (mw < *maxw)) *maxw = mw; + } + if (chosen_desc->text.max_y) + { + int t, b; + evas_object_text_style_pad_get(ep->object, NULL, NULL, &t, &b); + mh = th + t + b; + if ((*maxh < 0) || (mh < *maxh)) *maxh = mh; + } + if (chosen_desc->text.min_x) + { + int l, r; + evas_object_text_style_pad_get(ep->object, &l, &r, NULL, NULL); + mw = tw + l + r; + if (mw > *minw) *minw = mw; + } + if (chosen_desc->text.min_y) + { + int t, b; + evas_object_text_style_pad_get(ep->object, NULL, NULL, &t, &b); + mh = th + t + b; + if (mh > *minh) *minh = mh; + } + } + if (sfont) free(sfont); + } + + /* FIXME: Do we really need to call it twice if chosen_desc ? */ + sfont = NULL; + _edje_text_class_font_get(ed, desc, &size, &sfont); + free(sfont); + params->type.text.size = size; +} +#endif + +static void +_edje_part_recalc_single_min_length(FLOAT_T align, int *start, int *length, int min) +{ + if (min >= 0) + { + if (*length < min) + { + *start += TO_INT(SCALE(align, (*length - min))); + *length = min; + } + } +} + +static void +_edje_part_recalc_single_min(Edje_Part_Description_Common *desc, + Edje_Calc_Params *params, + int minw, int minh, + Edje_Internal_Aspect aspect) +{ + int tmp; + int w; + int h; + + w = params->w ? params->w : 99999; + h = params->h ? params->h : 99999; + + switch (aspect) + { + case EDJE_ASPECT_PREFER_NONE: + break; + case EDJE_ASPECT_PREFER_VERTICAL: + tmp = minh * params->w / h; + if (tmp >= minw) + { + minw = tmp; + break; + } + case EDJE_ASPECT_PREFER_HORIZONTAL: + tmp = minw * params->h / w; + if (tmp >= minh) + { + minh = tmp; + break; + } + case EDJE_ASPECT_PREFER_SOURCE: + case EDJE_ASPECT_PREFER_BOTH: + tmp = minh * params->w / h; + if (tmp >= minw) + { + minw = tmp; + break; + } + + tmp = minw * params->h / w; + if (tmp >= minh) + { + minh = tmp; + break; + } + + break; + } + + _edje_part_recalc_single_min_length(desc->align.x, ¶ms->x, ¶ms->w, minw); + _edje_part_recalc_single_min_length(desc->align.y, ¶ms->y, ¶ms->h, minh); +} + +static void +_edje_part_recalc_single_max_length(FLOAT_T align, int *start, int *length, int max) +{ + if (max >= 0) + { + if (*length > max) + { + *start += TO_INT(SCALE(align, (*length - max))); + *length = max; + } + } +} + +static void +_edje_part_recalc_single_max(Edje_Part_Description_Common *desc, + Edje_Calc_Params *params, + int maxw, int maxh, + Edje_Internal_Aspect aspect) +{ + int tmp; + int w; + int h; + + w = params->w ? params->w : 99999; + h = params->h ? params->h : 99999; + + switch (aspect) + { + case EDJE_ASPECT_PREFER_NONE: + break; + case EDJE_ASPECT_PREFER_VERTICAL: + tmp = maxh * params->w / h; + if (tmp <= maxw) + { + maxw = tmp; + break; + } + case EDJE_ASPECT_PREFER_HORIZONTAL: + tmp = maxw * params->h / w; + if (tmp <= maxh) + { + maxh = tmp; + break; + } + case EDJE_ASPECT_PREFER_SOURCE: + case EDJE_ASPECT_PREFER_BOTH: + tmp = maxh * params->w / h; + if (tmp <= maxw) + { + maxw = tmp; + break; + } + + tmp = maxw * params->h / w; + if (tmp <= maxh) + { + maxh = tmp; + break; + } + + break; + } + + _edje_part_recalc_single_max_length(desc->align.x, ¶ms->x, ¶ms->w, maxw); + _edje_part_recalc_single_max_length(desc->align.y, ¶ms->y, ¶ms->h, maxh); +} + +static void +_edje_part_recalc_single_drag(Edje_Real_Part *ep, + Edje_Real_Part *confine_to, + Edje_Calc_Params *params, + int minw, int minh, + int maxw, int maxh) +{ + /* confine */ + if (confine_to) + { + int offset; + int step; + FLOAT_T v; + + /* complex dragable params */ + v = SCALE(ep->drag->size.x, confine_to->w); + + if ((minw > 0) && (TO_INT(v) < minw)) params->w = minw; + else if ((maxw >= 0) && (TO_INT(v) > maxw)) params->w = maxw; + else params->w = TO_INT(v); + + offset = TO_INT(SCALE(ep->drag->x, (confine_to->w - params->w))) + + ep->drag->tmp.x; + if (ep->part->dragable.step_x > 0) + { + params->x = confine_to->x + + ((offset / ep->part->dragable.step_x) * ep->part->dragable.step_x); + } + else if (ep->part->dragable.count_x > 0) + { + step = (confine_to->w - params->w) / ep->part->dragable.count_x; + if (step < 1) step = 1; + params->x = confine_to->x + + ((offset / step) * step); + } + params->req_drag.x = params->x; + params->req_drag.w = params->w; + + v = SCALE(ep->drag->size.y, confine_to->h); + + if ((minh > 0) && (TO_INT(v) < minh)) params->h = minh; + else if ((maxh >= 0) && (TO_INT(v) > maxh)) params->h = maxh; + else params->h = TO_INT(v); + + offset = TO_INT(SCALE(ep->drag->y, (confine_to->h - params->h))) + + ep->drag->tmp.y; + if (ep->part->dragable.step_y > 0) + { + params->y = confine_to->y + + ((offset / ep->part->dragable.step_y) * ep->part->dragable.step_y); + } + else if (ep->part->dragable.count_y > 0) + { + step = (confine_to->h - params->h) / ep->part->dragable.count_y; + if (step < 1) step = 1; + params->y = confine_to->y + + ((offset / step) * step); + } + params->req_drag.y = params->y; + params->req_drag.h = params->h; + + /* limit to confine */ + if (params->x < confine_to->x) + { + params->x = confine_to->x; + } + if ((params->x + params->w) > (confine_to->x + confine_to->w)) + { + params->x = confine_to->x + confine_to->w - params->w; + } + if (params->y < confine_to->y) + { + params->y = confine_to->y; + } + if ((params->y + params->h) > (confine_to->y + confine_to->h)) + { + params->y = confine_to->y + confine_to->h - params->h; + } + } + else + { + /* simple dragable params */ + params->x += TO_INT(ep->drag->x) + ep->drag->tmp.x; + params->req_drag.x = params->x; + params->req_drag.w = params->w; + + params->y += TO_INT(ep->drag->y) + ep->drag->tmp.y; + params->req_drag.y = params->y; + params->req_drag.h = params->h; + } +} + +static void +_edje_part_recalc_single_fill(Edje_Real_Part *ep, + Edje_Part_Description_Spec_Fill *fill, + Edje_Calc_Params *params) +{ + int fw; + int fh; + + params->smooth = fill->smooth; + + if (fill->type == EDJE_FILL_TYPE_TILE) + evas_object_image_size_get(ep->object, &fw, NULL); + else + fw = params->w; + + params->type.common.fill.x = fill->pos_abs_x + + TO_INT(SCALE(fill->pos_rel_x, fw)); + params->type.common.fill.w = fill->abs_x + + TO_INT(SCALE(fill->rel_x, fw)); + + if (fill->type == EDJE_FILL_TYPE_TILE) + evas_object_image_size_get(ep->object, NULL, &fh); + else + fh = params->h; + + params->type.common.fill.y = fill->pos_abs_y + + TO_INT(SCALE(fill->pos_rel_y, fh)); + params->type.common.fill.h = fill->abs_y + + TO_INT(SCALE(fill->rel_y, fh)); + + params->type.common.fill.angle = fill->angle; + params->type.common.fill.spread = fill->spread; +} + +static void +_edje_part_recalc_single_min_max(FLOAT_T sc, + Edje_Real_Part *ep, + Edje_Part_Description_Common *desc, + int *minw, int *minh, + int *maxw, int *maxh) +{ + *minw = desc->min.w; + if (ep->part->scale) *minw = TO_INT(SCALE(sc, *minw)); + if (ep->swallow_params.min.w > desc->min.w) + *minw = ep->swallow_params.min.w; + + if (ep->edje->calc_only) + { + if (desc->minmul.have) + { + FLOAT_T mmw = desc->minmul.w; + if (mmw != FROM_INT(1)) *minw = TO_INT(SCALE(mmw, *minw)); + } + } + + /* XXX TODO: remove need of EDJE_INF_MAX_W, see edje_util.c */ + if ((ep->swallow_params.max.w <= 0) || + (ep->swallow_params.max.w == EDJE_INF_MAX_W)) + { + *maxw = desc->max.w; + if (*maxw > 0) + { + if (ep->part->scale) *maxw = TO_INT(SCALE(sc, *maxw)); + if (*maxw < 1) *maxw = 1; + } + } + else + { + if (desc->max.w <= 0) + *maxw = ep->swallow_params.max.w; + else + { + *maxw = desc->max.w; + if (*maxw > 0) + { + if (ep->part->scale) *maxw = TO_INT(SCALE(sc, *maxw)); + if (*maxw < 1) *maxw = 1; + } + if (ep->swallow_params.max.w < *maxw) + *maxw = ep->swallow_params.max.w; + } + } + if ((ep->edje->calc_only) && (desc->minmul.have) && + (desc->minmul.w != FROM_INT(1))) *maxw = *minw; + if (*maxw >= 0) + { + if (*maxw < *minw) *maxw = *minw; + } + + *minh = desc->min.h; + if (ep->part->scale) *minh = TO_INT(SCALE(sc, *minh)); + if (ep->swallow_params.min.h > desc->min.h) + *minh = ep->swallow_params.min.h; + + if (ep->edje->calc_only) + { + if (desc->minmul.have) + { + FLOAT_T mmh = desc->minmul.h; + if (mmh != FROM_INT(1)) *minh = TO_INT(SCALE(mmh, *minh)); + } + } + + /* XXX TODO: remove need of EDJE_INF_MAX_H, see edje_util.c */ + if ((ep->swallow_params.max.h <= 0) || + (ep->swallow_params.max.h == EDJE_INF_MAX_H)) + { + *maxh = desc->max.h; + if (*maxh > 0) + { + if (ep->part->scale) *maxh = TO_INT(SCALE(sc, *maxh)); + if (*maxh < 1) *maxh = 1; + } + } + else + { + if (desc->max.h <= 0) + *maxh = ep->swallow_params.max.h; + else + { + *maxh = desc->max.h; + if (*maxh > 0) + { + if (ep->part->scale) *maxh = TO_INT(SCALE(sc, *maxh)); + if (*maxh < 1) *maxh = 1; + } + if (ep->swallow_params.max.h < *maxh) + *maxh = ep->swallow_params.max.h; + } + } + if ((ep->edje->calc_only) && (desc->minmul.have) && + (desc->minmul.h != FROM_INT(1))) *maxh = *minh; + if (*maxh >= 0) + { + if (*maxh < *minh) *maxh = *minh; + } +} + +static void +_edje_part_recalc_single_map(Edje *ed, + Edje_Real_Part *ep __UNUSED__, + Edje_Real_Part *center, + Edje_Real_Part *light, + Edje_Real_Part *persp, + Edje_Part_Description_Common *desc, + Edje_Part_Description_Common *chosen_desc, + Edje_Calc_Params *params) +{ + params->mapped = chosen_desc->map.on; + params->lighted = params->mapped ? !!light : 0; + params->persp_on = params->mapped ? !!persp : 0; + + if (!params->mapped) return ; + + if (center) + { + params->map.center.x = ed->x + center->x + (center->w / 2); + params->map.center.y = ed->y + center->y + (center->h / 2); + } + else + { + params->map.center.x = ed->x + params->x + (params->w / 2); + params->map.center.y = ed->y + params->y + (params->h / 2); + } + params->map.center.z = 0; + + params->map.rotation.x = desc->map.rot.x; + params->map.rotation.y = desc->map.rot.y; + params->map.rotation.z = desc->map.rot.z; + + if (light) + { + Edje_Part_Description_Common *light_desc2; + FLOAT_T pos, pos2; + + params->map.light.x = ed->x + light->x + (light->w / 2); + params->map.light.y = ed->y + light->y + (light->h / 2); + + pos = light->description_pos; + pos2 = (pos < ZERO) ? ZERO : ((pos > FROM_INT(1)) ? FROM_INT(1) : pos); + + light_desc2 = light->param2 ? light->param2->description : NULL; + + /* take into account CURRENT state also */ + if (pos != ZERO && light_desc2) + { + params->map.light.z = light->param1.description->persp.zplane + + TO_INT(SCALE(pos, light_desc2->persp.zplane - light->param1.description->persp.zplane)); + params->map.light.r = light->param1.description->color.r + + TO_INT(SCALE(pos2, light_desc2->color.r - light->param1.description->color.r)); + params->map.light.g = light->param1.description->color.g + + TO_INT(SCALE(pos2, light_desc2->color.g - light->param1.description->color.g)); + params->map.light.b = light->param1.description->color.b + + TO_INT(SCALE(pos2, light_desc2->color.b - light->param1.description->color.b)); + params->map.light.ar = light->param1.description->color2.r + + TO_INT(SCALE(pos2, light_desc2->color2.r - light->param1.description->color2.r)); + params->map.light.ag = light->param1.description->color2.g + + TO_INT(SCALE(pos2, light_desc2->color2.g - light->param1.description->color2.g)); + params->map.light.ab = light->param1.description->color2.b + + TO_INT(SCALE(pos2, light_desc2->color2.b - light->param1.description->color2.b)); + } + else + { + params->map.light.z = light->param1.description->persp.zplane; + params->map.light.r = light->param1.description->color.r; + params->map.light.g = light->param1.description->color.g; + params->map.light.b = light->param1.description->color.b; + params->map.light.ar = light->param1.description->color2.r; + params->map.light.ag = light->param1.description->color2.g; + params->map.light.ab = light->param1.description->color2.b; + } + } + + if (persp) + { + FLOAT_T pos; + + params->map.persp.x = ed->x + persp->x + (persp->w / 2); + params->map.persp.y = ed->y + persp->y + (persp->h / 2); + + pos = persp->description_pos; + + if (pos != 0 && persp->param2) + { + params->map.persp.z = persp->param1.description->persp.zplane + + TO_INT(SCALE(pos, persp->param2->description->persp.zplane - + persp->param1.description->persp.zplane)); + params->map.persp.focal = persp->param1.description->persp.focal + + TO_INT(SCALE(pos, persp->param2->description->persp.focal - + persp->param1.description->persp.focal)); + } + else + { + params->map.persp.z = persp->param1.description->persp.zplane; + params->map.persp.focal = persp->param1.description->persp.focal; + } + } +} + +static void +_edje_part_recalc_single(Edje *ed, + Edje_Real_Part *ep, + Edje_Part_Description_Common *desc, + Edje_Part_Description_Common *chosen_desc, + Edje_Real_Part *center, + Edje_Real_Part *light, + Edje_Real_Part *persp, + Edje_Real_Part *rel1_to_x, + Edje_Real_Part *rel1_to_y, + Edje_Real_Part *rel2_to_x, + Edje_Real_Part *rel2_to_y, + Edje_Real_Part *confine_to, + Edje_Calc_Params *params, + FLOAT_T pos) +{ + Edje_Color_Class *cc = NULL; + Edje_Internal_Aspect apref; + int minw = 0, minh = 0, maxw = 0, maxh = 0; + FLOAT_T sc; + + sc = ed->scale; + if (sc == ZERO) sc = _edje_scale; + _edje_part_recalc_single_min_max(sc, ep, desc, &minw, &minh, &maxw, &maxh); + + /* relative coords of top left & bottom right */ + _edje_part_recalc_single_rel(ed, ep, desc, rel1_to_x, rel1_to_y, rel2_to_x, rel2_to_y, params); + + /* aspect */ + apref = _edje_part_recalc_single_aspect(ed, ep, desc, params, &minw, &minh, &maxw, &maxh, pos); + + /* size step */ + _edje_part_recalc_single_step(desc, params); + + /* if we have text that wants to make the min size the text size... */ + if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) + _edje_part_recalc_single_textblock(sc, ed, ep, (Edje_Part_Description_Text*) chosen_desc, params, &minw, &minh, &maxw, &maxh); + else if (ep->part->type == EDJE_PART_TYPE_TEXT) + _edje_part_recalc_single_text(sc, ed, ep, (Edje_Part_Description_Text*) desc, (Edje_Part_Description_Text*) chosen_desc, params, &minw, &minh, &maxw, &maxh); + + if ((ep->part->type == EDJE_PART_TYPE_TABLE) && + (((((Edje_Part_Description_Table *)chosen_desc)->table.min.h) || + (((Edje_Part_Description_Table *)chosen_desc)->table.min.v)))) + { + Evas_Coord lminw = 0, lminh = 0; + + evas_object_smart_need_recalculate_set(ep->object, 1); + evas_object_smart_calculate(ep->object); + evas_object_size_hint_min_get(ep->object, &lminw, &lminh); + if (((Edje_Part_Description_Table *)chosen_desc)->table.min.h) + { + if (lminw > minw) minw = lminw; + } + if (((Edje_Part_Description_Table *)chosen_desc)->table.min.v) + { + if (lminh > minh) minh = lminh; + } + } + else if ((ep->part->type == EDJE_PART_TYPE_BOX) && + ((((Edje_Part_Description_Box *)chosen_desc)->box.min.h) || + (((Edje_Part_Description_Box *)chosen_desc)->box.min.v))) + { + Evas_Coord lminw = 0, lminh = 0; + + evas_object_smart_need_recalculate_set(ep->object, 1); + evas_object_smart_calculate(ep->object); + evas_object_size_hint_min_get(ep->object, &lminw, &lminh); + if (((Edje_Part_Description_Box *)chosen_desc)->box.min.h) + { + if (lminw > minw) minw = lminw; + } + if (((Edje_Part_Description_Box *)chosen_desc)->box.min.v) + { + if (lminh > minh) minh = lminh; + } + } + else if ((ep->part->type == EDJE_PART_TYPE_IMAGE) && + (chosen_desc->min.limit || chosen_desc->max.limit)) + { + Evas_Coord w, h; + + /* We only need pos to find the right image that would be displayed */ + /* Yes, if someone set aspect preference to SOURCE and also max,min + to SOURCE, it will be under efficient, but who cares at the + moment. */ + _edje_real_part_image_set(ed, ep, pos); + evas_object_image_size_get(ep->object, &w, &h); + + if (chosen_desc->min.limit) + { + if (w > minw) minw = w; + if (h > minh) minh = h; + } + if (chosen_desc->max.limit) + { + if ((maxw <= 0) || (w < maxw)) maxw = w; + if ((maxh <= 0) || (h < maxh)) maxh = h; + } + } + + /* remember what our size is BEFORE we go limit it */ + params->req.x = params->x; + params->req.y = params->y; + params->req.w = params->w; + params->req.h = params->h; + + /* adjust for min size */ + _edje_part_recalc_single_min(desc, params, minw, minh, apref); + + /* adjust for max size */ + _edje_part_recalc_single_max(desc, params, maxw, maxh, apref); + + /* take care of dragable part */ + if (ep->drag) + _edje_part_recalc_single_drag(ep, confine_to, params, minw, minh, maxw, maxh); + + /* fill */ + if (ep->part->type == EDJE_PART_TYPE_IMAGE) + _edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Image *)desc)->image.fill, params); + else if (ep->part->type == EDJE_PART_TYPE_PROXY) + _edje_part_recalc_single_fill(ep, &((Edje_Part_Description_Proxy *)desc)->proxy.fill, params); + + if (ep->part->type != EDJE_PART_TYPE_SPACER) + { + /* colors */ + if ((desc->color_class) && (*desc->color_class)) + cc = _edje_color_class_find(ed, desc->color_class); + + if (cc) + { + params->color.r = (((int)cc->r + 1) * desc->color.r) >> 8; + params->color.g = (((int)cc->g + 1) * desc->color.g) >> 8; + params->color.b = (((int)cc->b + 1) * desc->color.b) >> 8; + params->color.a = (((int)cc->a + 1) * desc->color.a) >> 8; + } + else + { + params->color.r = desc->color.r; + params->color.g = desc->color.g; + params->color.b = desc->color.b; + params->color.a = desc->color.a; + } + } + + /* visible */ + params->visible = desc->visible; + + switch (ep->part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img_desc = (Edje_Part_Description_Image*) desc; + + /* border */ + params->type.common.spec.image.l = img_desc->image.border.l; + params->type.common.spec.image.r = img_desc->image.border.r; + + params->type.common.spec.image.t = img_desc->image.border.t; + params->type.common.spec.image.b = img_desc->image.border.b; + + params->type.common.spec.image.border_scale_by = img_desc->image.border.scale_by; + break; + } + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *text_desc = (Edje_Part_Description_Text*) desc; + + /* text.align */ + params->type.text.align.x = text_desc->text.align.x; + params->type.text.align.y = text_desc->text.align.y; + params->type.text.elipsis = text_desc->text.elipsis; + + /* text colors */ + if (cc) + { + params->type.text.color2.r = (((int)cc->r2 + 1) * text_desc->common.color2.r) >> 8; + params->type.text.color2.g = (((int)cc->g2 + 1) * text_desc->common.color2.g) >> 8; + params->type.text.color2.b = (((int)cc->b2 + 1) * text_desc->common.color2.b) >> 8; + params->type.text.color2.a = (((int)cc->a2 + 1) * text_desc->common.color2.a) >> 8; + params->type.text.color3.r = (((int)cc->r3 + 1) * text_desc->text.color3.r) >> 8; + params->type.text.color3.g = (((int)cc->g3 + 1) * text_desc->text.color3.g) >> 8; + params->type.text.color3.b = (((int)cc->b3 + 1) * text_desc->text.color3.b) >> 8; + params->type.text.color3.a = (((int)cc->a3 + 1) * text_desc->text.color3.a) >> 8; + } + else + { + params->type.text.color2.r = text_desc->common.color2.r; + params->type.text.color2.g = text_desc->common.color2.g; + params->type.text.color2.b = text_desc->common.color2.b; + params->type.text.color2.a = text_desc->common.color2.a; + params->type.text.color3.r = text_desc->text.color3.r; + params->type.text.color3.g = text_desc->text.color3.g; + params->type.text.color3.b = text_desc->text.color3.b; + params->type.text.color3.a = text_desc->text.color3.a; + } + + break; + } + case EDJE_PART_TYPE_SPACER: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + case EDJE_PART_TYPE_PROXY: + break; + case EDJE_PART_TYPE_GRADIENT: + /* FIXME: THIS ONE SHOULD NEVER BE TRIGGERED. */ + break; + default: + break; + } + + _edje_part_recalc_single_map(ed, ep, center, light, persp, desc, chosen_desc, params); +} + +static void +_edje_table_recalc_apply(Edje *ed __UNUSED__, + Edje_Real_Part *ep, + Edje_Calc_Params *p3 __UNUSED__, + Edje_Part_Description_Table *chosen_desc) +{ + evas_object_table_homogeneous_set(ep->object, chosen_desc->table.homogeneous); + evas_object_table_align_set(ep->object, TO_DOUBLE(chosen_desc->table.align.x), TO_DOUBLE(chosen_desc->table.align.y)); + evas_object_table_padding_set(ep->object, chosen_desc->table.padding.x, chosen_desc->table.padding.y); + if (evas_object_smart_need_recalculate_get(ep->object)) + { + evas_object_smart_need_recalculate_set(ep->object, 0); + evas_object_smart_calculate(ep->object); + } +} + +static void +_edje_proxy_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Proxy *chosen_desc, FLOAT_T pos) +{ + Edje_Real_Part *pp; + int part_id = -1; + + if (pos >= FROM_DOUBLE(0.5)) + part_id = ((Edje_Part_Description_Proxy*) ep->param2->description)->proxy.id; + else + part_id = chosen_desc->proxy.id; + + if ((p3->type.common.fill.w == 0) || (p3->type.common.fill.h == 0) || + (part_id < 0)) + { + evas_object_image_source_set(ep->object, NULL); + return; + } + pp = ed->table_parts[part_id % ed->table_parts_size]; + + switch (pp->part->type) + { + case EDJE_PART_TYPE_IMAGE: + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + case EDJE_PART_TYPE_PROXY: + evas_object_image_source_set(ep->object, pp->object); + break; + case EDJE_PART_TYPE_GRADIENT: + /* FIXME: THIS ONE SHOULD NEVER BE TRIGGERED. */ + break; + case EDJE_PART_TYPE_GROUP: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_EXTERNAL: + evas_object_image_source_set(ep->object, pp->swallowed_object); + break; + case EDJE_PART_TYPE_SPACER: + /* FIXME: detect that at compile time and prevent it */ + break; + } + + evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y, + p3->type.common.fill.w, p3->type.common.fill.h); + evas_object_image_smooth_scale_set(ep->object, p3->smooth); +} + +static void +_edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Image *chosen_desc, FLOAT_T pos) +{ + FLOAT_T sc; + + sc = ed->scale; + if (sc == 0.0) sc = _edje_scale; + evas_object_image_fill_set(ep->object, p3->type.common.fill.x, p3->type.common.fill.y, + p3->type.common.fill.w, p3->type.common.fill.h); + evas_object_image_smooth_scale_set(ep->object, p3->smooth); + if (chosen_desc->image.border.scale) + { + if (p3->type.common.spec.image.border_scale_by > FROM_DOUBLE(0.0)) + { + FLOAT_T sc2 = MUL(sc, p3->type.common.spec.image.border_scale_by); + evas_object_image_border_scale_set(ep->object, TO_DOUBLE(sc2)); + } + else + evas_object_image_border_scale_set(ep->object, TO_DOUBLE(sc)); + } + else + { + if (p3->type.common.spec.image.border_scale_by > FROM_DOUBLE(0.0)) + evas_object_image_border_scale_set + (ep->object, TO_DOUBLE(p3->type.common.spec.image.border_scale_by)); + else + evas_object_image_border_scale_set(ep->object, 1.0); + } + evas_object_image_border_set(ep->object, p3->type.common.spec.image.l, p3->type.common.spec.image.r, + p3->type.common.spec.image.t, p3->type.common.spec.image.b); + if (chosen_desc->image.border.no_fill == 0) + evas_object_image_border_center_fill_set(ep->object, EVAS_BORDER_FILL_DEFAULT); + else if (chosen_desc->image.border.no_fill == 1) + evas_object_image_border_center_fill_set(ep->object, EVAS_BORDER_FILL_NONE); + else if (chosen_desc->image.border.no_fill == 2) + evas_object_image_border_center_fill_set(ep->object, EVAS_BORDER_FILL_SOLID); + + _edje_real_part_image_set(ed, ep, pos); +} + +static Edje_Real_Part * +_edje_real_part_state_get(Edje *ed, Edje_Real_Part *ep, int flags, int id, int *state) +{ + Edje_Real_Part *result = NULL; + + if (id >= 0 && id != ep->part->id) + { + result = ed->table_parts[id % ed->table_parts_size]; + if (result) + { + if (!result->calculated) _edje_part_recalc(ed, result, flags, NULL); +#ifdef EDJE_CALC_CACHE + if (state) *state = result->state; +#else + (void) state; +#endif + } + } + return result; +} + +void +_edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *state) +{ +#ifdef EDJE_CALC_CACHE + Eina_Bool proxy_invalidate = EINA_FALSE; + int state1 = -1; + int state2 = -1; + int statec = -1; +#else + Edje_Calc_Params lp1, lp2; +#endif + int statec1 = -1; + int statec2 = -1; + int statel1 = -1; + int statel2 = -1; + int statep1 = -1; + int statep2 = -1; + Edje_Real_Part *center[2] = { NULL, NULL }; + Edje_Real_Part *light[2] = { NULL, NULL }; + Edje_Real_Part *persp[2] = { NULL, NULL }; + Edje_Calc_Params *p1, *pf; + Edje_Part_Description_Common *chosen_desc; + Edje_Real_Part *confine_to = NULL; + FLOAT_T pos = ZERO, pos2; + Edje_Calc_Params lp3; + + /* GRADIENT ARE GONE, WE MUST IGNORE IT FROM OLD FILE. */ + if (ep->part->type == EDJE_PART_TYPE_GRADIENT) + { + ERR("GRADIENT spotted during recalc ! That should never happen ! Send your edje file to devel ml."); + return; + } + + if ((ep->calculated & FLAG_XY) == FLAG_XY && !state) + { + return; + } + if (ep->calculating & flags) + { +#if 1 + const char *axes = "NONE", *faxes = "NONE"; + + if ((ep->calculating & FLAG_X) && + (ep->calculating & FLAG_Y)) + axes = "XY"; + else if ((ep->calculating & FLAG_X)) + axes = "X"; + else if ((ep->calculating & FLAG_Y)) + axes = "Y"; + + if ((flags & FLAG_X) && + (flags & FLAG_Y)) + faxes = "XY"; + else if ((flags & FLAG_X)) + faxes = "X"; + else if ((flags & FLAG_Y)) + faxes = "Y"; + ERR("Circular dependency when calculating part \"%s\". " + "Already calculating %s [%02x] axes. " + "Need to calculate %s [%02x] axes", + ep->part->name, + axes, ep->calculating, + faxes, flags); +#endif + return; + } + + if (ep->part->scale && + ep->part->type == EDJE_PART_TYPE_GROUP && + ep->swallowed_object) + { + edje_object_scale_set(ep->swallowed_object, TO_DOUBLE(ed->scale)); + + if (ep->description_pos > FROM_DOUBLE(0.5) && ep->param2) + { + edje_object_update_hints_set(ep->swallowed_object, ep->param2->description->min.limit); + } + else + { + edje_object_update_hints_set(ep->swallowed_object, ep->param1.description->min.limit); + } + if (edje_object_update_hints_get(ep->swallowed_object)) + { + Edje *ted; + + ted = _edje_fetch(ep->swallowed_object); + _edje_recalc_do(ted); + } + } + +#ifdef EDJE_CALC_CACHE + if (ep->state == ed->state && !state) + return ; +#endif + + if (flags & FLAG_X) + { + ep->calculating |= flags & FLAG_X; + if (ep->param1.rel1_to_x) + { + _edje_part_recalc(ed, ep->param1.rel1_to_x, FLAG_X, NULL); +#ifdef EDJE_CALC_CACHE + state1 = ep->param1.rel1_to_x->state; +#endif + } + if (ep->param1.rel2_to_x) + { + _edje_part_recalc(ed, ep->param1.rel2_to_x, FLAG_X, NULL); +#ifdef EDJE_CALC_CACHE + if (state1 < ep->param1.rel2_to_x->state) + state1 = ep->param1.rel2_to_x->state; +#endif + } + if (ep->param2) + { + if (ep->param2->rel1_to_x) + { + _edje_part_recalc(ed, ep->param2->rel1_to_x, FLAG_X, NULL); +#ifdef EDJE_CALC_CACHE + state2 = ep->param2->rel1_to_x->state; +#endif + } + if (ep->param2->rel2_to_x) + { + _edje_part_recalc(ed, ep->param2->rel2_to_x, FLAG_X, NULL); +#ifdef EDJE_CALC_CACHE + if (state2 < ep->param2->rel2_to_x->state) + state2 = ep->param2->rel2_to_x->state; +#endif + } + } + } + if (flags & FLAG_Y) + { + ep->calculating |= flags & FLAG_Y; + if (ep->param1.rel1_to_y) + { + _edje_part_recalc(ed, ep->param1.rel1_to_y, FLAG_Y, NULL); +#ifdef EDJE_CALC_CACHE + if (state1 < ep->param1.rel1_to_y->state) + state1 = ep->param1.rel1_to_y->state; +#endif + } + if (ep->param1.rel2_to_y) + { + _edje_part_recalc(ed, ep->param1.rel2_to_y, FLAG_Y, NULL); +#ifdef EDJE_CALC_CACHE + if (state1 < ep->param1.rel2_to_y->state) + state1 = ep->param1.rel2_to_y->state; +#endif + } + if (ep->param2) + { + if (ep->param2->rel1_to_y) + { + _edje_part_recalc(ed, ep->param2->rel1_to_y, FLAG_Y, NULL); +#ifdef EDJE_CALC_CACHE + if (state2 < ep->param2->rel1_to_y->state) + state2 = ep->param2->rel1_to_y->state; +#endif + } + if (ep->param2->rel2_to_y) + { + _edje_part_recalc(ed, ep->param2->rel2_to_y, FLAG_Y, NULL); +#ifdef EDJE_CALC_CACHE + if (state2 < ep->param2->rel2_to_y->state) + state2 = ep->param2->rel2_to_y->state; +#endif + } + } + } + if (ep->drag && ep->drag->confine_to) + { + confine_to = ep->drag->confine_to; + _edje_part_recalc(ed, confine_to, flags, NULL); +#ifdef EDJE_CALC_CACHE + statec = confine_to->state; +#endif + } + // if (ep->text.source) _edje_part_recalc(ed, ep->text.source, flags); + // if (ep->text.text_source) _edje_part_recalc(ed, ep->text.text_source, flags); + + /* actually calculate now */ + chosen_desc = ep->chosen_description; + if (!chosen_desc) + { + ep->calculating = FLAG_NONE; + ep->calculated |= flags; + return; + } + + pos = ep->description_pos; + + if (ep->part->type == EDJE_PART_TYPE_PROXY) + { + Edje_Real_Part *pp; + int part_id = -1; + + if (pos >= FROM_DOUBLE(0.5)) + part_id = ((Edje_Part_Description_Proxy*) ep->param2->description)->proxy.id; + else + part_id = ((Edje_Part_Description_Proxy*) chosen_desc)->proxy.id; + + pp = _edje_real_part_state_get(ed, ep, flags, part_id, NULL); +#ifdef EDJE_CALC_CACHE + if (pp && pp->invalidate) proxy_invalidate = EINA_TRUE; +#endif + } + + /* Recalc if needed the map center && light source */ + if (ep->param1.description->map.on) + { + center[0] = _edje_real_part_state_get(ed, ep, flags, ep->param1.description->map.rot.id_center, &statec1); + light[0] = _edje_real_part_state_get(ed, ep, flags, ep->param1.description->map.id_light, &statel1); + + if (chosen_desc->map.persp_on) + { + persp[0] = _edje_real_part_state_get(ed, ep, flags, ep->param1.description->map.id_persp, &statep1); + } + } + + if (ep->param2 && ep->param2->description->map.on) + { + center[1] = _edje_real_part_state_get(ed, ep, flags, ep->param2->description->map.rot.id_center, &statec2); + light[1] = _edje_real_part_state_get(ed, ep, flags, ep->param2->description->map.id_light, &statel2); + + if (chosen_desc->map.persp_on) + { + persp[1] = _edje_real_part_state_get(ed, ep, flags, ep->param2->description->map.id_persp, &statep2); + } + } + +#ifndef EDJE_CALC_CACHE + p1 = &lp1; +#else + p1 = &ep->param1.p; +#endif + + if (ep->param1.description) + { +#ifdef EDJE_CALC_CACHE + if (ed->all_part_change || + ep->invalidate || + state1 >= ep->param1.state || + statec >= ep->param1.state || + statec1 >= ep->param1.state || + statel1 >= ep->param1.state || + statep1 >= ep->param1.state || + proxy_invalidate || + state || + ((ep->part->type == EDJE_PART_TYPE_TEXT || ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && ed->text_part_change)) +#endif + { + _edje_part_recalc_single(ed, ep, ep->param1.description, chosen_desc, center[0], light[0], persp[0], + ep->param1.rel1_to_x, ep->param1.rel1_to_y, ep->param1.rel2_to_x, ep->param1.rel2_to_y, + confine_to, + p1, pos); + +#ifdef EDJE_CALC_CACHE + if (flags == FLAG_XY) + ep->param1.state = ed->state; +#endif + } + } + if (ep->param2) + { + int beginning_pos, part_type; + Edje_Calc_Params *p2, *p3; + + if (ep->current) + { + /* FIXME: except for text, we don't need in that case to recalc p1 at all*/ + memcpy(p1, ep->current, sizeof (Edje_Calc_Params)); + p1->x += ed->x; + p1->y += ed->y; + p1->map.center.x += ed->x; + p1->map.center.y += ed->y; + p1->map.light.x += ed->x; + p1->map.light.y += ed->y; + p1->map.persp.x += ed->x; + p1->map.persp.y += ed->y; + } + + p3 = &lp3; + +#ifndef EDJE_CALC_CACHE + p2 = &lp2; +#else + p2 = &ep->param2->p; + + if (ed->all_part_change || + ep->invalidate || + state2 >= ep->param2->state || + statec >= ep->param2->state || + statec2 >= ep->param2->state || + statel2 >= ep->param2->state || + statep2 >= ep->param2->state || + proxy_invalidate || + state || + ((ep->part->type == EDJE_PART_TYPE_TEXT || ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && ed->text_part_change)) +#endif + { + _edje_part_recalc_single(ed, ep, ep->param2->description, + chosen_desc, + center[1], light[1], persp[1], + ep->param2->rel1_to_x, + ep->param2->rel1_to_y, + ep->param2->rel2_to_x, + ep->param2->rel2_to_y, + confine_to, + p2, pos); +#ifdef EDJE_CALC_CACHE + if (flags == FLAG_XY) + ep->param2->state = ed->state; +#endif + } + + pos2 = pos; + if (pos2 < ZERO) pos2 = ZERO; + else if (pos2 > FROM_INT(1)) pos2 = FROM_INT(1); + beginning_pos = (pos < FROM_DOUBLE(0.5)); + part_type = ep->part->type; + + /* visible is special */ + if ((p1->visible) && (!p2->visible)) + p3->visible = (pos != FROM_INT(1)); + else if ((!p1->visible) && (p2->visible)) + p3->visible = (pos != ZERO); + else + p3->visible = p1->visible; + + p3->smooth = (beginning_pos) ? p1->smooth : p2->smooth; + + /* FIXME: do x and y separately base on flag */ +#define FINTP(_x1, _x2, _p) \ + (((_x1) == (_x2)) \ + ? FROM_INT((_x1)) \ + : ADD(FROM_INT(_x1), \ + SCALE((_p), (_x2) - (_x1)))) + +#define FFP(_x1, _x2, _p) \ + (((_x1) == (_x2)) \ + ? (_x1) \ + : ADD(_x1, MUL(_p, SUB(_x2, _x1)))); + +#define INTP(_x1, _x2, _p) TO_INT(FINTP(_x1, _x2, _p)) + + p3->x = INTP(p1->x, p2->x, pos); + p3->y = INTP(p1->y, p2->y, pos); + p3->w = INTP(p1->w, p2->w, pos); + p3->h = INTP(p1->h, p2->h, pos); + + p3->req.x = INTP(p1->req.x, p2->req.x, pos); + p3->req.y = INTP(p1->req.y, p2->req.y, pos); + p3->req.w = INTP(p1->req.w, p2->req.w, pos); + p3->req.h = INTP(p1->req.h, p2->req.h, pos); + + if (ep->part->dragable.x) + { + p3->req_drag.x = INTP(p1->req_drag.x, p2->req_drag.x, pos); + p3->req_drag.w = INTP(p1->req_drag.w, p2->req_drag.w, pos); + } + if (ep->part->dragable.y) + { + p3->req_drag.y = INTP(p1->req_drag.y, p2->req_drag.y, pos); + p3->req_drag.h = INTP(p1->req_drag.h, p2->req_drag.h, pos); + } + + p3->color.r = INTP(p1->color.r, p2->color.r, pos2); + p3->color.g = INTP(p1->color.g, p2->color.g, pos2); + p3->color.b = INTP(p1->color.b, p2->color.b, pos2); + p3->color.a = INTP(p1->color.a, p2->color.a, pos2); + + switch (part_type) + { + case EDJE_PART_TYPE_IMAGE: + p3->type.common.spec.image.l = INTP(p1->type.common.spec.image.l, p2->type.common.spec.image.l, pos); + p3->type.common.spec.image.r = INTP(p1->type.common.spec.image.r, p2->type.common.spec.image.r, pos); + p3->type.common.spec.image.t = INTP(p1->type.common.spec.image.t, p2->type.common.spec.image.t, pos); + p3->type.common.spec.image.b = INTP(p1->type.common.spec.image.b, p2->type.common.spec.image.b, pos); + p3->type.common.spec.image.border_scale_by = INTP(p1->type.common.spec.image.border_scale_by, p2->type.common.spec.image.border_scale_by, pos); + case EDJE_PART_TYPE_PROXY: + p3->type.common.fill.x = INTP(p1->type.common.fill.x, p2->type.common.fill.x, pos); + p3->type.common.fill.y = INTP(p1->type.common.fill.y, p2->type.common.fill.y, pos); + p3->type.common.fill.w = INTP(p1->type.common.fill.w, p2->type.common.fill.w, pos); + p3->type.common.fill.h = INTP(p1->type.common.fill.h, p2->type.common.fill.h, pos); + break; + case EDJE_PART_TYPE_TEXT: + p3->type.text.size = INTP(p1->type.text.size, p2->type.text.size, pos); + case EDJE_PART_TYPE_TEXTBLOCK: + p3->type.text.color2.r = INTP(p1->type.text.color2.r, p2->type.text.color2.r, pos2); + p3->type.text.color2.g = INTP(p1->type.text.color2.g, p2->type.text.color2.g, pos2); + p3->type.text.color2.b = INTP(p1->type.text.color2.b, p2->type.text.color2.b, pos2); + p3->type.text.color2.a = INTP(p1->type.text.color2.a, p2->type.text.color2.a, pos2); + + p3->type.text.color3.r = INTP(p1->type.text.color3.r, p2->type.text.color3.r, pos2); + p3->type.text.color3.g = INTP(p1->type.text.color3.g, p2->type.text.color3.g, pos2); + p3->type.text.color3.b = INTP(p1->type.text.color3.b, p2->type.text.color3.b, pos2); + p3->type.text.color3.a = INTP(p1->type.text.color3.a, p2->type.text.color3.a, pos2); + + p3->type.text.align.x = FFP(p1->type.text.align.x, p2->type.text.align.x, pos); + p3->type.text.align.y = FFP(p1->type.text.align.y, p2->type.text.align.y, pos); + p3->type.text.elipsis = TO_DOUBLE(FINTP(p1->type.text.elipsis, p2->type.text.elipsis, pos2)); + break; + } + + p3->mapped = p1->mapped; + p3->persp_on = p3->mapped ? p1->persp_on | p2->persp_on : 0; + p3->lighted = p3->mapped ? p1->lighted | p2->lighted : 0; + if (p1->mapped) + { + p3->map.center.x = INTP(p1->map.center.x, p2->map.center.x, pos); + p3->map.center.y = INTP(p1->map.center.y, p2->map.center.y, pos); + p3->map.center.z = INTP(p1->map.center.z, p2->map.center.z, pos); + p3->map.rotation.x = FFP(p1->map.rotation.x, p2->map.rotation.x, pos); + p3->map.rotation.y = FFP(p1->map.rotation.y, p2->map.rotation.y, pos); + p3->map.rotation.z = FFP(p1->map.rotation.z, p2->map.rotation.z, pos); + +#define MIX(P1, P2, P3, pos, info) \ + P3->info = P1->info + TO_INT(SCALE(pos, P2->info - P1->info)); + + if (p1->lighted && p2->lighted) + { + MIX(p1, p2, p3, pos, map.light.x); + MIX(p1, p2, p3, pos, map.light.y); + MIX(p1, p2, p3, pos, map.light.z); + MIX(p1, p2, p3, pos, map.light.r); + MIX(p1, p2, p3, pos, map.light.g); + MIX(p1, p2, p3, pos, map.light.b); + MIX(p1, p2, p3, pos, map.light.ar); + MIX(p1, p2, p3, pos, map.light.ag); + MIX(p1, p2, p3, pos, map.light.ab); + } + else if (p1->lighted) + { + memcpy(&p3->map.light, &p1->map.light, sizeof (p1->map.light)); + } + else if (p2->lighted) + { + memcpy(&p3->map.light, &p2->map.light, sizeof (p2->map.light)); + } + + if (p1->persp_on && p2->persp_on) + { + MIX(p1, p2, p3, pos, map.persp.x); + MIX(p1, p2, p3, pos, map.persp.y); + MIX(p1, p2, p3, pos, map.persp.z); + MIX(p1, p2, p3, pos, map.persp.focal); + } + else if (p1->persp_on) + { + memcpy(&p3->map.persp, &p1->map.persp, sizeof (p1->map.persp)); + } + else if (p2->persp_on) + { + memcpy(&p3->map.persp, &p2->map.persp, sizeof (p2->map.persp)); + } + } + + pf = p3; + } + else + { + pf = p1; + } + + if (!pf->persp_on && chosen_desc->map.persp_on) + { + if (ed->persp) + { + pf->map.persp.x = ed->persp->px; + pf->map.persp.y = ed->persp->py; + pf->map.persp.z = ed->persp->z0; + pf->map.persp.focal = ed->persp->foc; + } + else + { + const Edje_Perspective *ps; + + // fixme: a tad inefficient as this is a has lookup + ps = edje_object_perspective_get(ed->obj); + if (!ps) + ps = edje_evas_global_perspective_get(evas_object_evas_get(ed->obj)); + if (ps) + { + pf->map.persp.x = ps->px; + pf->map.persp.y = ps->py; + pf->map.persp.z = ps->z0; + pf->map.persp.focal = ps->foc; + } + else + { + pf->map.persp.x = ed->x + (ed->w / 2); + pf->map.persp.y = ed->y + (ed->h / 2); + pf->map.persp.z = 0; + pf->map.persp.focal = 1000; + } + } + } + + if (state) + { + memcpy(state, pf, sizeof (Edje_Calc_Params)); + } + + ep->req = pf->req; + + if (ep->drag && ep->drag->need_reset) + { + FLOAT_T dx, dy; + + dx = ZERO; + dy = ZERO; + _edje_part_dragable_calc(ed, ep, &dx, &dy); + ep->drag->x = dx; + ep->drag->y = dy; + ep->drag->tmp.x = 0; + ep->drag->tmp.y = 0; + ep->drag->need_reset = 0; + } + if (!ed->calc_only) + { + Evas_Object *mo; + + /* Common move, resize and color_set for all part. */ + switch (ep->part->type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img_desc = (Edje_Part_Description_Image*) chosen_desc; + + evas_object_image_scale_hint_set(ep->object, + img_desc->image.scale_hint); + } + case EDJE_PART_TYPE_PROXY: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_TEXTBLOCK: + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + evas_object_color_set(ep->object, + (pf->color.r * pf->color.a) / 255, + (pf->color.g * pf->color.a) / 255, + (pf->color.b * pf->color.a) / 255, + pf->color.a); + if (!pf->visible) + { + evas_object_hide(ep->object); + break; + } + evas_object_show(ep->object); + /* move and resize are needed for all previous object => no break here. */ + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + case EDJE_PART_TYPE_EXTERNAL: + /* visibility and color have no meaning on SWALLOW and GROUP part. */ + evas_object_move(ep->object, ed->x + pf->x, ed->y + pf->y); + evas_object_resize(ep->object, pf->w, pf->h); + if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_real_part_configure(ep); + break; + case EDJE_PART_TYPE_TEXT: + /* This is correctly handle in _edje_text_recalc_apply at the moment. */ + break; + case EDJE_PART_TYPE_GRADIENT: + /* FIXME: definitivly remove this code when we switch to new format. */ + abort(); + break; + case EDJE_PART_TYPE_SPACER: + /* We really should do nothing on SPACER part */ + break; + } + + /* Some object need special recalc. */ + switch (ep->part->type) + { + case EDJE_PART_TYPE_TEXT: + _edje_text_recalc_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc); + break; + case EDJE_PART_TYPE_PROXY: + _edje_proxy_recalc_apply(ed, ep, pf, (Edje_Part_Description_Proxy*) chosen_desc, pos); + break; + case EDJE_PART_TYPE_IMAGE: + _edje_image_recalc_apply(ed, ep, pf, (Edje_Part_Description_Image*) chosen_desc, pos); + break; + case EDJE_PART_TYPE_BOX: + _edje_box_recalc_apply(ed, ep, pf, (Edje_Part_Description_Box*) chosen_desc); + break; + case EDJE_PART_TYPE_TABLE: + _edje_table_recalc_apply(ed, ep, pf, (Edje_Part_Description_Table*) chosen_desc); + break; + case EDJE_PART_TYPE_TEXTBLOCK: + _edje_textblock_recalc_apply(ed, ep, pf, (Edje_Part_Description_Text*) chosen_desc); + break; + case EDJE_PART_TYPE_EXTERNAL: + case EDJE_PART_TYPE_RECTANGLE: + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_GROUP: + /* Nothing special to do for this type of object. */ + break; + case EDJE_PART_TYPE_GRADIENT: + /* FIXME: definitivly remove this code when we switch to new format. */ + abort(); + break; + case EDJE_PART_TYPE_SPACER: + /* We really should do nothing on SPACER part */ + break; + } + + if (ep->swallowed_object) + { + //// the below really is wrong - swallow color shouldn't affect swallowed object + //// color - the edje color as a WHOLE should though - and that should be + //// done via the clipper anyway. this created bugs when objects had their + //// colro set and were swallowed - then had their color changed. + // evas_object_color_set(ep->swallowed_object, + // (pf->color.r * pf->color.a) / 255, + // (pf->color.g * pf->color.a) / 255, + // (pf->color.b * pf->color.a) / 255, + // pf->color.a); + if (pf->visible) + { + evas_object_move(ep->swallowed_object, ed->x + pf->x, ed->y + pf->y); + evas_object_resize(ep->swallowed_object, pf->w, pf->h); + evas_object_show(ep->swallowed_object); + } + else evas_object_hide(ep->swallowed_object); + mo = ep->swallowed_object; + } + else mo = ep->object; + if (chosen_desc->map.on && ep->part->type != EDJE_PART_TYPE_SPACER) + { + static Evas_Map *map = NULL; + + ed->have_mapped_part = 1; + // create map and populate with part geometry + if (!map) map = evas_map_new(4); + evas_map_util_points_populate_from_object(map, ep->object); + if (ep->part->type == EDJE_PART_TYPE_IMAGE || + ((ep->part->type == EDJE_PART_TYPE_SWALLOW) && + (!strcmp(evas_object_type_get(mo), "image"))) + ) + { + int iw = 1, ih = 1; + + evas_object_image_size_get(mo, &iw, &ih); + evas_map_point_image_uv_set(map, 0, 0.0, 0.0); + evas_map_point_image_uv_set(map, 1, iw , 0.0); + evas_map_point_image_uv_set(map, 2, iw , ih ); + evas_map_point_image_uv_set(map, 3, 0.0, ih ); + } + evas_map_util_3d_rotate(map, + TO_DOUBLE(pf->map.rotation.x), TO_DOUBLE(pf->map.rotation.y), TO_DOUBLE(pf->map.rotation.z), + pf->map.center.x, pf->map.center.y, pf->map.center.z); + + // calculate light color & position etc. if there is one + if (pf->lighted) + { + evas_map_util_3d_lighting(map, + pf->map.light.x, pf->map.light.y, pf->map.light.z, + pf->map.light.r, pf->map.light.g, pf->map.light.b, + pf->map.light.ar, pf->map.light.ag, pf->map.light.ab); + } + + // calculate perspective point + if (chosen_desc->map.persp_on) + { + evas_map_util_3d_perspective(map, + pf->map.persp.x, pf->map.persp.y, pf->map.persp.z, + pf->map.persp.focal); + } + + // handle backface culling (object is facing away from view + if (chosen_desc->map.backcull) + { + if (pf->visible) + { + if (evas_map_util_clockwise_get(map)) + evas_object_show(mo); + else evas_object_hide(mo); + } + } + + // handle smooth + if (chosen_desc->map.smooth) evas_map_smooth_set(map, 1); + else evas_map_smooth_set(map, 0); + // handle alpha + if (chosen_desc->map.alpha) evas_map_alpha_set(map, 1); + else evas_map_alpha_set(map, 0); + + evas_object_map_set(mo, map); + evas_object_map_enable_set(mo, 1); + } + else + { + evas_object_map_enable_set(mo, 0); + evas_object_map_set(mo, NULL); + } + } + + ep->x = pf->x; + ep->y = pf->y; + ep->w = pf->w; + ep->h = pf->h; + + ep->calculated |= flags; + ep->calculating = FLAG_NONE; + +#ifdef EDJE_CALC_CACHE + if (ep->calculated == FLAG_XY) + { + ep->state = ed->state; + ep->invalidate = 0; + } +#endif +} diff --git a/src/lib/edje_callbacks.c b/src/lib/edje_callbacks.c new file mode 100644 index 0000000..a5acf7b --- /dev/null +++ b/src/lib/edje_callbacks.c @@ -0,0 +1,499 @@ +#include "edje_private.h" + +static void +_edje_hold_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Hold *ev; + Edje *ed; + Edje_Real_Part *rp; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if (!rp) return; + if (ev->hold) + _edje_emit(ed, "hold,on", rp->part->name); + else + _edje_emit(ed, "hold,off", rp->part->name); +} + +static void +_edje_focus_in_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if ((!rp) || (!ed)) + return; + + _edje_emit(ed, "focus,part,in", rp->part->name); +} + +static void +_edje_focus_out_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if ((!rp) || (!ed)) + return; + + _edje_emit(ed, "focus,part,out", rp->part->name); +} + +static void +_edje_mouse_in_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_In *ev; + Edje *ed; + Edje_Real_Part *rp; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if ((!rp) || + ((ev->event_flags) && + (rp->part->ignore_flags & ev->event_flags))) return; + _edje_emit(ed, "mouse,in", rp->part->name); +} + +static void +_edje_mouse_out_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Out *ev; + Edje *ed; + Edje_Real_Part *rp; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if ((!rp) || + ((ev->event_flags) && + (rp->part->ignore_flags & ev->event_flags))) return; + _edje_emit(ed, "mouse,out", rp->part->name); +} + +static void +_edje_mouse_down_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Down *ev; + Edje *ed; + Edje_Real_Part *rp; + char buf[256]; + int ignored; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if (!rp) return; + + ignored = rp->part->ignore_flags & ev->event_flags; + + _edje_ref(ed); + _edje_freeze(ed); + + if ((!ev->event_flags) || (!ignored)) + { + if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) + snprintf(buf, sizeof(buf), "mouse,down,%i,triple", ev->button); + else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) + snprintf(buf, sizeof(buf), "mouse,down,%i,double", ev->button); + else + snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button); + _edje_emit(ed, buf, rp->part->name); + } + + if (rp->events_to) + { + rp = rp->events_to; + if (!ignored) + { + snprintf(buf, sizeof(buf), "mouse,down,%i", ev->button); + _edje_emit(ed, buf, rp->part->name); + } + } + + if (rp->drag) + { + if (rp->drag->down.count == 0) + { + if (rp->part->dragable.x) + rp->drag->down.x = ev->canvas.x; + if (rp->part->dragable.y) + rp->drag->down.y = ev->canvas.y; + if (!ignored) + _edje_emit(ed, "drag,start", rp->part->name); + } + rp->drag->down.count++; + } + + if (rp->clicked_button == 0) + { + rp->clicked_button = ev->button; + if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)) + rp->still_in = 1; + } +// _edje_recalc_do(ed); + _edje_thaw(ed); + _edje_unref(ed); +} + +static void +_edje_mouse_up_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Up *ev; + Edje *ed; + Edje_Real_Part *rp; + char buf[256]; + int ignored; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if (!rp) return; + + ignored = rp->part->ignore_flags & ev->event_flags; + + _edje_ref(ed); + _edje_freeze(ed); + + if ((!ev->event_flags) || (!ignored)) + { + snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button); + _edje_emit(ed, buf, rp->part->name); + } + + if (rp->events_to) + { + rp = rp->events_to; + if (!ignored) + { + snprintf(buf, sizeof(buf), "mouse,up,%i", ev->button); + _edje_emit(ed, buf, rp->part->name); + } + } + + if (rp->drag) + { + if (rp->drag->down.count > 0) + { + rp->drag->down.count--; + if (rp->drag->down.count == 0) + { + rp->drag->need_reset = 1; + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + if (!ignored) + _edje_emit(ed, "drag,stop", rp->part->name); + } + } + } + + if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored)) + { + snprintf(buf, sizeof(buf), "mouse,clicked,%i", ev->button); + _edje_emit(ed, buf, rp->part->name); + } + rp->clicked_button = 0; + rp->still_in = 0; + +// _edje_recalc_do(ed); + _edje_thaw(ed); + _edje_unref(ed); +} + +static void +_edje_mouse_move_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Move *ev; + Edje *ed; + Edje_Real_Part *rp; + int ignored; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if (!rp) return; + if (rp->events_to) rp = rp->events_to; + + ignored = rp->part->ignore_flags & ev->event_flags; + + _edje_ref(ed); + if ((!ev->event_flags) || (!ignored)) + _edje_emit(ed, "mouse,move", rp->part->name); + + if (rp->still_in) + { + + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) + rp->still_in = 0; + else + { + Evas_Coord x, y, w, h; + + evas_object_geometry_get(obj, &x, &y, &w, &h); + if ((ev->cur.canvas.x < x) || (ev->cur.canvas.y < y) || + (ev->cur.canvas.x >= (x + w)) || (ev->cur.canvas.y >= (y + h))) + rp->still_in = 0; + } + } + else + { + if (!(ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)) + { + Evas_Coord x, y, w, h; + + evas_object_geometry_get(obj, &x, &y, &w, &h); + if ((ev->cur.canvas.x >= x) && (ev->cur.canvas.y >= y) && + (ev->cur.canvas.x < (x + w)) && (ev->cur.canvas.y < (y + h))) + rp->still_in = 1; + } + } + _edje_freeze(ed); + if (rp->drag) + { + if (rp->drag->down.count > 0) + { + if (rp->part->dragable.x) + rp->drag->tmp.x = ev->cur.canvas.x - rp->drag->down.x; + if (rp->part->dragable.y) + rp->drag->tmp.y = ev->cur.canvas.y - rp->drag->down.y; + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + } + _edje_recalc_do(ed); + + if (rp->drag->down.count > 0) + { + FLOAT_T dx, dy; + + _edje_part_dragable_calc(ed, rp, &dx, &dy); + if ((dx != rp->drag->val.x) || (dy != rp->drag->val.y)) + { + rp->drag->val.x = dx; + rp->drag->val.y = dy; + if (!ignored) + _edje_emit(ed, "drag", rp->part->name); + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc_do(ed); + } + } + } + _edje_unref(ed); + _edje_thaw(ed); +} + +static void +_edje_mouse_wheel_signal_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info) +{ + Evas_Event_Mouse_Wheel *ev; + Edje *ed; + Edje_Real_Part *rp; + char buf[256]; + + ev = event_info; + ed = data; + rp = evas_object_data_get(obj, "real_part"); + if ((!rp) || + ((ev->event_flags) && + (!(rp->part->ignore_flags & ev->event_flags)))) return; + + snprintf(buf, sizeof(buf), "mouse,wheel,%i,%i", ev->direction, (ev->z < 0) ? (-1) : (1)); + _edje_emit(ed, buf, rp->part->name); +} + +Eina_Bool +_edje_timer_cb(void *data __UNUSED__) +{ + double t; + Eina_List *l; + Eina_List *animl = NULL; + Edje *ed; + + t = ecore_loop_time_get(); + EINA_LIST_FOREACH(_edje_animators, l, ed) + { + _edje_ref(ed); + animl = eina_list_append(animl, ed); + } + while (animl) + { + Eina_List *newl = NULL; + + ed = eina_list_data_get(animl); + _edje_block(ed); + _edje_freeze(ed); + animl = eina_list_remove(animl, eina_list_data_get(animl)); + if ((!ed->paused) && (!ed->delete_me)) + { + const void *tmp; + + ed->walking_actions = 1; + EINA_LIST_FOREACH(ed->actions, l, tmp) + newl = eina_list_append(newl, tmp); + while (newl) + { + Edje_Running_Program *runp; + + runp = eina_list_data_get(newl); + newl = eina_list_remove(newl, eina_list_data_get(newl)); + if (!runp->delete_me) + _edje_program_run_iterate(runp, t); + if (_edje_block_break(ed)) + { + eina_list_free(newl); + newl = NULL; + goto break_prog; + } + } + EINA_LIST_FOREACH(ed->actions, l, tmp) + newl = eina_list_append(newl, tmp); + while (newl) + { + Edje_Running_Program *runp; + + runp = eina_list_data_get(newl); + newl = eina_list_remove(newl, eina_list_data_get(newl)); + if (runp->delete_me) + { + _edje_anim_count--; + runp->edje->actions = + eina_list_remove(runp->edje->actions, runp); + if (!runp->edje->actions) + _edje_animators = + eina_list_remove(_edje_animators, runp->edje); + free(runp); + } + } + ed->walking_actions = 0; + } + break_prog: + _edje_unblock(ed); + _edje_thaw(ed); + _edje_unref(ed); + } + if (_edje_anim_count > 0) return ECORE_CALLBACK_RENEW; + _edje_timer = NULL; + return ECORE_CALLBACK_CANCEL; +} + +Eina_Bool +_edje_pending_timer_cb(void *data) +{ + Edje_Pending_Program *pp; + + pp = data; + pp->edje->pending_actions = eina_list_remove(pp->edje->pending_actions, pp); + _edje_program_run(pp->edje, pp->program, 1, "", ""); + free(pp); + return ECORE_CALLBACK_CANCEL; +} + +void +_edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp) +{ + evas_object_event_callback_add(obj, + EVAS_CALLBACK_HOLD, + _edje_hold_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_IN, + _edje_mouse_in_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_OUT, + _edje_mouse_out_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_DOWN, + _edje_mouse_down_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_UP, + _edje_mouse_up_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_MOVE, + _edje_mouse_move_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_MOUSE_WHEEL, + _edje_mouse_wheel_signal_cb, + ed); + evas_object_data_set(obj, "real_part", rp); +} + +void +_edje_callbacks_del(Evas_Object *obj, Edje *ed) +{ + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_HOLD, + _edje_hold_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_IN, + _edje_mouse_in_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_OUT, + _edje_mouse_out_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_DOWN, + _edje_mouse_down_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_UP, + _edje_mouse_up_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_MOVE, + _edje_mouse_move_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_MOUSE_WHEEL, + _edje_mouse_wheel_signal_cb, + ed); + evas_object_data_del(obj, "real_part"); +} + +void +_edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp) +{ + evas_object_event_callback_add(obj, + EVAS_CALLBACK_FOCUS_IN, + _edje_focus_in_signal_cb, + ed); + evas_object_event_callback_add(obj, + EVAS_CALLBACK_FOCUS_OUT, + _edje_focus_out_signal_cb, + ed); + evas_object_data_set(obj, "real_part", rp); +} + +void +_edje_callbacks_focus_del(Evas_Object *obj, Edje *ed) +{ + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_FOCUS_IN, + _edje_focus_in_signal_cb, + ed); + evas_object_event_callback_del_full(obj, + EVAS_CALLBACK_FOCUS_OUT, + _edje_focus_out_signal_cb, + ed); +} diff --git a/src/lib/edje_container.c b/src/lib/edje_container.c new file mode 100644 index 0000000..357d607 --- /dev/null +++ b/src/lib/edje_container.c @@ -0,0 +1,955 @@ +#include "edje_private.h" +#include "edje_container.h" + +#if 0 + +static void +_edje_container_relayout(Smart_Data *sd) +{ + Eina_List *l; + Evas_Coord x, y, w, h, sw; + Edje_Item *ei; + + if (sd->freeze > 0) return; + if (!sd->need_layout) return; + + if (sd->w < sd->min_w) sw = sd->min_w; + else if (sd->w > sd->max_w) sw = sd->max_w; + else sw = sd->w; + + y = 0; + x = 0; + w = 0; + h = 0; + + EINA_LIST_FOREACH(sd->children, l, ei) + { + if (sd->homogenous) h = sd->min_row_h; + + ei->y = y; + ei->h = h; +// ei->w = w; +// ei->h = h; + } + + sd->need_layout = 0; +} + +static void +_edje_container_recalc(Smart_Data *sd) +{ + Eina_List *l; + Edje_Item *ei; + int any_max_h = 0, any_max_w = 0; + int i; + + if (sd->freeze > 0) return; + if (!sd->changed) return; + + sd->min_h = 0; + sd->max_h = -1; + sd->min_w = 0; + sd->max_w = -1; + sd->min_row_h = 0; + sd->max_row_h = -1; + sd->contents_h = 0; + sd->contents_w = 0; + + for (i = 0; i < sd->cols; i++) + { + sd->min_w += sd->colinfo[i].minw; + if (sd->colinfo[i].maxw >= 0) + { + if (sd->max_w >= 0) + sd->max_w += sd->colinfo[i].maxw; + else + sd->max_w = sd->colinfo[i].maxw; + } + else + any_max_w = 1; + } + if (any_max_w) sd->max_w = -1; + + if (sd->w < sd->min_w) + sd->contents_w = sd->min_w; + else if ((sd->max_w >= 0) && (sd->w < sd->max_w)) + sd->w = sd->max_w; + + EINA_LIST_FOREACH(sd->children, l, ei) + { + if (ei->minh > sd->min_row_h) + sd->min_row_h = ei->minh; + if (sd->max_row_h >= 0) + { + if (ei->maxh >= 0) + { + if (sd->max_row_h > ei->maxh) + sd->max_row_h = ei->maxh; + } + else + any_max_h = 1; + } + sd->min_h += ei->minh; + if (ei->maxh >= 0) + { + if (sd->max_h >= 0) + sd->max_h += ei->maxh; + else + sd->max_h = ei->maxh; + } + else + any_max_h = 1; + } + if (any_max_h) + { + sd->max_h = -1; + sd->max_row_h = -1; + } + if (sd->homogenous) + { + sd->min_h = eina_list_count(sd->children) * sd->min_row_h; + } + + sd->changed = 0; + sd->change_child = 0; + sd->change_child_list = 0; + sd->change_cols = 0; + + sd->need_layout = 1; + _edje_container_relayout(sd); +} + +static void +_edje_item_recalc(Edje_Item *ei) +{ + int i; + + if (ei->freeze > 0) return; + if (!ei->recalc) return; + if (!ei->sd) return; + + ei->minh = 0; + ei->maxh = -1; + for (i = 0; i < ((Smart_Data *)(ei->sd))->cols; i++) + { + if (ei->cells[i].minh > ei->minh) ei->minh = ei->cells[i].minh; + if (ei->cells[i].maxh >= 0) + { + if (ei->maxh >= 0) + { + if (ei->cells[i].maxh < ei->maxh) + ei->maxh = ei->cells[i].maxh; + } + else + ei->maxh = ei->cells[i].maxh; + } + if (((Smart_Data *)(ei->sd))->colinfo[i].minw < ei->cells[i].minw) + ((Smart_Data *)(ei->sd))->colinfo[i].minw = ei->cells[i].minw; + if (((Smart_Data *)(ei->sd))->colinfo[i].maxw >= 0) + { + if (ei->cells[i].maxw >= 0) + { + if (((Smart_Data *)(ei->sd))->colinfo[i].maxw > ei->cells[i].maxw) + ((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw; + } + } + else + ((Smart_Data *)(ei->sd))->colinfo[i].maxw = ei->cells[i].maxw; + } + + ei->recalc = 0; + + _edje_container_recalc(ei->sd); +} + + +/*****************************/ +/** + * @endcond + */ + +/*============================================================================* + * Global * + *============================================================================*/ + +/*============================================================================* + * API * + *============================================================================*/ + +/** + * @addtogroup Edje_container_Group Container + * + * @brief These functions provides an abstraction layer between the application + * code and the interface, while allowing extremely flexible dynamic layouts + * and animations. + * + * For more information, you can look at the @ref tutorial_list_page. + * + * @{ + */ + +/** + * @brief Create an edje item. + * + * @param cl The edje item of type Edje_Item_Class. + * @param data The edje item data. + * + * @return The new edje item created. + * + * This function creates an new edje item. The edje item data can be + * retrieved with edje_item_data_get(). + * + * @see edje_item_del() + * @see edje_item_data_set() + * @see edje_item_data_get() + * + */ + +Edje_Item * +edje_item_add(Edje_Item_Class *cl, void *data) +{ + Edje_Item *ei; + + ei = calloc(sizeof(Edje_Item), 1); + + ei->class = cl; + ei->class_data = data; + + return ei; +} + +/** + * @brief Delete an edje item. + * + * @param ei The edje item to be deleted. + * + * This function deletes the edje item from memory. + * + * @see edje_item_add() + * @see edje_item_data_set() + * @see edje_item_data_get() + * + */ + +void +edje_item_del(Edje_Item *ei) +{ + Smart_Data *sd; + + sd = ei->sd; + if (ei->object) evas_object_del(ei->object); + if (ei->overlay_object) evas_object_del(ei->overlay_object); + free(ei); + if (!sd) return; + sd->changed = 1; + sd->change_child_list = 1; + _edje_container_recalc(sd); +} + +/** + * @brief Return the smart object of the edje item. + * + * @param ei The edje item which the smart object of type Evas_Object is get + * from. + * + * This function returns the smart object in the edje item. + * + */ + +Evas_Object * +edje_item_container_get(Edje_Item *ei) +{ + if (!ei->sd) return NULL; + return ((Smart_Data *)(ei->sd))->smart_obj; +} + +/* an arbitrary data pointer to use to track other data */ +/** + * @brief Set the edje item data. + * + * @param ei The edje item of type Edje_Item_Class. + * @param data The edje item data. + * + * This function set the data of the edje item. The edje item data can be + * retrieved with edje_item_data_get(). + * + * @see edje_item_add() + * @see edje_item_del() + * @see edje_item_data_get() + * + */ + +void +edje_item_data_set(Edje_Item *ei, void *data) +{ + ei->data = data; +} + +/** + * @brief Get the data of the edje item. + * + * @param ei The edje item of type Edje_Item_Class. + * + * This function get the data of the edje item set by edje_item_data_set(). + * + * @see edje_item_data_set() + * @see edje_item_add() + * @see edje_item_del() + * + */ + +void * +edje_item_data_get(Edje_Item *ei) +{ + return ei->data; +} + +/* this object covers the entire item */ + +void +edje_item_overlay_object_set(Edje_Item *ei, Evas_Object *obj) +{ + if (ei->overlay_object) + { + /* FIXME: if it changed - remove...*/ + } + ei->overlay_object = obj; + if (ei->sd) + evas_object_smart_member_add(((Smart_Data *)(ei->sd))->smart_obj, obj); +} + + + +Evas_Object * +edje_item_overlay_object_get(Edje_Item *ei) +{ + return ei->overlay_object; +} + +/* this object goes under entire item */ +void +edje_item_object_set(Edje_Item *ei, Evas_Object *obj) +{ + if (ei->object) + { + /* FIXME: if it changed - remove...*/ + } + ei->object = obj; + if (ei->sd) + evas_object_smart_member_add(((Smart_Data *)(ei->sd))->smart_obj, obj); +} + +Evas_Object * +edje_item_object_get(Edje_Item *ei) +{ + return ei->object; +} + +/* optionally you can manage each column's object yourself OR let Edje do it */ +void +edje_item_object_column_set(Edje_Item *ei, int col, Evas_Object *obj) +{ + if (ei->cells_num <= (col + 1)) + { + /* FIXME: unsafe realloc */ + ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col); + ei->cells_num = col + 1; + } + ei->cells[col].obj = obj; +} + +Evas_Object * +edje_item_object_column_get(Edje_Item *ei, int col) +{ + if (ei->cells_num <= (col + 1)) return NULL; + return ei->cells[col].obj; +} + +/* query the item for the items preferred co-ords */ +void +edje_item_geometry_get(Edje_Item *ei, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +{ + if (!ei->sd) + { + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + return; + } + if (x) *x = ((Smart_Data *)(ei->sd))->x; + if (y) *y = ((Smart_Data *)(ei->sd))->y + ei->y; + if (w) *w = ((Smart_Data *)(ei->sd))->w; + if (h) *h = ei->h; +} + +/* freeze and thaw items if u are about to do a bunch of changes */ +int +edje_item_freeze(Edje_Item *ei) +{ + ei->freeze++; + return ei->freeze; +} + +int +edje_item_thaw(Edje_Item *ei) +{ + ei->freeze--; + if (ei->freeze > 0) return ei->freeze; + if (!ei->sd) return ei->freeze; + if (ei->recalc) _edje_item_recalc(ei); + return ei->freeze; +} + +/* column info */ +void +edje_item_column_size_set(Edje_Item *ei, int col, Evas_Coord minw, Evas_Coord maxw, Evas_Coord minh, Evas_Coord maxh) +{ + if (ei->cells_num <= (col + 1)) + { + /* FIXME: unsafe realloc */ + ei->cells = realloc(ei->cells, sizeof(Edje_Item_Cell) * col); + ei->cells_num = col + 1; + } + if ((ei->cells[col].minw == minw) && + (ei->cells[col].minh == minh) && + (ei->cells[col].maxw == maxw) && + (ei->cells[col].maxh == maxh)) return; + ei->cells[col].minh = minh; + ei->cells[col].maxh = maxh; + ei->cells[col].minw = minw; + ei->cells[col].maxw = maxw; + ei->recalc = 1; + if (ei->sd) + { + ((Smart_Data *)(ei->sd))->changed = 1; + ((Smart_Data *)(ei->sd))->change_child = 1; + } + _edje_item_recalc(ei); +} + +void +edje_item_column_size_get(Edje_Item *ei, int col, Evas_Coord *minw, Evas_Coord *maxw, Evas_Coord *minh, Evas_Coord *maxh) +{ + if (ei->cells_num <= (col + 1)) + { + if (minw) *minw = 0; + if (minh) *minh = 0; + if (maxw) *maxw = -1; + if (maxh) *maxh = -1; + } + if (minw) *minw = ei->cells[col].minw; + if (minh) *minh = ei->cells[col].minh; + if (maxw) *maxw = ei->cells[col].maxw; + if (maxh) *maxh = ei->cells[col].maxh; +} + +/* selection stuff */ +void +edje_item_select(Edje_Item *ei) +{ + ei->selected = 1; + /* FIXME: trigger item to change visually */ +} + +void +edje_item_unselect(Edje_Item *ei) +{ + ei->selected = 0; + /* FIXME: trigger item to change visually */ +} + +/* focus stuff - only 1 can be focuesd */ +void +edje_item_focus(Edje_Item *ei) +{ +// ei->focused = 1; +} + +void +edje_item_unfocus(Edje_Item *ei) +{ +// ei->focused = 0; +} + +/* disable/enable stuff - stops focus and selection working on these items */ +void +edje_item_enable(Edje_Item *ei) +{ +// ei->disabled = 0; +} + +void +edje_item_disable(Edje_Item *ei) +{ +// ei->disabled = 1; +} + +/* item utils */ +int +edje_item_selected_get(Edje_Item *ei) +{ + return ei->selected; +} + +int +edje_item_focused_get(Edje_Item *ei) +{ + return ei->focused; +} + +int +edje_item_disabled_get(Edje_Item *ei) +{ + return ei->disabled; +} + +/***** container calls *****/ + +int +edje_container_freeze(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + sd->freeze++; + return sd->freeze; +} + +int +edje_container_thaw(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + sd->freeze--; + if (sd->freeze <= 0) _edje_container_recalc(sd); + return sd->freeze; +} + +void +edje_container_item_append(Evas_Object *obj, Edje_Item *ei) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->children = eina_list_append(sd->children, ei); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_item_prepend(Evas_Object *obj, Edje_Item *ei) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->children = eina_list_prepend(sd->children, ei); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_item_append_relative(Evas_Object *obj, Edje_Item *ei, Edje_Item *rel) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->children = eina_list_append_relative(sd->children, ei, rel); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_item_prepend_relative(Evas_Object *obj, Edje_Item *ei, Edje_Item *rel) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->children = eina_list_prepend_relative(sd->children, ei, rel); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_item_insert(Evas_Object *obj, Edje_Item *ei, int n) +{ + Smart_Data *sd; + void *rel; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + rel = eina_list_nth(sd->children, n); + if (!rel) + sd->children = eina_list_append(sd->children, ei); + else + sd->children = eina_list_append_relative(sd->children, ei, rel); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_item_remove(Evas_Object *obj, Edje_Item *ei) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + sd->children = eina_list_remove(sd->children, ei); + sd->changed = 1; + sd->change_child_list = 1; + sd->rows = eina_list_count(sd->children); + _edje_container_recalc(sd); +} + +void +edje_container_columns_set(Evas_Object *obj, int cols) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->cols == cols) return; + sd->colinfo = realloc(sd->colinfo, cols * sizeof(Smart_Data_Colinfo)); + if (cols > sd->cols) + { + int i; + + for (i = sd->cols; i < cols; i++) + { + sd->colinfo[i].minw = 0; + sd->colinfo[i].maxw = -1; + } + } + sd->cols = cols; + sd->changed = 1; + sd->change_cols = 1; + _edje_container_recalc(sd); +} + +int +edje_container_columns_get(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return sd->cols; +} + +void +edje_container_min_size_get(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->changed) + { + int freeze; + + freeze = sd->freeze; + sd->freeze = 0; + _edje_container_recalc(sd); + sd->freeze = freeze; + } + if (minw) *minw = sd->min_w; + if (minh) *minh = sd->min_h; +} + +void +edje_container_max_size_get(Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->changed) + { + int freeze; + + freeze = sd->freeze; + sd->freeze = 0; + _edje_container_recalc(sd); + sd->freeze = freeze; + } + if (maxw) *maxw = sd->max_w; + if (maxh) *maxh = sd->max_h; +} + +void +edje_containter_align_set(Evas_Object *obj, double halign, double valign) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if ((sd->align_x == halign) && (sd->align_y == valign)) return; + sd->align_x = halign; + sd->align_y = valign; + sd->need_layout = 1; + _edje_container_relayout(sd); +} + +void +edje_container_align_get(Evas_Object *obj, double *halign, double *valign) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (halign) *halign = sd->align_x; + if (valign) *valign = sd->align_y; +} + +int +edje_container_count_get(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return eina_list_count(sd->children); +} + +Edje_Item * +edje_container_item_first_get(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + if (!sd->children) return NULL; + return eina_list_data_get(sd->children); +} + +Edje_Item * +edje_container_item_last_get(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + if (!sd->children) return NULL; + return0 eina_list_data_get(eina_list_last(sd->children)); +} + +Edje_Item * +edje_container_item_nth_get(Evas_Object *obj, int n) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return NULL; + return eina_list_nth(sd->children, n); +} + +void +edje_container_homogenous_size_set(Evas_Object *obj, int homog) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (((homog) && (sd->homogenous)) || + ((!homog) && (!sd->homogenous))) return; + sd->homogenous = homog; + sd->changed = 1; + sd->change_child = 1; + _edje_container_recalc(sd); +} + +int +edje_container_homogenous_size_get(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return 0; + return sd->homogenous; +} + +void +edje_container_scroll_set(Evas_Object *obj, double pos, double shift) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if ((sd->scroll_y == pos) && (sd->scroll_x == shift)) return; + sd->scroll_y = pos; + sd->scroll_x = shift; + sd->need_layout = 1; + _edje_container_relayout(sd); +} + +void +edje_container_scroll_get(Evas_Object *obj, double *pos, double *shift) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (pos) *pos = sd->scroll_y; + if (shift) *shift = sd->scroll_x; +} + +static void _smart_init(void); +static void _smart_add(Evas_Object * obj); +static void _smart_del(Evas_Object * obj); +static void _smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y); +static void _smart_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h); +static void _smart_show(Evas_Object * obj); +static void _smart_hide(Evas_Object * obj); +static void _smart_color_set(Evas_Object * obj, int r, int g, int b, int a); +static void _smart_clip_set(Evas_Object * obj, Evas_Object * clip); +static void _smart_clip_unset(Evas_Object * obj); + +static Evas_Smart *smart = NULL; + +Evas_Object * +edje_container_object_add(Evas *evas) +{ + _smart_init(); + return evas_object_smart_add(evas, smart); +} + +/*******************************************/ +/* Internal smart object required routines */ +/*******************************************/ +static void +_smart_init(void) +{ + if (smart) return; + { + static const Evas_Smart_Class sc = + { + E_OBJ_NAME, + _smart_add, + _smart_del, + _smart_move, + _smart_resize, + _smart_show, + _smart_hide, + _smart_color_set, + _smart_clip_set, + _smart_clip_unset, + NULL, + NULL, + NULL + }; + smart = evas_smart_class_new(&sc); + } +} + +static void +_smart_add(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = calloc(1, sizeof(Smart_Data)); + if (!sd) return; +// evas_object_smart_member_add(sd->obj, obj); + evas_object_smart_data_set(obj, sd); + sd->smart_obj = obj; +} + +static void +_smart_del(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; + if (sd->colinfo) free(sd->colinfo); +// evas_object_del(sd->obj); + free(sd); +} + +static void +_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_move(sd->obj, x, y); +} + +static void +_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_resize(sd->obj, w, h); +} + +static void +_smart_show(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_show(sd->obj); +} + +static void +_smart_hide(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_hide(sd->obj); +} + +static void +_smart_color_set(Evas_Object *obj, int r, int g, int b, int a) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_color_set(sd->obj, r, g, b, a); +} + +static void +_smart_clip_set(Evas_Object *obj, Evas_Object *clip) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_clip_set(sd->obj, clip); +} + +static void +_smart_clip_unset(Evas_Object *obj) +{ + Smart_Data *sd; + + sd = evas_object_smart_data_get(obj); + if (!sd) return; +// evas_object_clip_unset(sd->obj); +} + +#endif diff --git a/src/lib/edje_container.h b/src/lib/edje_container.h new file mode 100644 index 0000000..0fba62c --- /dev/null +++ b/src/lib/edje_container.h @@ -0,0 +1,165 @@ +#include "edje_private.h" + + +#define E_SMART_OBJ_GET(smart, o, type) \ + { \ + char *_e_smart_str; \ + \ + if (!o) return; \ + smart = evas_object_smart_data_get(o); \ + if (!smart) return; \ + _e_smart_str = (char *)evas_object_type_get(o); \ + if (!_e_smart_str) return; \ + if (strcmp(_e_smart_str, type)) return; \ + } + +#define E_SMART_OBJ_GET_RETURN(smart, o, type, ret) \ + { \ + char *_e_smart_str; \ + \ + if (!o) return ret; \ + smart = evas_object_smart_data_get(o); \ + if (!smart) return ret; \ + _e_smart_str = (char *)evas_object_type_get(o); \ + if (!_e_smart_str) return ret; \ + if (strcmp(_e_smart_str, type)) return ret; \ + } + +#define E_OBJ_NAME "edje_container_object" + +typedef struct _Smart_Data Smart_Data; +typedef struct _Smart_Data_Colinfo Smart_Data_Colinfo; + +struct _Smart_Data +{ + Evas_Coord x, y, w, h; + Eina_List *children; + Evas_Object *smart_obj; + int cols, rows; + + Evas_Coord contents_w, contents_h; + Evas_Coord min_row_h, max_row_h; + Evas_Coord min_w, max_w, min_h, max_h; + + Smart_Data_Colinfo *colinfo; + + int freeze; + + double scroll_x, scroll_y; + double align_x, align_y; + + unsigned char changed : 1; + unsigned char change_child : 1; + unsigned char change_child_list : 1; + unsigned char change_cols : 1; + unsigned char change_scroll : 1; + + unsigned char need_layout : 1; + + unsigned char homogenous : 1; +}; + +struct _Smart_Data_Colinfo +{ + Evas_Coord minw, maxw; +}; + +/* All items are virtual constructs that provide Evas_Objects at some point. + * Edje may move, resize, show, hide, clip, unclip, raise, lower etc. this + * item AFTER it calls the item's add() method and before it calls the del() + * method. Edje may call add() and del() at any time as often items may not + * be visible and so may not need to exist at all - they are merely information + * used for layout, and nothing more. this helps save cpu and memory keeping + * things responsive for BIG lists of items. you create an item from an item + * class then ask that item to be appended/prepended etc. to the container. + */ +typedef struct _Edje_Item Edje_Item; +typedef struct _Edje_Item_Cell Edje_Item_Cell; +typedef struct _Edje_Item_Class Edje_Item_Class; + +struct _Edje_Item_Class +{ + Evas_Object *(*add) (Edje_Item *ei); + void (*del) (Edje_Item *ei); + void (*select) (Edje_Item *ei); + void (*deselect) (Edje_Item *ei); + void (*focus) (Edje_Item *ei); + void (*unfocus) (Edje_Item *ei); +}; + +/* private */ +struct _Edje_Item +{ + Edje_Item_Class *class; + void *class_data; + + void *sd; + + void *data; + + Evas_Object *object; + Evas_Object *overlay_object; + int freeze; + Evas_Coord y, h; + + Evas_Coord minh, maxh; + + int cells_num; + Edje_Item_Cell *cells; + + unsigned char accessible : 1; + + unsigned char recalc : 1; + unsigned char selected : 1; + unsigned char disabled : 1; + unsigned char focused : 1; +}; + +struct _Edje_Item_Cell +{ + Evas_Object *obj; + Evas_Coord x, w; + Evas_Coord minw, minh, maxw, maxh; +}; + +/* here is an item for a vertical list - with 1 or more columns. this has 3 */ +/* just rotate for a horizontal list */ + +/* + * COL 0 COL 1 COL 2 + * + * +-----------------------------+ +-------+ +----------------+ + * | pad_top | | | | | + * | pad_left OBJECT pad_right | | OBJ | | OBJECT | ROW 0 + * | pad_bottom | | | | | + * +-----------------------------+ +-------+ +----------------+ + * /\ /|\ + * space_row || +-- space_col + * \/ + * +-----------------------------+ +-------+ +----------------+ + * | | | | | | + * | | | | | | ROW 1 + * | | | | | | + * +-----------------------------+ +-------+ +----------------+ + * + * spacer object: + * 1 Edje object goes in-between each row as a spacer object (opt) + * 1 Edje object goes in-between each column as a spacer object (opt) + * + * surround object: + * 1 Edje object goes around each item - item swallowed into "item" part (opt) + * if no "item" part then just underlay it + * on select send "select" "" signal + * on unselect send "unselect" "" signal + * on focus send "focus" "" signal + * on unfocus send "unfocus" signal + * + * if any list item/cell is an Edje object emit this to them too. + * + * also call callbacks. + * if a surround object emits such a signal itself then call callbacks too + * + * only 1 or 0 items can be focused + * disabled items cannot be focused or selected/deselected + * + */ diff --git a/src/lib/edje_convert.c b/src/lib/edje_convert.c new file mode 100644 index 0000000..07d43ce --- /dev/null +++ b/src/lib/edje_convert.c @@ -0,0 +1,499 @@ +#include "edje_private.h" + +static const Edje_File *_current_edje_file = NULL; + +const Edje_File * +_edje_file_get(void) +{ + return _current_edje_file; +} + +void +_edje_file_set(const Edje_File *edf) +{ + _current_edje_file = edf; +} + +static void +_edje_font_string_free(void *data) +{ + Edje_Font_Directory_Entry *fe = data; + + eina_stringshare_del(fe->path); + free(fe); +} + +static void +_edje_collection_string_free(void *data) +{ + Edje_Part_Collection_Directory_Entry *ce = data; + + eina_stringshare_del(ce->entry); + + if (ce->ref) + { + Edje_File *edf; + + edf = (Edje_File*) _edje_file_get(); + + if (!edf->warning) + CRITICAL("This program as probably called edje_shutdown() with " + "active Edje objects still around. " + "This can cause problems as both Evas and Edje retain " + "references to the objects. " + "You should shut down all canvases and objects " + "before calling edje_shutdown(). " + "The following errors are the edje object files and " + "parts that are still hanging around, with their reference " + "counts"); + + edf->warning = 1; + ERR("file: '%s', references: %i, part: '%s', references: %i", + edf->path, edf->references, + ce->ref->part, ce->ref->references); + + _edje_collection_free(edf, ce->ref, ce); + } + + free(ce); +} + +static Eina_Bool +_edje_file_convert_external(Edje_File *edf, Old_Edje_File *oedf) +{ + Edje_External_Directory_Entry *ede; + unsigned int max; + unsigned int i = 0; + + edf->external_dir = calloc(1, sizeof (Edje_External_Directory)); + if (!edf->external_dir) return EINA_FALSE; + if (!oedf->external_dir) return EINA_TRUE; + + max = eina_list_count(oedf->external_dir->entries); + edf->external_dir->entries = calloc(1, sizeof (Edje_External_Directory_Entry) * max); + edf->external_dir->entries_count = max; + + if (!edf->external_dir->entries && max) + return EINA_FALSE; + + EINA_LIST_FREE(oedf->external_dir->entries, ede) + { + edf->external_dir->entries[i++].entry = ede->entry; + free(ede); + } + + free(oedf->external_dir); + oedf->external_dir = NULL; + + return EINA_TRUE; +} + +static Eina_Bool +_edje_file_convert_images(Edje_File *edf, Old_Edje_File *oedf) +{ + Edje_Image_Directory_Entry *de; + Edje_Image_Directory_Set *ds; + Eina_List *l; + int max; + + edf->image_dir = calloc(1, sizeof (Edje_Image_Directory)); + if (!edf->image_dir) return EINA_FALSE; + if (!oedf->image_dir) return EINA_TRUE; + + max = -1; + EINA_LIST_FOREACH(oedf->image_dir->entries, l, de) + if (max < de->id) + max = de->id; + + edf->image_dir->entries = calloc(1, sizeof (Edje_Image_Directory_Entry) * (max + 1)); + edf->image_dir->entries_count = max + 1; + + if (!edf->image_dir->entries && edf->image_dir->entries_count) + return EINA_FALSE; + + EINA_LIST_FREE(oedf->image_dir->entries, de) + { + memcpy(edf->image_dir->entries + de->id, + de, + sizeof (Edje_Image_Directory_Entry)); + free(de); + } + + max = -1; + EINA_LIST_FOREACH(oedf->image_dir->sets, l, ds) + if (max < ds->id) + max = ds->id; + + edf->image_dir->sets = calloc(1, sizeof (Edje_Image_Directory_Set) * (max + 1)); + edf->image_dir->sets_count = max + 1; + + if (!edf->image_dir->sets && edf->image_dir->sets_count) + { + free(edf->image_dir->entries); + edf->image_dir->entries = NULL; + return EINA_FALSE; + } + + EINA_LIST_FREE(oedf->image_dir->sets, ds) + { + memcpy(edf->image_dir->sets + ds->id, + ds, + sizeof (Edje_Image_Directory_Set)); + free(ds); + } + + return EINA_TRUE; +} + +Edje_File * +_edje_file_convert(Eet_File *file, Old_Edje_File *oedf) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Font_Directory_Entry *fnt; + Edje_File *edf; + Eina_List *l; + Edje_Data *ed; + + edf = calloc(1, sizeof (Edje_File)); + if (!edf) return NULL; + + edf->free_strings = eet_dictionary_get(file) ? 0 : 1; + + if (edf->free_strings) + { + edf->fonts = eina_hash_string_small_new(_edje_font_string_free); + edf->collection = eina_hash_string_small_new(_edje_collection_string_free); + edf->data = eina_hash_string_small_new((Eina_Free_Cb) eina_stringshare_del); + } + else + { + edf->fonts = eina_hash_string_small_new(free); + edf->collection = eina_hash_string_small_new(free); + edf->data = eina_hash_string_small_new(NULL); + } + + if (!edf->fonts || !edf->collection || !edf->data) + goto on_error; + + EINA_LIST_FREE(oedf->data, ed) + { + eina_hash_direct_add(edf->data, ed->key, ed->value); + free(ed); + } + + EINA_LIST_FOREACH(oedf->collection_dir->entries, l, ce) + if (ce->entry) + eina_hash_direct_add(edf->collection, ce->entry, ce); + + if (oedf->font_dir) + EINA_LIST_FOREACH(oedf->font_dir->entries, l, fnt) + { + char *tmp; + int length; + + length = strlen(fnt->entry) + 7; + tmp = alloca(length); + + snprintf(tmp, length, "fonts/%s", fnt->entry); + fnt->path = eina_stringshare_add(tmp); + if (edf->free_strings) + eina_stringshare_del(fnt->entry); + fnt->entry = fnt->path + 6; + + eina_hash_direct_add(edf->fonts, fnt->entry, fnt); + } + + if (!_edje_file_convert_images(edf, oedf)) + goto on_error; + + if (!_edje_file_convert_external(edf, oedf)) + goto on_error; + + edf->oef = oedf; + edf->styles = oedf->styles; + edf->color_classes = oedf->color_classes; + edf->version = oedf->version; + edf->feature_ver = oedf->feature_ver; + edf->compiler = oedf->compiler; + + edf->dangling = EINA_FALSE; + edf->warning = EINA_FALSE; + + /* Below you will find all memory structure that could be cleaned when under + memory pressure */ + edf->collection_cache = NULL; + edf->collection_patterns = NULL; + + return edf; + + on_error: + eina_hash_free(edf->fonts); + eina_hash_free(edf->collection); + eina_hash_free(edf->data); + free(edf->image_dir); + free(edf->external_dir); + free(edf); + return NULL; +} + +static void +_edje_collection_program_add(Edje_Program ***array, + unsigned int *count, + Edje_Program *add) +{ + Edje_Program **tmp; + + tmp = realloc(*array, sizeof (Edje_Program*) * (*count + 1)); + if (!tmp) return ; + + tmp[(*count)++] = add; + *array = tmp; +} + +Edje_Part_Collection * +_edje_collection_convert(Edje_File *file, Old_Edje_Part_Collection *oedc) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Collection *edc; + Old_Edje_Part *part; + Edje_Program *pg; + Edje_Data *di; + Eina_List *l; + unsigned int k; + + ce = eina_hash_find(file->collection, oedc->part); + + /* Count each type part and their respective state */ + EINA_LIST_FOREACH(oedc->parts, l, part) + { + int *count; + int dummy = 0; + + + switch (part->type) + { +#define CSP(Tp, Ce) \ + case EDJE_PART_TYPE_##Tp : \ + count = &Ce->count.Tp; \ + break; + + CSP(RECTANGLE, ce); + CSP(TEXT, ce); + CSP(IMAGE, ce); + CSP(SWALLOW, ce); + CSP(TEXTBLOCK, ce); + CSP(GROUP, ce); + CSP(BOX, ce); + CSP(TABLE, ce); + CSP(EXTERNAL, ce); + default: + count = &dummy; + break; + } + + *count += eina_list_count(part->other_desc) + 1; + } + ce->count.part = eina_list_count(oedc->parts); + +#define CONVERT_EMN(Tp, Sz, Ce) \ + Ce->mp.Tp = eina_mempool_add("one_big", #Tp, NULL, sizeof (Sz), Ce->count.Tp); + + CONVERT_EMN(RECTANGLE, Edje_Part_Description_Common, ce); + CONVERT_EMN(TEXT, Edje_Part_Description_Text, ce); + CONVERT_EMN(IMAGE, Edje_Part_Description_Image, ce); + CONVERT_EMN(SWALLOW, Edje_Part_Description_Common, ce); + CONVERT_EMN(TEXTBLOCK, Edje_Part_Description_Text, ce); + CONVERT_EMN(GROUP, Edje_Part_Description_Common, ce); + CONVERT_EMN(BOX, Edje_Part_Description_Box, ce); + CONVERT_EMN(TABLE, Edje_Part_Description_Table, ce); + CONVERT_EMN(EXTERNAL, Edje_Part_Description_External, ce); + CONVERT_EMN(part, Edje_Part, ce); + + /* Change structure layout */ + edc = calloc(1, sizeof (Edje_Part_Collection)); + if (!edc) return NULL; + ce->ref = edc; + + EINA_LIST_FREE(oedc->programs, pg) + { + if (!pg->signal && !pg->source) + _edje_collection_program_add(&edc->programs.nocmp, + &edc->programs.nocmp_count, + pg); + else if (pg->signal && !strpbrk(pg->signal, "*?[\\") + && pg->source && !strpbrk(pg->source, "*?[\\")) + _edje_collection_program_add(&edc->programs.strcmp, + &edc->programs.strcmp_count, + pg); + else if (pg->signal && edje_program_is_strncmp(pg->signal) + && pg->source && edje_program_is_strncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strncmp, + &edc->programs.strncmp_count, + pg); + else if (pg->signal && edje_program_is_strrncmp(pg->signal) + && pg->source && edje_program_is_strrncmp(pg->source)) + _edje_collection_program_add(&edc->programs.strrncmp, + &edc->programs.strrncmp_count, + pg); + else + _edje_collection_program_add(&edc->programs.fnmatch, + &edc->programs.fnmatch_count, + pg); + } + + edc->data = eina_hash_string_small_new(NULL); + EINA_LIST_FREE(oedc->data, di) + { + eina_hash_direct_add(edc->data, di->key, di->value); + free(di); + } + + edc->parts_count = eina_list_count(oedc->parts); + edc->parts = calloc(edc->parts_count, sizeof (Edje_Part *)); + k = 0; + + EINA_LIST_FREE(oedc->parts, part) + { + Old_Edje_Part_Description *oepd; + Edje_Pack_Element *elm; + Edje_Part *replacement; + unsigned int i; + + replacement = eina_mempool_malloc(ce->mp.part, sizeof (Edje_Part)); + + replacement->name = part->name; + replacement->default_desc = _edje_description_convert(part->type, ce, part->default_desc); + + replacement->other_count = eina_list_count(part->other_desc); + replacement->other_desc = calloc(replacement->other_count, sizeof (Edje_Part_Description_Common*)); + + i = 0; + EINA_LIST_FREE(part->other_desc, oepd) + replacement->other_desc[i++] = _edje_description_convert(part->type, ce, oepd); + + replacement->source = part->source; + replacement->source2 = part->source2; + replacement->source3 = part->source3; + replacement->source4 = part->source4; + replacement->source5 = part->source5; + replacement->source6 = part->source6; + replacement->id = part->id; + replacement->clip_to_id = part->clip_to_id; + replacement->dragable = part->dragable; + replacement->items_count = eina_list_count(part->items); + replacement->items = calloc(replacement->items_count, sizeof (Edje_Pack_Element*)); + + i = 0; + EINA_LIST_FREE(part->items, elm) + replacement->items[i++] = elm; + + replacement->type = part->type; + replacement->effect = part->effect; + replacement->mouse_events = part->mouse_events; + replacement->repeat_events = part->repeat_events; + replacement->ignore_flags = part->ignore_flags; + replacement->scale = part->scale; + replacement->precise_is_inside = part->precise_is_inside; + replacement->use_alternate_font_metrics = part->use_alternate_font_metrics; + replacement->pointer_mode = part->pointer_mode; + replacement->entry_mode = part->entry_mode; + replacement->select_mode = part->select_mode; + replacement->multiline = part->multiline; + replacement->api = part->api; + + edc->parts[k++] = replacement; + + free(part); + } + + edc->id = oedc->id; + edc->alias = oedc->alias; + edc->prop.min = oedc->prop.min; + edc->prop.max = oedc->prop.max; + edc->script = oedc->script; + edc->part = oedc->part; + edc->script_only = oedc->script_only; + edc->lua_script_only = oedc->lua_script_only; + edc->checked = oedc->checked; + + free(oedc); + + return edc; +} + +Edje_Part_Description_Common* +_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed) +{ + Edje_Part_Description_Common *result = NULL; + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + result = eina_mempool_malloc(ce->mp.RECTANGLE, + sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_SWALLOW: + result = eina_mempool_malloc(ce->mp.SWALLOW, + sizeof (Edje_Part_Description_Common)); + break; + case EDJE_PART_TYPE_GROUP: + result = eina_mempool_malloc(ce->mp.GROUP, + sizeof (Edje_Part_Description_Common)); + break; + + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img; + Edje_Part_Image_Id *id; + unsigned int i = 0; + + img = eina_mempool_malloc(ce->mp.IMAGE, sizeof (Edje_Part_Description_Image)); + + img->image.tweens_count = eina_list_count(oed->image.tween_list); + img->image.tweens = calloc(img->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + if (img->image.tweens_count > 0 && !img->image.tweens) + { + eina_mempool_free(ce->mp.IMAGE, img); + return NULL; + } + + EINA_LIST_FREE(oed->image.tween_list, id) + img->image.tweens[i++] = id; + + img->image.id = oed->image.id; + img->image.scale_hint = oed->image.scale_hint; + img->image.set = oed->image.set; + + img->image.border = oed->image.border; + img->image.fill = oed->image.fill; + + result = &img->common; + break; + } + +#define CONVERT_ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + \ + Name = eina_mempool_malloc(ce->mp.Short, sizeof (Edje_Part_Description_##Type)); \ + Name->Name = oed->Name; \ + result = &Name->common; \ + break; \ + } + + CONVERT_ALLOC_POOL(TEXT, Text, text); + CONVERT_ALLOC_POOL(TEXTBLOCK, Text, text); + CONVERT_ALLOC_POOL(BOX, Box, box); + CONVERT_ALLOC_POOL(TABLE, Table, table); + CONVERT_ALLOC_POOL(EXTERNAL, External, external_params); + } + + *result = oed->common; + + free(oed); + return result; +} diff --git a/src/lib/edje_convert.h b/src/lib/edje_convert.h new file mode 100644 index 0000000..fcc2781 --- /dev/null +++ b/src/lib/edje_convert.h @@ -0,0 +1,143 @@ +#ifndef EDJE_CONVERT_H__ +# define EDJE_CONVERT_H__ + +typedef struct _Old_Edje_Image_Directory Old_Edje_Image_Directory; +typedef struct _Old_Edje_Font_Directory Old_Edje_Font_Directory; +typedef struct _Old_Edje_External_Directory Old_Edje_External_Directory; +typedef struct _Old_Edje_Part Old_Edje_Part; +typedef struct _Old_Edje_Part_Collection Old_Edje_Part_Collection; +typedef struct _Old_Edje_Part_Description Old_Edje_Part_Description; +typedef struct _Old_Edje_Part_Description_Spec_Image Old_Edje_Part_Description_Spec_Image; +typedef struct _Edje_Data Edje_Data; + +struct _Edje_Data +{ + const char *key; + char *value; +}; + +/*----------*/ + +struct _Old_Edje_Font_Directory +{ + Eina_List *entries; /* a list of Edje_Font_Directory_Entry */ +}; + +struct _Old_Edje_Image_Directory +{ + Eina_List *entries; /* a list of Edje_Image_Directory_Entry */ + Eina_List *sets; /* a list of Edje_Image_Directory_Set */ +}; + +struct _Old_Edje_External_Directory +{ + Eina_List *entries; /* a list of Edje_External_Directory_Entry */ +}; + +struct _Old_Edje_File +{ + const char *path; + time_t mtime; + + Old_Edje_External_Directory *external_dir; + Old_Edje_Font_Directory *font_dir; + Old_Edje_Image_Directory *image_dir; + Edje_Part_Collection_Directory *collection_dir; + Eina_List *data; + Eina_List *styles; + Eina_List *color_classes; + + const char *compiler; + int version; + int feature_ver; +}; + +struct _Old_Edje_Part_Collection +{ + Eina_List *programs; /* a list of Edje_Program */ + Eina_List *parts; /* a list of Edje_Part */ + Eina_List *data; + + int id; /* the collection id */ + + Eina_Hash *alias; /* aliasing part*/ + + struct { + Edje_Size min, max; + } prop; + + int references; +#ifdef EDJE_PROGRAM_CACHE + struct { + Eina_Hash *no_matches; + Eina_Hash *matches; + } prog_cache; +#endif + + Embryo_Program *script; /* all the embryo script code for this group */ + const char *part; + + unsigned char script_only; + + unsigned char lua_script_only; + + unsigned char checked : 1; +}; + +struct _Old_Edje_Part +{ + const char *name; /* the name if any of the part */ + Old_Edje_Part_Description *default_desc; /* the part descriptor for default */ + Eina_List *other_desc; /* other possible descriptors */ + const char *source, *source2, *source3, *source4, *source5, *source6; + int id; /* its id number */ + int clip_to_id; /* the part id to clip this one to */ + Edje_Part_Dragable dragable; + Eina_List *items; /* packed items for box and table */ + unsigned char type; /* what type (image, rect, text) */ + unsigned char effect; /* 0 = plain... */ + unsigned char mouse_events; /* it will affect/respond to mouse events */ + unsigned char repeat_events; /* it will repeat events to objects below */ + Evas_Event_Flags ignore_flags; + unsigned char scale; /* should certain properties scale with edje scale factor? */ + unsigned char precise_is_inside; + unsigned char use_alternate_font_metrics; + unsigned char pointer_mode; + unsigned char entry_mode; + unsigned char select_mode; + unsigned char multiline; + Edje_Part_Api api; +}; + +struct _Old_Edje_Part_Description_Spec_Image +{ + Eina_List *tween_list; /* list of Edje_Part_Image_Id */ + int id; /* the image id to use */ + int scale_hint; /* evas scale hint */ + Eina_Bool set; /* if image condition it's content */ + + Edje_Part_Description_Spec_Border border; + Edje_Part_Description_Spec_Fill fill; +}; + +struct _Old_Edje_Part_Description +{ + Edje_Part_Description_Common common; + Old_Edje_Part_Description_Spec_Image image; + Edje_Part_Description_Spec_Text text; + Edje_Part_Description_Spec_Box box; + Edje_Part_Description_Spec_Table table; + + Eina_List *external_params; /* parameters for external objects */ +}; + +Edje_File *_edje_file_convert(Eet_File *file, Old_Edje_File *oedf); +Edje_Part_Collection *_edje_collection_convert(Edje_File *file, + Old_Edje_Part_Collection *oedc); +Edje_Part_Description_Common *_edje_description_convert(int type, + Edje_Part_Collection_Directory_Entry *ce, + Old_Edje_Part_Description *oed); +const Edje_File *_edje_file_get(void); +void _edje_file_set(const Edje_File *edf); + +#endif diff --git a/src/lib/edje_data.c b/src/lib/edje_data.c new file mode 100644 index 0000000..da30329 --- /dev/null +++ b/src/lib/edje_data.c @@ -0,0 +1,910 @@ +#include "edje_private.h" + +EAPI Eet_Data_Descriptor *_edje_edd_edje_file = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_part_collection = NULL; + +Eet_Data_Descriptor *_edje_edd_edje_string = NULL; +Eet_Data_Descriptor *_edje_edd_edje_style = NULL; +Eet_Data_Descriptor *_edje_edd_edje_style_tag = NULL; +Eet_Data_Descriptor *_edje_edd_edje_color_class = NULL; +Eet_Data_Descriptor *_edje_edd_edje_external_directory = NULL; +Eet_Data_Descriptor *_edje_edd_edje_external_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_edje_font_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_edje_image_directory = NULL; +Eet_Data_Descriptor *_edje_edd_edje_image_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_edje_image_directory_set = NULL; +Eet_Data_Descriptor *_edje_edd_edje_image_directory_set_entry = NULL; +Eet_Data_Descriptor *_edje_edd_edje_limit = NULL; +Eet_Data_Descriptor *_edje_edd_edje_limit_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_sound_sample = NULL; +Eet_Data_Descriptor *_edje_edd_edje_sound_tone = NULL; +Eet_Data_Descriptor *_edje_edd_edje_sound_directory = NULL; +Eet_Data_Descriptor *_edje_edd_edje_program = NULL; +Eet_Data_Descriptor *_edje_edd_edje_program_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_program_target = NULL; +Eet_Data_Descriptor *_edje_edd_edje_program_after = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_collection_directory_entry = NULL; +Eet_Data_Descriptor *_edje_edd_edje_pack_element = NULL; +Eet_Data_Descriptor *_edje_edd_edje_pack_element_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_variant = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_spacer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_group = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_image = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_proxy = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_text = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_textblock = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_box = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_table = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_external = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_variant_list = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_rectangle_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_spacer_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_swallow_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_group_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_image_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_proxy_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_text_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_textblock_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_box_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_table_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_description_external_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_image_id = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_image_id_pointer = NULL; +Eet_Data_Descriptor *_edje_edd_edje_external_param = NULL; +Eet_Data_Descriptor *_edje_edd_edje_part_limit = NULL; + +#define EMP(Type, Minus) \ + Eina_Mempool *_emp_##Type = NULL; \ + \ + static void * \ + mem_alloc_##Minus(size_t size) \ + { \ + void *data; \ + \ + data = eina_mempool_malloc(_emp_##Type, size); \ + memset(data, 0, size); \ + return data; \ + } \ + \ + static void \ + mem_free_##Minus(void *data) \ + { \ + eina_mempool_free(_emp_##Type, data); \ + } + +EMP(RECTANGLE, rectangle); +EMP(TEXT, text); +EMP(IMAGE, image); +EMP(PROXY, proxy); +EMP(SWALLOW, swallow); +EMP(TEXTBLOCK, textblock); +EMP(GROUP, group); +EMP(BOX, box); +EMP(TABLE, table); +EMP(EXTERNAL, external); +EMP(SPACER, spacer); +EMP(part, part); + +#define FREED(eed) \ + if (eed) \ + { \ + eet_data_descriptor_free((eed)); \ + (eed) = NULL; \ + } + +struct { + Edje_Part_Type type; + const char *name; +} variant_convertion[] = { + { EDJE_PART_TYPE_RECTANGLE, "rectangle" }, + { EDJE_PART_TYPE_SWALLOW, "swallow" }, + { EDJE_PART_TYPE_GROUP, "group" }, + { EDJE_PART_TYPE_IMAGE, "image" }, + { EDJE_PART_TYPE_TEXT, "text" }, + { EDJE_PART_TYPE_TEXTBLOCK, "textblock" }, + { EDJE_PART_TYPE_BOX, "box" }, + { EDJE_PART_TYPE_TABLE, "table" }, + { EDJE_PART_TYPE_EXTERNAL, "external" }, + { EDJE_PART_TYPE_PROXY, "proxy" }, + { EDJE_PART_TYPE_SPACER, "spacer" } +}; + +static const char * +_edje_description_variant_type_get(const void *data, Eina_Bool *unknow __UNUSED__) +{ + const unsigned char *type; + unsigned int i; + + type = data; + + for (i = 0; i < (sizeof (variant_convertion) / sizeof (variant_convertion[0])); ++i) + if (*type == variant_convertion[i].type) + return variant_convertion[i].name; + + return NULL; +} + +static Eina_Bool +_edje_description_variant_type_set(const char *type, void *data, Eina_Bool unknow __UNUSED__) +{ + unsigned char *dt; + unsigned int i; + + dt = data; + + for (i = 0; i < (sizeof (variant_convertion) / sizeof (variant_convertion[0])); ++i) + if (!strcmp(variant_convertion[i].name, type)) + { + *dt = variant_convertion[i].type; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +static Eina_Hash * +_edje_eina_hash_add_alloc(Eina_Hash *hash, + const char *key, + void *data) +{ + if (!hash) + hash = eina_hash_string_small_new(free); + + if (!hash) + return NULL; + + eina_hash_add(hash, key, data); + return hash; +} + +// FIXME: remove EAPI when edje_convert goes +EAPI void +_edje_edd_shutdown(void) +{ + FREED(_edje_edd_edje_file); + FREED(_edje_edd_edje_string); + FREED(_edje_edd_edje_style); + FREED(_edje_edd_edje_style_tag); + FREED(_edje_edd_edje_color_class); + FREED(_edje_edd_edje_external_directory); + FREED(_edje_edd_edje_external_directory_entry); + FREED(_edje_edd_edje_font_directory_entry); + FREED(_edje_edd_edje_image_directory); + FREED(_edje_edd_edje_image_directory_entry); + FREED(_edje_edd_edje_limit); + FREED(_edje_edd_edje_limit_pointer); + FREED(_edje_edd_edje_sound_sample); + FREED(_edje_edd_edje_sound_tone); + FREED(_edje_edd_edje_sound_directory); + FREED(_edje_edd_edje_program); + FREED(_edje_edd_edje_program_pointer); + FREED(_edje_edd_edje_program_target); + FREED(_edje_edd_edje_program_after); + FREED(_edje_edd_edje_part_collection_directory_entry); + FREED(_edje_edd_edje_pack_element); + FREED(_edje_edd_edje_pack_element_pointer); + FREED(_edje_edd_edje_part_collection); + FREED(_edje_edd_edje_part); + FREED(_edje_edd_edje_part_pointer); + FREED(_edje_edd_edje_part_description_variant); + FREED(_edje_edd_edje_part_description_rectangle); + FREED(_edje_edd_edje_part_description_spacer); + FREED(_edje_edd_edje_part_description_swallow); + FREED(_edje_edd_edje_part_description_group); + FREED(_edje_edd_edje_part_description_image); + FREED(_edje_edd_edje_part_description_proxy); + FREED(_edje_edd_edje_part_description_text); + FREED(_edje_edd_edje_part_description_textblock); + FREED(_edje_edd_edje_part_description_box); + FREED(_edje_edd_edje_part_description_table); + FREED(_edje_edd_edje_part_description_external); + FREED(_edje_edd_edje_part_description_variant_list); + FREED(_edje_edd_edje_part_description_rectangle_pointer); + FREED(_edje_edd_edje_part_description_spacer_pointer); + FREED(_edje_edd_edje_part_description_swallow_pointer); + FREED(_edje_edd_edje_part_description_group_pointer); + FREED(_edje_edd_edje_part_description_image_pointer); + FREED(_edje_edd_edje_part_description_proxy_pointer); + FREED(_edje_edd_edje_part_description_text_pointer); + FREED(_edje_edd_edje_part_description_textblock_pointer); + FREED(_edje_edd_edje_part_description_box_pointer); + FREED(_edje_edd_edje_part_description_table_pointer); + FREED(_edje_edd_edje_part_description_external_pointer); + FREED(_edje_edd_edje_part_image_id); + FREED(_edje_edd_edje_part_image_id_pointer); + FREED(_edje_edd_edje_external_param); + FREED(_edje_edd_edje_image_directory_set); + FREED(_edje_edd_edje_image_directory_set_entry); + FREED(_edje_edd_edje_part_limit); +} + +#define EDJE_DEFINE_POINTER_TYPE(Type, Name) \ + { \ + typedef struct _Edje_##Type##_Pointer Edje_##Type##_Pointer; \ + struct _Edje_##Type##_Pointer \ + { \ + Edje_##Type *pointer; \ + }; \ + \ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_##Type##_Pointer); \ + _edje_edd_edje_##Name##_pointer = \ + eet_data_descriptor_file_new(&eddc); \ + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_##Name##_pointer, Edje_##Type##_Pointer, "pointer", pointer, _edje_edd_edje_##Name); \ + } + +// FIXME: remove EAPI when edje_convert goes +EAPI void +_edje_edd_init(void) +{ + Eet_Data_Descriptor_Class eddc; + + /* localisable string */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_String); + _edje_edd_edje_string = eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_string, Edje_String, "str", str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_string, Edje_String, "id", id, EET_T_UINT); + + /* external directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Directory_Entry); + _edje_edd_edje_external_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_directory_entry, Edje_External_Directory_Entry, "entry", entry, EET_T_STRING); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Directory); + _edje_edd_edje_external_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_external_directory, Edje_External_Directory, "entries", entries, _edje_edd_edje_external_directory_entry); + + /* font directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Font_Directory_Entry); + _edje_edd_edje_font_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, Edje_Font_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_font_directory_entry, Edje_Font_Directory_Entry, "file", file, EET_T_STRING); + + /* image directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Entry); + _edje_edd_edje_image_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_type", source_type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "source_param", source_param, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_entry, Edje_Image_Directory_Entry, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Set_Entry); + _edje_edd_edje_image_directory_set_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "min.w", size.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "min.h", size.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "max.w", size.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set_entry, Edje_Image_Directory_Set_Entry, "max.h", size.max.h, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory_Set); + _edje_edd_edje_image_directory_set = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_image_directory_set, Edje_Image_Directory_Set, "entries", entries, _edje_edd_edje_image_directory_set_entry); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Image_Directory); + _edje_edd_edje_image_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_image_directory, Edje_Image_Directory, "entries", entries, _edje_edd_edje_image_directory_entry); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_image_directory, Edje_Image_Directory, "sets", sets, _edje_edd_edje_image_directory_set); + + /* Sound */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Sound_Sample); + _edje_edd_edje_sound_sample = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "snd_src", snd_src, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "compression", compression, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "mode", mode, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "quality", quality, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_sample, Edje_Sound_Sample, "id", id, EET_T_INT); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Sound_Tone); + _edje_edd_edje_sound_tone = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_tone, Edje_Sound_Tone, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_tone, Edje_Sound_Tone, "value", value, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_sound_tone, Edje_Sound_Tone, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Sound_Directory); + _edje_edd_edje_sound_directory = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_sound_directory, Edje_Sound_Directory, "samples", samples, _edje_edd_edje_sound_sample); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_sound_directory, Edje_Sound_Directory, "tones", tones, _edje_edd_edje_sound_tone); + + /* collection directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection_Directory_Entry); + _edje_edd_edje_part_collection_directory_entry = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "entry", entry, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.RECTANGLE", count.RECTANGLE, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TEXT", count.TEXT, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.IMAGE", count.IMAGE, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.PROXY", count.PROXY, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.SWALLOW", count.SWALLOW, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TEXTBLOCK", count.TEXTBLOCK, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.GROUP", count.GROUP, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.BOX", count.BOX, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.TABLE", count.TABLE, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.EXTERNAL", count.EXTERNAL, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.SPACER", count.SPACER, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection_directory_entry, Edje_Part_Collection_Directory_Entry, "count.part", count.part, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style_Tag); + _edje_edd_edje_style_tag = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style_tag, Edje_Style_Tag, "key", key, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style_tag, Edje_Style_Tag, "value", value, EET_T_STRING); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Style); + _edje_edd_edje_style = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_style, Edje_Style, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_style, Edje_Style, "tags", tags, _edje_edd_edje_style_tag); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Color_Class); + _edje_edd_edje_color_class = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "r", r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "g", g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "b", b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "a", a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "r2", r2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "g2", g2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "b2", b2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "a2", a2, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "r3", r3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "g3", g3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "b3", b3, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_color_class, Edje_Color_Class, "a3", a3, EET_T_UCHAR); + + /* the main file directory */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_File); + eddc.func.hash_add = (void * (*)(void *, const char *, void *)) _edje_eina_hash_add_alloc; + _edje_edd_edje_file = eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "compiler", compiler, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "minor", minor, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "feature_ver", feature_ver, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "external_dir", external_dir, _edje_edd_edje_external_directory); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", image_dir, _edje_edd_edje_image_directory); + EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "sound_dir", sound_dir, _edje_edd_edje_sound_directory); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "styles", styles, _edje_edd_edje_style); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "color_classes", color_classes, _edje_edd_edje_color_class); + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "data", data, _edje_edd_edje_string); + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "fonts", fonts, _edje_edd_edje_font_directory_entry); + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "collection", collection, _edje_edd_edje_part_collection_directory_entry); + + /* parts & limit & programs - loaded induvidually */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Limit); + _edje_edd_edje_limit = eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_limit, Edje_Limit, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_limit, Edje_Limit, "value", value, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program_Target); + _edje_edd_edje_program_target = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program_target, Edje_Program_Target, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program_After); + _edje_edd_edje_program_after = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program_after, + Edje_Program_After, "id", id, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Program); + _edje_edd_edje_program = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "signal", signal, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "filter_part", filter.part, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "filter_state", filter.state, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "in.from", in.from, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "in.range", in.range, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "action", action, EET_T_INT); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "sample_name", sample_name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tone_name", tone_name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program ,"duration", duration, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program ,"speed", speed, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "state", state, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "state2", state2, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value", value, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value2", value2, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.mode", tween.mode, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.time", tween.time, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "v1", tween.v1, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "v2", tween.v2, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "targets", targets, _edje_edd_edje_program_target); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_program, Edje_Program, "after", after, _edje_edd_edje_program_after); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "api.name", api.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "api.description", api.description, EET_T_STRING); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "param.src", param.src, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "param.dst", param.dst, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Image_Id); + _edje_edd_edje_part_image_id = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_image_id, Edje_Part_Image_Id, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_image_id, Edje_Part_Image_Id, "set", set, EET_T_UCHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Param); + _edje_edd_edje_external_param = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "type", type, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "i", i, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "d", d, EET_T_DOUBLE); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_external_param, Edje_External_Param, "s", s, EET_T_STRING); + +#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(Edd, Type) \ + { \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.name", state.name, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.value", state.value, EET_T_DOUBLE); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", visible, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "limit", limit, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.x", align.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", align.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", fixed.w, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", fixed.h, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.have", minmul.have, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.w", minmul.w, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "minmul.h", minmul.h, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", min.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", min.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.limit", min.limit, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", max.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.h", max.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.limit", max.limit, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", step.x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.y", step.y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.min", aspect.min, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.max", aspect.max, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.prefer", aspect.prefer, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_x", rel1.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_y", rel1.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_x", rel1.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_y", rel1.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_x", rel1.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_y", rel1.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_x", rel2.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_y", rel2.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_x", rel2.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_y", rel2.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_x", rel2.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_y", rel2.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color_class", color_class, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.r", color.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.g", color.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.b", color.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.a", color.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.r", color2.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.g", color2.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.b", color2.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.a", color2.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_persp", map.id_persp, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_light", map.id_light, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.id_center", map.rot.id_center, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.x", map.rot.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.y", map.rot.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.z", map.rot.z, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.on", map.on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.smooth", map.smooth, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.alpha", map.alpha, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.persp_on", map.persp_on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.backcull", map.backcull, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", persp.zplane, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", persp.focal, EET_T_INT); \ + } + +#define EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(Edd, Type, Dec) \ + { \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.name", Dec.state.name, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "state.value", Dec.state.value, EET_T_DOUBLE); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "visible", Dec.visible, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.x", Dec.align.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "align.y", Dec.align.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.w", Dec.fixed.w, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "fixed.h", Dec.fixed.h, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.w", Dec.min.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "min.h", Dec.min.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.w", Dec.max.w, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "max.h", Dec.max.h, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.x", Dec.step.x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "step.y", Dec.step.y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.min", Dec.aspect.min, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.max", Dec.aspect.max, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "aspect.prefer", Dec.aspect.prefer, EET_T_CHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_x", Dec.rel1.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.relative_y", Dec.rel1.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_x", Dec.rel1.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.offset_y", Dec.rel1.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_x", Dec.rel1.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel1.id_y", Dec.rel1.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_x", Dec.rel2.relative_x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.relative_y", Dec.rel2.relative_y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_x", Dec.rel2.offset_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.offset_y", Dec.rel2.offset_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_x", Dec.rel2.id_x, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "rel2.id_y", Dec.rel2.id_y, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color_class", Dec.color_class, EET_T_STRING); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.r", Dec.color.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.g", Dec.color.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.b", Dec.color.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color.a", Dec.color.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.r", Dec.color2.r, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.g", Dec.color2.g, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.b", Dec.color2.b, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "color2.a", Dec.color2.a, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_persp", Dec.map.id_persp, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.id_light", Dec.map.id_light, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.id_center", Dec.map.rot.id_center, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.x", Dec.map.rot.x, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.y", Dec.map.rot.y, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.rot.z", Dec.map.rot.z, EDJE_T_FLOAT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.on", Dec.map.on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.smooth", Dec.map.smooth, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.alpha", Dec.map.alpha, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.persp_on", Dec.map.persp_on, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "map.backcull", Dec.map.backcull, EET_T_UCHAR); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.zplane", Dec.persp.zplane, EET_T_INT); \ + EET_DATA_DESCRIPTOR_ADD_BASIC(Edd, Type, "persp.focal", Dec.persp.focal, EET_T_INT); \ + } + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_rectangle; + eddc.func.mem_alloc = mem_alloc_rectangle; + _edje_edd_edje_part_description_rectangle = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_rectangle, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_spacer; + eddc.func.mem_alloc = mem_alloc_spacer; + _edje_edd_edje_part_description_spacer = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_spacer, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_swallow; + eddc.func.mem_alloc = mem_alloc_swallow; + _edje_edd_edje_part_description_swallow = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_swallow, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Common); + eddc.func.mem_free = mem_free_group; + eddc.func.mem_alloc = mem_alloc_group; + _edje_edd_edje_part_description_group = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON(_edje_edd_edje_part_description_group, Edje_Part_Description_Common); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Image); + eddc.func.mem_free = mem_free_image; + eddc.func.mem_alloc = mem_alloc_image; + _edje_edd_edje_part_description_image = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, common); + + EDJE_DEFINE_POINTER_TYPE(Part_Image_Id, part_image_id); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.tweens", image.tweens, _edje_edd_edje_part_image_id_pointer); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.id", image.id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.set", image.set, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.l", image.border.l, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.r", image.border.r, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.t", image.border.t, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.b", image.border.b, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.no_fill", image.border.no_fill, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.scale", image.border.scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.border.scale_by", image.border.scale_by, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.smooth", image.fill.smooth, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.pos_rel_x", image.fill.pos_rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.pos_abs_x", image.fill.pos_abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.rel_x", image.fill.rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.abs_x", image.fill.abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.pos_rel_y", image.fill.pos_rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.pos_abs_y", image.fill.pos_abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.rel_y", image.fill.rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.abs_y", image.fill.abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.angle", image.fill.angle, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.spread", image.fill.spread, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_image, Edje_Part_Description_Image, "image.fill.type", image.fill.type, EET_T_CHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Proxy); + eddc.func.mem_free = mem_free_proxy; + eddc.func.mem_alloc = mem_alloc_proxy; + _edje_edd_edje_part_description_proxy = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, common); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.id", proxy.id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.smooth", proxy.fill.smooth, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.pos_rel_x", proxy.fill.pos_rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.pos_abs_x", proxy.fill.pos_abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.rel_x", proxy.fill.rel_x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.abs_x", proxy.fill.abs_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.pos_rel_y", proxy.fill.pos_rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.pos_abs_y", proxy.fill.pos_abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.rel_y", proxy.fill.rel_y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.abs_y", proxy.fill.abs_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.angle", proxy.fill.angle, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.spread", proxy.fill.spread, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_proxy, Edje_Part_Description_Proxy, "proxy.fill.type", proxy.fill.type, EET_T_CHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Text); + eddc.func.mem_free = mem_free_text; + eddc.func.mem_alloc = mem_alloc_text; + _edje_edd_edje_part_description_text = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, common); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.r", text.color3.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.g", text.color3.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.b", text.color3.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.color3.a", text.color3.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.text", text.text, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.text_class", text.text_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.style", text.style, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.font", text.font, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.size_range_min", text.size_range_min, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.size_range_max", text.size_range_max, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.repch", text.repch, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.size", text.size, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.fit_x", text.fit_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.fit_y", text.fit_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.min_x", text.min_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.min_y", text.min_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.max_x", text.max_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.max_y", text.max_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.align.x", text.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.align.y", text.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.id_source", text.id_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.id_text_source", text.id_text_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_text, Edje_Part_Description_Text, "text.elipsis", text.elipsis, EET_T_DOUBLE); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Text); + eddc.func.mem_free = mem_free_textblock; + eddc.func.mem_alloc = mem_alloc_textblock; + _edje_edd_edje_part_description_textblock = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, common); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.r", text.color3.r, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.g", text.color3.g, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.b", text.color3.b, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.color3.a", text.color3.a, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.text", text.text, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.text_class", text.text_class, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.style", text.style, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.font", text.font, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.repch", text.repch, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.size", text.size, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.size_range_min", text.size_range_min, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.size_range_max", text.size_range_max, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.fit_x", text.fit_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.fit_y", text.fit_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.min_x", text.min_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.min_y", text.min_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.max_x", text.max_x, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.max_y", text.max_y, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.align.x", text.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.align.y", text.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.id_source", text.id_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.id_text_source", text.id_text_source, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_textblock, Edje_Part_Description_Text, "text.elipsis", text.elipsis, EET_T_DOUBLE); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Box); + eddc.func.mem_free = mem_free_box; + eddc.func.mem_alloc = mem_alloc_box; + _edje_edd_edje_part_description_box = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, common); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.layout", box.layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.alt_layout", box.alt_layout, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.align.x", box.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.align.y", box.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.padding.x", box.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.padding.y", box.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.min.h", box.min.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_box, Edje_Part_Description_Box, "box.min.v", box.min.v, EET_T_UCHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_Table); + eddc.func.mem_free = mem_free_table; + eddc.func.mem_alloc = mem_alloc_table; + _edje_edd_edje_part_description_table = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, common); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.homogeneous", table.homogeneous, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.align.x", table.align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.align.y", table.align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.padding.x", table.padding.x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.padding.y", table.padding.y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.min.h", table.min.h, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description_table, Edje_Part_Description_Table, "table.min.v", table.min.v, EET_T_UCHAR); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Description_External); + eddc.func.mem_free = mem_free_external; + eddc.func.mem_alloc = mem_alloc_external; + _edje_edd_edje_part_description_external = + eet_data_descriptor_file_new(&eddc); + EDJE_DATA_DESCRIPTOR_DESCRIPTION_COMMON_SUB(_edje_edd_edje_part_description_external, Edje_Part_Description_External, common); + EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_part_description_external, Edje_Part_Description_External, "external_params", external_params, _edje_edd_edje_external_param); + + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_spacer); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_rectangle); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_swallow); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Common, part_description_group); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Image, part_description_image); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Proxy, part_description_proxy); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Text, part_description_text); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Text, part_description_textblock); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Box, part_description_box); + EDJE_DEFINE_POINTER_TYPE(Part_Description_Table, part_description_table); + EDJE_DEFINE_POINTER_TYPE(Part_Description_External, part_description_external); + + eddc.version = EET_DATA_DESCRIPTOR_CLASS_VERSION; + eddc.func.type_get = _edje_description_variant_type_get; + eddc.func.type_set = _edje_description_variant_type_set; + _edje_edd_edje_part_description_variant = eet_data_descriptor_file_new(&eddc); + + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "spacer", _edje_edd_edje_part_description_spacer); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "rectangle", _edje_edd_edje_part_description_rectangle); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "swallow", _edje_edd_edje_part_description_swallow); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "group", _edje_edd_edje_part_description_group); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "image", _edje_edd_edje_part_description_image); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "proxy", _edje_edd_edje_part_description_proxy); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "text", _edje_edd_edje_part_description_text); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "textblock", _edje_edd_edje_part_description_textblock); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "box", _edje_edd_edje_part_description_box); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "table", _edje_edd_edje_part_description_table); + EET_DATA_DESCRIPTOR_ADD_MAPPING(_edje_edd_edje_part_description_variant, "external", _edje_edd_edje_part_description_external); + +#define EDJE_ADD_ARRAY_MAPPING(Variant, Type, Minus) \ + { \ + Edje_Part_Description_List tmp; \ + \ + eet_data_descriptor_element_add(Variant, Type, \ + EET_T_UNKNOW, EET_G_VAR_ARRAY, \ + 0, (char*)(&tmp.desc_count) - (char*)(&tmp), \ + NULL, \ + _edje_edd_edje_part_description_##Minus##_pointer); \ + } + + _edje_edd_edje_part_description_variant_list = eet_data_descriptor_file_new(&eddc); + + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "rectangle", rectangle); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "spacer", spacer); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "swallow", swallow); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "group", group); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "image", image); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "proxy", proxy); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "text", text); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "textblock", textblock); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "box", box); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "table", table); + EDJE_ADD_ARRAY_MAPPING(_edje_edd_edje_part_description_variant_list, "external", external); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Pack_Element); + _edje_edd_edje_pack_element = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "type", type, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "min.w", min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "min.h", min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "prefer.w", prefer.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "prefer.h", prefer.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "max.w", max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "max.h", max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "padding.l", padding.l, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "padding.r", padding.r, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "padding.t", padding.t, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "padding.b", padding.b, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "align.x", align.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "align.y", align.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "weight.x", weight.x, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "weight.y", weight.y, EDJE_T_FLOAT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "aspect.w", aspect.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "aspect.h", aspect.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "aspect.mode", aspect.mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "options", options, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "col", col, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "row", row, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "colspan", colspan, EET_T_USHORT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "rowspan", rowspan, EET_T_USHORT); + + EDJE_DEFINE_POINTER_TYPE(Pack_Element, pack_element); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part); + eddc.func.mem_free = mem_free_part; + eddc.func.mem_alloc = mem_alloc_part; + _edje_edd_edje_part = + eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "name", name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_VARIANT(_edje_edd_edje_part, Edje_Part, "default_desc", default_desc, type, _edje_edd_edje_part_description_variant); + EET_DATA_DESCRIPTOR_ADD_VARIANT(_edje_edd_edje_part, Edje_Part, "other", other, type, _edje_edd_edje_part_description_variant_list); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source", source, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source2", source2, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source3", source3, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source4", source4, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source5", source5, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "source6", source6, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "clip_to_id", clip_to_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.x", dragable.x, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.step_x", dragable.step_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.count_x", dragable.count_x, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.y", dragable.y, EET_T_CHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.step_y", dragable.step_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.count_y", dragable.count_y, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.events_id", dragable.event_id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part, Edje_Part, "items", items, _edje_edd_edje_pack_element_pointer); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "type", type, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "effect", effect, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "mouse_events", mouse_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "repeat_events", repeat_events, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "ignore_flags", ignore_flags, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "scale", scale, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "precise_is_inside", precise_is_inside, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "use_alternate_font_metrics", use_alternate_font_metrics, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "pointer_mode", pointer_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "entry_mode", entry_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "select_mode", select_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "cursor_mode", cursor_mode, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "multiline", multiline, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "access", access, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.name", api.name, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "api.description", api.description, EET_T_STRING); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Limit); + _edje_edd_edje_part_limit = eet_data_descriptor_file_new(&eddc); + + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_limit, Edje_Part_Limit, "part", part, EET_T_INT); + + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part_Collection); + _edje_edd_edje_part_collection = + eet_data_descriptor_file_new(&eddc); + + EDJE_DEFINE_POINTER_TYPE(Program, program); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs.fnmatch", programs.fnmatch, _edje_edd_edje_program_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs.strcmp", programs.strcmp, _edje_edd_edje_program_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs.strncmp", programs.strncmp, _edje_edd_edje_program_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs.strrncmp", programs.strrncmp, _edje_edd_edje_program_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "programs.nocmp", programs.nocmp, _edje_edd_edje_program_pointer); + + EDJE_DEFINE_POINTER_TYPE(Part, part); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "parts", parts, _edje_edd_edje_part_pointer); + + EDJE_DEFINE_POINTER_TYPE(Limit, limit); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "limits.vertical", limits.vertical, _edje_edd_edje_limit_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "limits.horizontal", limits.horizontal, _edje_edd_edje_limit_pointer); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "limits.parts", limits.parts, _edje_edd_edje_part_limit); + + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_part_collection, Edje_Part_Collection, "data", data, _edje_edd_edje_string); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "alias", alias); + EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "aliased", aliased); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.h", prop.min.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.w", prop.max.w, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.max.h", prop.max.h, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "part", part, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "script_only", script_only, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "lua_script_only", lua_script_only, EET_T_UCHAR); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.orientation", prop.orientation, EET_T_INT); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "broadcast_signal", broadcast_signal, EET_T_UCHAR); +} diff --git a/src/lib/edje_edit.c b/src/lib/edje_edit.c new file mode 100644 index 0000000..3991542 --- /dev/null +++ b/src/lib/edje_edit.c @@ -0,0 +1,7823 @@ +/* + * TODO + * ----------------------------------------------------------------- + * Add LUA Support :) + * Remove images/fonts + * Clean the saving routines + * + */ + +#include "edje_private.h" + +#define EDJE_EDIT_IS_UNSTABLE_AND_I_KNOW_ABOUT_IT +#include "Edje_Edit.h" + +static const char EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED_STR[] = "Current group cannot be deleted"; +static const char EDJE_EDIT_ERROR_GROUP_REFERENCED_STR[] = "Group still in use"; +static const char EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST_STR[] = "Group does not exist"; + +EAPI Eina_Error EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED = 0 ; +EAPI Eina_Error EDJE_EDIT_ERROR_GROUP_REFERENCED = 0; +EAPI Eina_Error EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST = 0; + +/* Get eed(Edje_Edit*) from obj(Evas_Object*) */ +#define GET_EED_OR_RETURN(RET) \ + Edje_Edit *eed; \ + if (!evas_object_smart_type_check_ptr(obj, _edje_edit_type)) \ + return RET; \ + eed = evas_object_smart_data_get(obj); \ + if (!eed) return RET; + +/* Get ed(Edje*) from obj(Evas_Object*) */ +#define GET_ED_OR_RETURN(RET) \ + Edje *ed; \ + GET_EED_OR_RETURN(RET); \ + ed = (Edje *)eed; + +/* Get rp(Edje_Real_Part*) from obj(Evas_Object*) and part(char*) */ +#define GET_RP_OR_RETURN(RET) \ + Edje *ed; \ + Edje_Edit *eed; \ + Edje_Real_Part *rp; \ + if (!evas_object_smart_type_check_ptr(obj, _edje_edit_type)) \ + return RET; \ + eed = evas_object_smart_data_get(obj); \ + if (!eed) return RET; \ + ed = (Edje *)eed; \ + rp = _edje_real_part_get(ed, part); \ + if (!rp) return RET; + +/* Get pd(Edje_Part_Description*) from obj(Evas_Object*), part(char*) and state (char*) */ +#define GET_PD_OR_RETURN(RET) \ + Edje *ed; \ + Edje_Edit *eed; \ + Edje_Real_Part *rp; \ + Edje_Part_Description_Common *pd; \ + if (!evas_object_smart_type_check_ptr(obj, _edje_edit_type)) \ + return RET; \ + eed = evas_object_smart_data_get(obj); \ + if (!eed) return RET; \ + ed = (Edje *)eed; \ + rp = _edje_real_part_get(ed, part); \ + if (!rp) return RET; \ + pd = _edje_part_description_find_byname(eed, part, state, value); \ + if (!pd) return RET; + +/* Get epr(Edje_Program*) from obj(Evas_Object*) and prog(char*)*/ +#define GET_EPR_OR_RETURN(RET) \ + Edje_Program *epr; \ + if (!evas_object_smart_type_check_ptr(obj, _edje_edit_type)) \ + return RET; \ + epr = _edje_program_get_byname(obj, prog); \ + if (!epr) return RET; + +static void * +_alloc(size_t size) +{ + void *mem; + + mem = calloc(1, size); + if (mem) return mem; + ERR("Edje_Edit: Error. memory allocation of %i bytes failed. %s", + (int)size, strerror(errno)); + return NULL; +} + +/*************/ +/* INTERNALS */ +/*************/ + +/* Edje_Edit smart! Overloads the edje one adding some more control stuff */ +static const char _edje_edit_type[] = "edje_edit"; + +typedef struct _Edje_Edit Edje_Edit; +struct _Edje_Edit +{ + Edje base; + + void *bytecode; + int bytecode_size; + + char *embryo_source; + char *embryo_processed; + Eina_Hash *program_scripts; + + Eina_List *errors; + + Eina_Bool bytecode_dirty:1; + Eina_Bool embryo_source_dirty:1; + Eina_Bool all_dirty:1; + Eina_Bool script_need_recompile:1; +}; + +typedef struct _Program_Script Program_Script; +struct _Program_Script +{ + int id; + char *code; + char *processed; + Eina_Bool dirty:1; + Eina_Bool delete_me:1; +}; + +static void _edje_edit_smart_add(Evas_Object *obj); +static void _edje_edit_smart_del(Evas_Object *obj); + +static Eina_Bool _edje_edit_smart_file_set(Evas_Object *obj, const char *file, const char *group); +static Eina_Bool _edje_edit_edje_file_save(Eet_File *eetf, Edje_File *ef); + +EVAS_SMART_SUBCLASS_NEW(_edje_edit_type, _edje_edit, Edje_Smart_Api, + Edje_Smart_Api, _edje_object_smart_class_get, NULL) + +static void +_edje_edit_smart_set_user(Edje_Smart_Api *sc) +{ + sc->base.add = _edje_edit_smart_add; + sc->base.del = _edje_edit_smart_del; + sc->file_set = _edje_edit_smart_file_set; +} + +static void +_edje_edit_smart_add(Evas_Object *obj) +{ + Edje_Edit *eed; + + eed = evas_object_smart_data_get(obj); + if (!eed) + { + const Evas_Smart *smart; + const Evas_Smart_Class *sc; + + eed = calloc(1, sizeof(Edje_Edit)); + if (!eed) return; + + smart = evas_object_smart_smart_get(obj); + sc = evas_smart_class_get(smart); + eed->base.api = (const Edje_Smart_Api *)sc; + + evas_object_smart_data_set(obj, eed); + } + + _edje_edit_parent_sc->base.add(obj); +} + +static void +_edje_edit_data_clean(Edje_Edit *eed) +{ + Edje_Edit_Script_Error *se; + + free(eed->bytecode); + free(eed->embryo_source); + free(eed->embryo_processed); + + if (eed->program_scripts) + eina_hash_free(eed->program_scripts); + + EINA_LIST_FREE(eed->errors, se) + { + eina_stringshare_del(se->program_name); + eina_stringshare_del(se->error_str); + free(se); + } + + eed->bytecode = NULL; + eed->embryo_source = NULL; + eed->embryo_processed = NULL; + eed->program_scripts = NULL; + eed->bytecode_size = 0; + eed->bytecode_dirty = EINA_FALSE; + eed->embryo_source_dirty = EINA_FALSE; + eed->all_dirty = EINA_FALSE; + eed->script_need_recompile = EINA_FALSE; +} + +static void +_edje_edit_smart_del(Evas_Object *obj) +{ + Edje_Edit *eed; + + eed = evas_object_smart_data_get(obj); + + _edje_edit_data_clean(eed); + + _edje_edit_parent_sc->base.del(obj); +} + +static void +_edje_edit_program_script_free(Program_Script *ps) +{ + free(ps->code); + free(ps->processed); + free(ps); +} + +static Eina_Bool +_edje_edit_smart_file_set(Evas_Object *obj, const char *file, const char *group) +{ + Edje_Edit *eed; + Eet_File *ef; + char **keys, buf[64]; + int count, i; + int len = strlen("edje/scripts/embryo/source/"); + + eed = evas_object_smart_data_get(obj); + + _edje_edit_data_clean(eed); + + /* TODO and maybes: + * * The whole point of this thing is keep track of stuff such as + * strings to free and who knows what, so we need to take care + * of those if the file/group changes. + * * Maybe have the possibility to open just files, not always with + * a group given. + * * A way to skip the cache? Could help avoid some issues when editing + * a group being used by the application in some other way, or multiple + * opens of the same file. + * * Here we probably want to allow opening groups with broken references + * (GROUP parts or BOX/TABLE items pointing to non-existent/renamed + * groups). + */ + if (!_edje_edit_parent_sc->file_set(obj, file, group)) + return EINA_FALSE; + + eed->program_scripts = eina_hash_int32_new((Eina_Free_Cb)_edje_edit_program_script_free); + + ef = eet_open(file, EET_FILE_MODE_READ); + + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i", + eed->base.collection->id); + eed->embryo_source = eet_read(ef, buf, &count); + + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i/*", + eed->base.collection->id); + keys = eet_list(ef, buf, &count); + for (i = 0; i < count; i++) + { + Program_Script *ps; + int size; + + ps = calloc(1, sizeof(Program_Script)); + + sscanf(keys[i] + len, "%*i/%i", &ps->id); + ps->code = eet_read(ef, keys[i], &size); + eina_hash_add(eed->program_scripts, &ps->id, ps); + } + if (keys) free(keys); + return EINA_TRUE; +} + +static void +_edje_edit_error_register(void) +{ + EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST = + eina_error_msg_static_register(EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST_STR); + EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED = + eina_error_msg_static_register(EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED_STR); + EDJE_EDIT_ERROR_GROUP_REFERENCED = + eina_error_msg_static_register(EDJE_EDIT_ERROR_GROUP_REFERENCED_STR); +} + +EAPI Evas_Object * +edje_edit_object_add(Evas *e) +{ + eina_error_set(0); + + if (!EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST) + _edje_edit_error_register(); + + return evas_object_smart_add(e, _edje_edit_smart_class_new()); +} +/* End of Edje_Edit smart stuff */ + +static Edje_Part_Description_Common * +_edje_part_description_find_byname(Edje_Edit *eed, const char *part, const char *state, double value) +{ + Edje_Real_Part *rp; + Edje_Part_Description_Common *pd; + + if (!eed || !part || !state) return NULL; + + rp = _edje_real_part_get((Edje *)eed, part); + if (!rp) return NULL; + + pd = _edje_part_description_find((Edje *)eed, rp, state, value); + + return pd; +} + +static int +_edje_image_id_find(Edje_Edit *eed, const char *image_name) +{ + unsigned int i; + + if (!eed->base.file) return -1; + if (!eed->base.file->image_dir) return -1; + + //printf("SEARCH IMAGE %s\n", image_name); + + for (i = 0; i < eed->base.file->image_dir->entries_count; ++i) + if (eed->base.file->image_dir->entries[i].entry + && !strcmp(image_name, eed->base.file->image_dir->entries[i].entry)) + return i; + + return -1; +} + +static const char * +_edje_image_name_find(Edje_Edit *eed, int image_id) +{ + if (!eed->base.file) return NULL; + if (!eed->base.file->image_dir) return NULL; + + /* Special case for external image */ + if (image_id < 0) image_id = -image_id - 1; + + //printf("SEARCH IMAGE ID %d\n", image_id); + if ((unsigned int) image_id >= eed->base.file->image_dir->entries_count) + return NULL; + return eed->base.file->image_dir->entries[image_id].entry; +} + +static void +_edje_real_part_free(Edje_Real_Part *rp) +{ + if (!rp) return; + + if (rp->object) + { + _edje_callbacks_del(rp->object, rp->edje); + evas_object_del(rp->object); + } + + if (rp->swallowed_object) + { + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del(rp->swallowed_object, + EVAS_CALLBACK_FREE, + _edje_object_part_swallow_free_cb); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object, rp->edje); + + if (rp->part->type == EDJE_PART_TYPE_GROUP || + rp->part->type == EDJE_PART_TYPE_EXTERNAL) + evas_object_del(rp->swallowed_object); + + rp->swallowed_object = NULL; + } + + if (rp->text.text) eina_stringshare_del(rp->text.text); + if (rp->text.font) eina_stringshare_del(rp->text.font); + if (rp->text.cache.in_str) eina_stringshare_del(rp->text.cache.in_str); + if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str); + + if (rp->custom) + { + _edje_collection_free_part_description_clean(rp->part->type, rp->custom->description, 0); + if (rp->custom) free(rp->custom->set); + eina_mempool_free(_edje_real_part_state_mp, rp->custom); + rp->custom = NULL; + } + + free(rp->drag); + + if (rp->param2) free(rp->param2->set); + eina_mempool_free(_edje_real_part_state_mp, rp->param2); + + _edje_unref(rp->edje); + eina_mempool_free(_edje_real_part_mp, rp); +} + +static Eina_Bool +_edje_import_font_file(Edje *ed, const char *path, const char *entry) +{ + Eina_File *f; + Eet_File *eetf = NULL; + void *fdata = NULL; + long fsize = 0; + + /* Read font data from file */ + f = eina_file_open(path, 0); + if (!f) + { + ERR("Unable to open font file \"%s\"", path); + return EINA_FALSE; + } + + fsize = eina_file_size_get(f); + fdata = eina_file_map_all(f, EINA_FILE_SEQUENTIAL); + if (!fdata) + { + ERR("Unable to map font file \"%s\"", path); + goto on_error; + } + + /* Write font to edje file */ + eetf = eet_open(ed->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Unable to open \"%s\" for writing output", ed->path); + goto on_error; + } + + if (eet_write(eetf, entry, fdata, fsize, 1) <= 0) + { + ERR("Unable to write font part \"%s\" as \"%s\" part entry", + path, entry); + goto on_error; + } + + /* write the edje_file */ + if (!_edje_edit_edje_file_save(eetf, ed->file)) + goto on_error; + + eet_close(eetf); + + eina_file_map_free(f, fdata); + eina_file_close(f); + + return EINA_TRUE; + + on_error: + if (eetf) eet_close(eetf); + eina_file_map_free(f, fdata); + eina_file_close(f); + + return EINA_FALSE; +} + + +static Eina_Bool +_edje_import_image_file(Edje *ed, const char *path, int id) +{ + char entry[PATH_MAX]; + Evas_Object *im; + Eet_File *eetf; + void *im_data; + int im_w, im_h; + int im_alpha; + int bytes; + + /* Try to load the file */ + im = evas_object_image_add(ed->base.evas); + if (!im) return EINA_FALSE; + + evas_object_image_file_set(im, path, NULL); + if (evas_object_image_load_error_get(im) != EVAS_LOAD_ERROR_NONE) + { + ERR("Edje_Edit: unable to load image \"%s\"." + "Missing PNG or JPEG loader modules for Evas or " + "file does not exist, or is not readable.", path); + evas_object_del(im); + im = NULL; + return EINA_FALSE; + } + + /* Write the loaded image to the edje file */ + + evas_object_image_size_get(im, &im_w, &im_h); + im_alpha = evas_object_image_alpha_get(im); + im_data = evas_object_image_data_get(im, 0); + if ((!im_data) || !(im_w > 0) || !(im_h > 0)) + { + evas_object_del(im); + return EINA_FALSE; + } + + /* open the eet file */ + eetf = eet_open(ed->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Unable to open \"%s\" for writing output", ed->path); + evas_object_del(im); + return EINA_FALSE; + } + + snprintf(entry, sizeof(entry), "edje/images/%i", id); + + /* write the image data */ + bytes = eet_data_image_write(eetf, entry, + im_data, im_w, im_h, + im_alpha, + 0, 100, 1); + if (bytes <= 0) + { + ERR("Unable to write image part \"%s\" part entry to %s", + entry, ed->path); + eet_close(eetf); + evas_object_del(im); + return EINA_FALSE; + } + + evas_object_del(im); + + /* write the edje_file */ + if (!_edje_edit_edje_file_save(eetf, ed->file)) + { + eet_delete(eetf, entry); + eet_close(eetf); + return EINA_FALSE; + } + + eet_close(eetf); + return EINA_TRUE; +} + +static int +_edje_part_id_find(Edje *ed, const char *part) +{ + unsigned int id; + + for (id = 0; id < ed->table_parts_size; id++) + { + Edje_Real_Part *rp = ed->table_parts[id]; + + if (!strcmp(rp->part->name, part)) + return id; + } + return -1; +} + +static void +_edje_part_description_id_set(int type, Edje_Part_Description_Common *c, int old_id, int new_id) +{ + if (c->rel1.id_x == old_id) c->rel1.id_x = new_id; + if (c->rel1.id_y == old_id) c->rel1.id_y = new_id; + if (c->rel2.id_x == old_id) c->rel2.id_x = new_id; + if (c->rel2.id_y == old_id) c->rel2.id_y = new_id; + + if (type == EDJE_PART_TYPE_TEXT + || type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *t; + + t = (Edje_Part_Description_Text *) c; + + if (t->text.id_source == old_id) t->text.id_source = new_id; + if (t->text.id_text_source == old_id) t->text.id_text_source = new_id; + } +} + +static void +_edje_part_program_id_set(Edje_Program *epr, int old_id, int new_id) +{ + Edje_Program_Target *pt; + Eina_List *ll, *l_next; + + if (epr->action != EDJE_ACTION_TYPE_STATE_SET) + return; + + EINA_LIST_FOREACH_SAFE(epr->targets, ll, l_next, pt) + { + if (pt->id == old_id) + { + if (new_id == -1) + epr->targets = eina_list_remove_list(epr->targets, ll); + else + pt->id = new_id; + } + } +} + +static void +_edje_part_id_set(Edje *ed, Edje_Real_Part *rp, int new_id) +{ + /* This function change the id of a given real_part. + * All the depedency will be updated too. + * Also the table_parts is updated, and the current *rp in the table + * is lost. + * If new Id = -1 then all the depencies will be deleted + */ + Edje_Part *part; + unsigned int j; + int old_id; + + part = rp->part; + + if (!part) return; + //printf("CHANGE ID OF PART %s TO %d\n", part->name, new_id); + + if (!ed || new_id < -1) return; + + if (part->id == new_id) return; + + old_id = part->id; + part->id = new_id; + + /* Fix all the dependecies in all parts... */ + for (j = 0; j < ed->collection->parts_count; ++j) + { + Edje_Part *p; + unsigned int k; + + p = ed->collection->parts[j]; + + //printf(" search id: %d in %s\n", old_id, p->name); + if (p->clip_to_id == old_id) p->clip_to_id = new_id; + if (p->dragable.confine_id == old_id) p->dragable.confine_id = new_id; + + /* ...in default description */ + _edje_part_description_id_set(p->type, p->default_desc, old_id, new_id); + + /* ...and in all other descriptions */ + for (k = 0; k < p->other.desc_count; ++k) + _edje_part_description_id_set(p->type, p->other.desc[k], old_id, new_id); + } + + /*...and also in programs targets */ +#define EDJE_EDIT_PROGRAM_ID_SET(Array, Ed, It, Old, New) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + _edje_part_program_id_set(Ed->collection->programs.Array[It], Old, New); + + EDJE_EDIT_PROGRAM_ID_SET(fnmatch, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strcmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strncmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(strrncmp, ed, j, old_id, new_id); + EDJE_EDIT_PROGRAM_ID_SET(nocmp, ed, j, old_id, new_id); + + /* Adjust table_parts */ + if (new_id >= 0) + ed->table_parts[new_id] = rp; +} + +static void +_edje_part_description_id_switch(int type, Edje_Part_Description_Common *c, int id1, int id2) +{ + if (c->rel1.id_x == id1) c->rel1.id_x = id2; + else if (c->rel1.id_x == id2) c->rel1.id_x = id1; + if (c->rel1.id_y == id1) c->rel1.id_y = id2; + else if (c->rel1.id_y == id2) c->rel1.id_y = id1; + if (c->rel2.id_x == id1) c->rel2.id_x = id2; + else if (c->rel2.id_x == id2) c->rel2.id_x = id1; + if (c->rel2.id_y == id1) c->rel2.id_y = id2; + else if (c->rel2.id_y == id2) c->rel2.id_y = id1; + + if (type == EDJE_PART_TYPE_TEXT + || type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *t; + + t = (Edje_Part_Description_Text *) c; + + if (t->text.id_source == id1) t->text.id_source = id2; + else if (t->text.id_source == id2) t->text.id_source = id1; + if (t->text.id_text_source == id1) t->text.id_text_source = id2; + else if (t->text.id_text_source == id2) t->text.id_text_source = id2; + } +} + +static void +_edje_part_program_id_switch(Edje_Program *epr, int id1, int id2) +{ + Edje_Program_Target *pt; + Eina_List *ll; + + if (epr->action != EDJE_ACTION_TYPE_STATE_SET) + return; + + EINA_LIST_FOREACH(epr->targets, ll, pt) + { + if (pt->id == id1) pt->id = id2; + else if (pt->id == id2) pt->id = id1; + } +} + +static void +_edje_parts_id_switch(Edje *ed, Edje_Real_Part *rp1, Edje_Real_Part *rp2) +{ + /* This function switch the id of two parts. + * All the depedency will be updated too. + * Also the table_parts is updated, + * The parts list isn't touched + */ + int id1; + int id2; + unsigned int i; + + //printf("SWITCH ID OF PART %d AND %d\n", rp1->part->id, rp2->part->id); + + if (!ed || !rp1 || !rp2) return; + if (rp1 == rp2) return; + + id1 = rp1->part->id; + id2 = rp2->part->id; + + /* Switch ids */ + rp1->part->id = id2; + rp2->part->id = id1; + + /* adjust table_parts */ + ed->table_parts[id1] = rp2; + ed->table_parts[id2] = rp1; + + // Fix all the dependecies in all parts... + for (i = 0; i < ed->collection->parts_count; ++i) + { + unsigned int j; + Edje_Part *p; + + p = ed->collection->parts[i]; + + //printf(" search id: %d in %s\n", old_id, p->name); + if (p->clip_to_id == id1) p->clip_to_id = id2; + else if (p->clip_to_id == id2) p->clip_to_id = id1; + if (p->dragable.confine_id == id1) p->dragable.confine_id = id2; + else if (p->dragable.confine_id == id2) p->dragable.confine_id = id1; + + // ...in default description + _edje_part_description_id_switch(p->type, p->default_desc, id1, id2); + + // ...and in all other descriptions + for (j = 0; j < p->other.desc_count; ++j) + _edje_part_description_id_switch(p->type, p->other.desc[j], id1, id2); + } + + //...and also in programs targets +#define EDJE_EDIT_PROGRAM_SWITCH(Array, Ed, It, Id1, Id2) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + _edje_part_program_id_switch(Ed->collection->programs.Array[i], Id1, Id2); + + EDJE_EDIT_PROGRAM_SWITCH(fnmatch, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strcmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strncmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(strrncmp, ed, i, id1, id2); + EDJE_EDIT_PROGRAM_SWITCH(nocmp, ed, i, id1, id2); + //TODO Real part dependencies are ok? +} + +static void +_edje_fix_parts_id(Edje *ed) +{ + /* We use this to clear the id hole leaved when a part is removed. + * After the execution of this function all parts will have a right + * (uniqe & ordered) id. The table_parts is also updated. + */ + unsigned int i; + int correct_id; + unsigned int count; + + //printf("FIXING PARTS ID \n"); + + //TODO order the list first to be more robust + + /* Give a correct id to all the parts */ + correct_id = 0; + for (i = 0; i < ed->collection->parts_count; ++i) + { + Edje_Part *p; + + p = ed->collection->parts[i]; + + //printf(" [%d]Checking part: %s id: %d\n", correct_id, p->name, p->id); + if (p->id != correct_id) + if (ed->table_parts[p->id]) + _edje_part_id_set(ed, ed->table_parts[p->id], correct_id); + + correct_id++; + } + + /* If we have removed some parts realloc table_parts */ + count = ed->collection->parts_count; + if (count != ed->table_parts_size) + { + ed->table_parts = realloc(ed->table_parts, sizeof(Edje_Real_Part *) * count); + ed->table_parts_size = count; + } + + //printf("\n"); +} + +static void +_edje_if_string_free(Edje *ed, const char *str) +{ + Eet_Dictionary *dict; + + if (!ed || !str) return; + + dict = eet_dictionary_get(ed->file->ef); + if (eet_dictionary_string_check(dict, str)) return; + eina_stringshare_del(str); + str = NULL; +} + +static Edje_Style * +_edje_edit_style_get(Edje *ed, const char *name) +{ + Eina_List *l; + Edje_Style *s; + + if (!ed || !ed->file || !ed->file->styles || !name) + return NULL; + + EINA_LIST_FOREACH(ed->file->styles, l, s) + if (s->name && !strcmp(s->name, name)) + return s; + + return NULL; +} + +static Edje_Style_Tag * +_edje_edit_style_tag_get(Edje *ed, const char *style, const char *name) +{ + Eina_List *l; + Edje_Style *s; + Edje_Style_Tag *t; + + if (!ed || !ed->file || !ed->file->styles || !name) + return NULL; + + s = _edje_edit_style_get(ed, style); + + EINA_LIST_FOREACH(s->tags, l, t) + if (t->key && !strcmp(t->key, name)) + return t; + + return NULL; +} + +static Edje_External_Directory_Entry * +_edje_edit_external_get(Edje *ed, const char *name) +{ + unsigned int i; + + if (!ed || !ed->file || !ed->file->external_dir || !name) + return NULL; + + for (i = 0; i < ed->file->external_dir->entries_count; ++i) + if (ed->file->external_dir->entries[i].entry + && !strcmp(ed->file->external_dir->entries[i].entry, name)) + return ed->file->external_dir->entries + i; + + return NULL; +} + +static void +_edje_edit_group_references_update(Evas_Object *obj, const char *old_group_name, const char *new_group_name) +{ + Eina_Iterator *i; + Eina_List *pll, *pl; +// Edje_Part_Collection *pc; + Edje_Part_Collection_Directory_Entry *pce; + char *part_name; + const char *source, *old; + Edje_Part_Type type; + Evas_Object *part_obj; + + GET_ED_OR_RETURN(); + +// pc = ed->collection; + + part_obj = edje_edit_object_add(ed->base.evas); + + old = eina_stringshare_add(old_group_name); + + i = eina_hash_iterator_data_new(ed->file->collection); + + EINA_ITERATOR_FOREACH(i, pce) + { + edje_object_file_set(part_obj, ed->file->path, pce->entry); + + pl = edje_edit_parts_list_get(part_obj); + + EINA_LIST_FOREACH(pl, pll, part_name) + { + source = edje_edit_part_source_get(part_obj, part_name); + type = edje_edit_part_type_get(part_obj, part_name); + + if (type == EDJE_PART_TYPE_GROUP && source == old) + edje_edit_part_source_set(part_obj, part_name, new_group_name); + + if (source) + eina_stringshare_del(source); + } + } + + eina_iterator_free(i); + + eina_stringshare_del(old); + + evas_object_del(part_obj); +} + +static void +_edje_edit_flag_script_dirty(Edje_Edit *eed, Eina_Bool all) +{ + eed->script_need_recompile = EINA_TRUE; + if (all) + eed->all_dirty = EINA_TRUE; +} + +/*****************/ +/* GENERAL API */ +/*****************/ + +EAPI void +edje_edit_string_list_free(Eina_List *lst) +{ + eina_error_set(0); + //printf("FREE LIST: \n"); + while (lst) + { + if (eina_list_data_get(lst)) eina_stringshare_del(eina_list_data_get(lst)); + //printf("FREE: %s\n", eina_list_data_get(lst)); + lst = eina_list_remove(lst, eina_list_data_get(lst)); + } +} + +EAPI void +edje_edit_string_free(const char *str) +{ + eina_error_set(0); + + if (str) eina_stringshare_del(str); +} + +EAPI const char* +edje_edit_compiler_get(Evas_Object *obj) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(0); + return eina_stringshare_add(ed->file->compiler); +} + +/****************/ +/* GROUPS API */ +/****************/ + +EAPI Eina_Bool +edje_edit_group_add(Evas_Object *obj, const char *name) +{ + Edje_Part_Collection_Directory_Entry *de; + Edje_Part_Collection_Directory_Entry *d; + Edje_Part_Collection *pc; + int id; + int search; + //Code *cd; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + //printf("ADD GROUP: %s \n", name); + + /* check if a group with the same name already exists */ + if (eina_hash_find(ed->file->collection, name)) + return EINA_FALSE; + + /* Create structs */ + de = _alloc(sizeof(Edje_Part_Collection_Directory_Entry)); + if (!de) return EINA_FALSE; + + pc = _alloc(sizeof(Edje_Part_Collection)); + if (!pc) + { + free(de); + return EINA_FALSE; + } + + /* Search first free id */ + id = -1; + search = 0; + while (id == -1) + { + Eina_Iterator *i; + Eina_Bool found = 0; + + i = eina_hash_iterator_data_new(ed->file->collection); + + EINA_ITERATOR_FOREACH(i, d) + { + // printf("search if %d is free [id %d]\n", search, d->id); + if (search == d->id) + { + found = 1; + break; + } + } + + eina_iterator_free(i); + + if (!found) id = search; + else search++; + } + + /* Init Edje_Part_Collection_Directory_Entry */ + //printf(" new id: %d\n", id); + de->id = id; + de->entry = eina_stringshare_add(name); + eina_hash_direct_add(ed->file->collection, de->entry, de); + + /* Init Edje_Part_Collection */ + pc->id = id; + pc->references = 0; + memset(&pc->programs, 0, sizeof (pc->programs)); + pc->parts = NULL; + pc->data = NULL; + pc->script = NULL; + pc->part = eina_stringshare_add(name); + + //cd = _alloc(sizeof(Code)); + //codes = eina_list_append(codes, cd); +#define EDIT_EMN(Tp, Sz, Ce) \ + Ce->mp.Tp = eina_mempool_add("chained_mempool", #Tp, NULL, sizeof (Sz), 8); + + EDIT_EMN(RECTANGLE, Edje_Part_Description_Common, de); + EDIT_EMN(TEXT, Edje_Part_Description_Text, de); + EDIT_EMN(IMAGE, Edje_Part_Description_Image, de); + EDIT_EMN(SWALLOW, Edje_Part_Description_Common, de); + EDIT_EMN(TEXTBLOCK, Edje_Part_Description_Text, de); + EDIT_EMN(GROUP, Edje_Part_Description_Common, de); + EDIT_EMN(BOX, Edje_Part_Description_Box, de); + EDIT_EMN(TABLE, Edje_Part_Description_Table, de); + EDIT_EMN(EXTERNAL, Edje_Part_Description_External, de); + EDIT_EMN(SPACER, Edje_Part_Description_Common, de); + EDIT_EMN(part, Edje_Part, de); + + ed->file->collection_cache = eina_list_prepend(ed->file->collection_cache, pc); + _edje_cache_coll_clean(ed->file); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_group_del(Evas_Object *obj, const char *group_name) +{ + Edje_Part_Collection_Directory_Entry *e; + Edje_Part_Collection *die = NULL; + Edje_Part_Collection *g; + Eina_List *l; + Eet_File *eetf; + char buf[64], **keys; + int count; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + /* if (eina_hash_find(ed->file->collection_hash, group_name)) */ + /* return EINA_FALSE; */ + + if (strcmp(ed->group, group_name) == 0) + { + eina_error_set(EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED); + return EINA_FALSE; + } + + e = eina_hash_find(ed->file->collection, group_name); + if (!e) + { + eina_error_set(EDJE_EDIT_ERROR_GROUP_DOES_NOT_EXIST); + return EINA_FALSE; + } + + if (e->id == ed->collection->id) + { + eina_error_set(EDJE_EDIT_ERROR_GROUP_CURRENTLY_USED); + return EINA_FALSE; + } + + if (e->ref) + { + eina_error_set(EDJE_EDIT_ERROR_GROUP_REFERENCED); + return EINA_FALSE; + } + + _edje_edit_group_references_update(obj, group_name, NULL); + + EINA_LIST_FOREACH(ed->file->collection_cache, l, g) + if (g->id == e->id) + { + ed->file->collection_cache = + eina_list_remove_list(ed->file->collection_cache, l); + die = g; + break; + } + + /* Remove collection/id from eet file */ + eetf = eet_open(ed->file->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Edje_Edit: Error. unable to open \"%s\" " + "for writing output", ed->file->path); + return EINA_FALSE; + } + snprintf(buf, sizeof(buf), "edje/collections/%d", e->id); + eet_delete(eetf, buf); + snprintf(buf, sizeof(buf), "edje/scripts/embryo/compiled/%d", e->id); + eet_delete(eetf, buf); + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%d", e->id); + eet_delete(eetf, buf); + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%d/*", e->id); + keys = eet_list(eetf, buf, &count); + if (keys) + { + do + { + count--; + eet_delete(eetf, keys[count]); + } + while(count); + free(keys); + } + eet_close(eetf); + + /* Free Group */ + if (die) _edje_collection_free(ed->file, die, e); + eina_hash_del(ed->file->collection, group_name, e); + + /* we need to save everything to make sure the file won't have broken + * references the next time is loaded */ + edje_edit_save_all(obj); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_group_exist(Evas_Object *obj, const char *group) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (eina_hash_find(ed->file->collection, group)) + return EINA_TRUE; + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_group_name_set(Evas_Object *obj, const char *new_name) +{ + Edje_Part_Collection_Directory_Entry *pce; + Edje_Part_Collection *pc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!new_name) return EINA_FALSE; + + pc = ed->collection; + + if (!strcmp(pc->part, new_name)) return EINA_TRUE; + + if (edje_edit_group_exist(obj, new_name)) return EINA_FALSE; + + _edje_edit_group_references_update(obj, pc->part, new_name); + + //printf("Set name of current group: %s [id: %d][new name: %s]\n", + // pc->part, pc->id, new_name); + + //if (pc->part && ed->file->free_strings) eina_stringshare_del(pc->part); TODO FIXME + pce = eina_hash_find(ed->file->collection, pc->part); + + eina_hash_move(ed->file->collection, pce->entry, new_name); + + pce->entry = eina_stringshare_add(new_name); + pc->part = pce->entry; + eina_stringshare_replace(&ed->group, new_name); + + return EINA_TRUE; +} + +#define FUNC_GROUP_ACCESSOR(Class, Value) \ + EAPI int \ + edje_edit_group_##Class##_##Value##_get(Evas_Object *obj) \ + { \ + eina_error_set(0); \ + GET_ED_OR_RETURN(-1); \ + if (!ed->collection) return -1; \ + return ed->collection->prop.Class.Value; \ + } \ + EAPI void \ + edje_edit_group_##Class##_##Value##_set(Evas_Object *obj, int v) \ + { \ + eina_error_set(0); \ + GET_ED_OR_RETURN(); \ + ed->collection->prop.Class.Value = v; \ + } + +FUNC_GROUP_ACCESSOR(min, w); +FUNC_GROUP_ACCESSOR(min, h); +FUNC_GROUP_ACCESSOR(max, w); +FUNC_GROUP_ACCESSOR(max, h); + +/***************/ +/* DATA API */ +/***************/ + +EAPI Eina_List * +edje_edit_group_data_list_get(Evas_Object * obj) +{ + Eina_Iterator *it; + Eina_List *datas = NULL; + const char *key; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->collection || !ed->collection->data) + return NULL; + + it = eina_hash_iterator_key_new(ed->collection->data); + if (!it) return NULL; + + EINA_ITERATOR_FOREACH(it, key) + datas = eina_list_append(datas, eina_stringshare_add(key)); + + eina_iterator_free(it); + + return datas; +} + +EAPI Eina_List * +edje_edit_data_list_get(Evas_Object * obj) +{ + Eina_Iterator *i; + Eina_List *datas = NULL; + const char *key; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->data) + return NULL; + + i = eina_hash_iterator_key_new(ed->file->data); + + EINA_ITERATOR_FOREACH(i, key) + datas = eina_list_append(datas, eina_stringshare_add(key)); + + eina_iterator_free(i); + + return datas; +} + +EAPI Eina_Bool +edje_edit_group_data_add(Evas_Object *obj, const char *key, const char *value) +{ + Edje_String *es; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!key || !ed->file || !ed->collection) + return EINA_FALSE; + + if (!ed->collection->data) + ed->collection->data = eina_hash_string_small_new(NULL); + + if (eina_hash_find(ed->collection->data, key)) + return EINA_FALSE; + + es = calloc(1, sizeof(Edje_String)); + if (!es) + return EINA_FALSE; + es->str = eina_stringshare_add(value); + + if (!eina_hash_add(ed->collection->data, key, es)) + { + eina_stringshare_del(es->str); + free(es); + return EINA_FALSE; + } + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_data_add(Evas_Object *obj, const char *itemname, const char *value) +{ + Edje_String *es; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!itemname || !ed->file) + return EINA_FALSE; + + if (eina_hash_find(ed->file->data, itemname)) + return EINA_FALSE; + + es = calloc(1, sizeof(Edje_String)); + if (!es) + return EINA_FALSE; + es->str = eina_stringshare_add(value); + + if (!eina_hash_add(ed->file->data, itemname, es)) + { + eina_stringshare_del(es->str); + free(es); + return EINA_FALSE; + } + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_group_data_del(Evas_Object *obj, const char *key) +{ + Edje_String *value; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!key || !ed->file || !ed->collection) + return EINA_FALSE; + + value = eina_hash_find(ed->collection->data, key); + if (!value) return EINA_FALSE; + + eina_hash_del(ed->collection->data, key, value); + _edje_if_string_free(ed, value->str); + free(value); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_data_del(Evas_Object *obj, const char *itemname) +{ + Edje_String *value; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!itemname || !ed->file || !ed->file->data) + return 0; + + value = eina_hash_find(ed->file->data, itemname); + if (!value) + return EINA_FALSE; + + eina_hash_del(ed->file->data, itemname, value); + _edje_if_string_free(ed, value->str); + free(value); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_group_data_value_get(Evas_Object * obj, const char *key) +{ + Edje_String *value; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!key || !ed->file || !ed->collection) + return NULL; + + value = eina_hash_find(ed->collection->data, key); + if (!value) + return NULL; + + return eina_stringshare_add(edje_string_get(value)); +} + +EAPI const char * +edje_edit_data_value_get(Evas_Object * obj, const char *itemname) +{ + Edje_String *value; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!itemname || !ed->file || !ed->file->data) + return NULL; + + value = eina_hash_find(ed->file->data, itemname); + if (!value) + return NULL; + + return eina_stringshare_add(edje_string_get(value)); +} + +EAPI Eina_Bool +edje_edit_group_data_value_set(Evas_Object *obj, const char *key, const char *value) +{ + Edje_String *es; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!key || !value || !ed->file || !ed->collection) + return EINA_FALSE; + + es = eina_hash_find(ed->collection->data, key); + if (es) + { + _edje_if_string_free(ed, es->str); + es->str = eina_stringshare_add(value); + es->id = 0; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_data_value_set(Evas_Object *obj, const char *itemname, const char *value) +{ + Edje_String *es; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!itemname || !value || !ed->file || !ed->file->data) + return EINA_FALSE; + + es = eina_hash_find(ed->file->data, itemname); + if (es) + { + _edje_if_string_free(ed, es->str); + es->str = eina_stringshare_add(value); + es->id = 0; + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_group_data_name_set(Evas_Object *obj, const char *key, const char *new_key) +{ + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!key || !new_key || !ed->file || !ed->collection) { + return EINA_FALSE; + } + + return eina_hash_move(ed->collection->data, key, new_key); +} + +EAPI Eina_Bool +edje_edit_data_name_set(Evas_Object *obj, const char *itemname, const char *newname) +{ + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!itemname || !newname || !ed->file || !ed->file->data) + return EINA_FALSE; + + return eina_hash_move(ed->file->data, itemname, newname); +} + +/***********************/ +/* COLOR CLASSES API */ +/***********************/ + +EAPI Eina_List * +edje_edit_color_classes_list_get(Evas_Object * obj) +{ + Eina_List *classes = NULL; + Eina_List *l; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->color_classes) + return NULL; + //printf("GET CLASSES LIST %d %d\n", eina_list_count(ed->color_classes), eina_list_count(ed->file->color_classes)); + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + classes = eina_list_append(classes, eina_stringshare_add(cc->name)); + + return classes; +} + +EAPI Eina_Bool +edje_edit_color_class_colors_get(Evas_Object *obj, const char *class_name, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) +{ + Eina_List *l; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!ed->file || !ed->file->color_classes) + return EINA_FALSE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (!strcmp(cc->name, class_name)) + { + if (r) *r = cc->r; + if (g) *g = cc->g; + if (b) *b = cc->b; + if (a) *a = cc->a; + + if (r2) *r2 = cc->r2; + if (g2) *g2 = cc->g2; + if (b2) *b2 = cc->b2; + if (a2) *a2 = cc->a2; + + if (r3) *r3 = cc->r3; + if (g3) *g3 = cc->g3; + if (b3) *b3 = cc->b3; + if (a3) *a3 = cc->a3; + + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_color_class_colors_set(Evas_Object *obj, const char *class_name, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) +{ + Eina_List *l; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!ed->file || !ed->file->color_classes) + return EINA_FALSE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (!strcmp(cc->name, class_name)) + { + if (r > -1) cc->r = r; + if (g > -1) cc->g = g; + if (b > -1) cc->b = b; + if (a > -1) cc->a = a; + + if (r2 > -1) cc->r2 = r2; + if (g2 > -1) cc->g2 = g2; + if (b2 > -1) cc->b2 = b2; + if (a2 > -1) cc->a2 = a2; + + if (r3 > -1) cc->r3 = r3; + if (g3 > -1) cc->g3 = g3; + if (b3 > -1) cc->b3 = b3; + if (a3 > -1) cc->a3 = a3; + + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_color_class_add(Evas_Object *obj, const char *name) +{ + Eina_List *l; + Edje_Color_Class *c; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!name || !ed->file) + return EINA_FALSE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (strcmp(cc->name, name) == 0) + return EINA_FALSE; + + c = _alloc(sizeof(Edje_Color_Class)); + if (!c) return EINA_FALSE; + + c->name = (char*)eina_stringshare_add(name); + c->r = c->g = c->b = c->a = 255; + c->r2 = c->g2 = c->b2 = c->a2 = 255; + c->r3 = c->g3 = c->b3 = c->a3 = 255; + + ed->file->color_classes = eina_list_append(ed->file->color_classes, c); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_color_class_del(Evas_Object *obj, const char *name) +{ + Eina_List *l; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!name || !ed->file || !ed->file->color_classes) + return EINA_FALSE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (strcmp(cc->name, name) == 0) + { + _edje_if_string_free(ed, cc->name); + ed->file->color_classes = eina_list_remove(ed->file->color_classes, cc); + free(cc); + return EINA_TRUE; + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_color_class_name_set(Evas_Object *obj, const char *name, const char *newname) +{ + Eina_List *l; + Edje_Color_Class *cc; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!ed->file || !ed->file->color_classes) + return EINA_FALSE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (!strcmp(cc->name, name)) + { + _edje_if_string_free(ed, cc->name); + cc->name = (char*)eina_stringshare_add(newname); + return EINA_TRUE; + } + + return EINA_FALSE; +} + + + +/*********************/ +/* TEXT STYLES API */ +/*********************/ + +EAPI Eina_List * +edje_edit_styles_list_get(Evas_Object * obj) +{ + Eina_List *styles = NULL; + Eina_List *l; + Edje_Style *s; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->styles) + return NULL; + //printf("GET STYLES LIST %d\n", eina_list_count(ed->file->styles)); + EINA_LIST_FOREACH(ed->file->styles, l, s) + styles = eina_list_append(styles, eina_stringshare_add(s->name)); + + return styles; +} + +EAPI Eina_Bool +edje_edit_style_add(Evas_Object * obj, const char* style) +{ + Edje_Style *s; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + //printf("ADD STYLE '%s'\n", style); + + s = _edje_edit_style_get(ed, style); + if (s) return EINA_FALSE; + + s = _alloc(sizeof(Edje_Style)); + if (!s) return EINA_FALSE; + s->name = (char*)eina_stringshare_add(style); + s->tags = NULL; + s->style = NULL; + + ed->file->styles = eina_list_append(ed->file->styles, s); + return EINA_TRUE; +} + +EAPI void +edje_edit_style_del(Evas_Object * obj, const char* style) +{ + Edje_Style *s; + + eina_error_set(0); + + GET_ED_OR_RETURN(); + //printf("DEL STYLE '%s'\n", style); + + s = _edje_edit_style_get(ed, style); + if (!s) return; + + ed->file->styles = eina_list_remove(ed->file->styles, s); + + _edje_if_string_free(ed, s->name); + //~ //s->style HOWTO FREE ??? + while (s->tags) + { + Edje_Style_Tag *t; + + t = s->tags->data; + + s->tags = eina_list_remove(s->tags, t); + _edje_if_string_free(ed, t->key); + _edje_if_string_free(ed, t->value); + _edje_if_string_free(ed, t->font); + _edje_if_string_free(ed, t->text_class); + free(t); + t = NULL; + } + free(s); + s = NULL; + s = NULL; +} + + +EAPI Eina_List * +edje_edit_style_tags_list_get(Evas_Object * obj, const char* style) +{ + Eina_List *tags = NULL; + Eina_List *l; + Edje_Style *s; + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + if (!ed->file || !ed->file->styles || !style) + return NULL; + + s = _edje_edit_style_get(ed, style); + + //printf("GET STYLE TAG LIST %d\n", eina_list_count(s->tags)); + EINA_LIST_FOREACH(s->tags, l, t) + tags = eina_list_append(tags, eina_stringshare_add(t->key)); + + return tags; +} + +EAPI void +edje_edit_style_tag_name_set(Evas_Object * obj, const char* style, const char* tag, const char*new_name) +{ + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(); + //printf("SET TAG NAME for '%s' FOR STYLE '%s'\n", tag, style); + + if (!ed->file || !ed->file->styles || !style || !tag) + return; + + t = _edje_edit_style_tag_get(ed, style, tag); + if (!t) return; + _edje_if_string_free(ed, t->key); + t->key = eina_stringshare_add(new_name); +} + +EAPI const char* +edje_edit_style_tag_value_get(Evas_Object * obj, const char* style, const char* tag) +{ + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + //printf("GET TAG '%s' FOR STYLE '%s'\n", tag, style); + + if (!ed->file || !ed->file->styles || !style || !tag) + return NULL; + + t = _edje_edit_style_tag_get(ed, style, tag); + if (t && t->value) + return eina_stringshare_add(t->value); + + return NULL; +} + +EAPI void +edje_edit_style_tag_value_set(Evas_Object * obj, const char* style, const char* tag, const char*new_value) +{ + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(); + //printf("SET TAG VALUE for '%s' FOR STYLE '%s'\n", tag, style); + + if (!ed->file || !ed->file->styles || !style || !tag) + return; + + t = _edje_edit_style_tag_get(ed, style, tag); + if (!t) return; + _edje_if_string_free(ed, t->value); + t->value = eina_stringshare_add(new_value); +} + +EAPI Eina_Bool +edje_edit_style_tag_add(Evas_Object * obj, const char* style, const char* tag_name) +{ + Edje_Style *s; + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + //printf("ADD TAG '%s' IN STYLE '%s'\n", tag_name, style); + + t = _edje_edit_style_tag_get(ed, style, tag_name); + if (t) return EINA_FALSE; + s = _edje_edit_style_get(ed, style); + if (!s) return EINA_FALSE; + + t = _alloc(sizeof(Edje_Style_Tag)); + if (!t) return EINA_FALSE; + t->key = eina_stringshare_add(tag_name); + t->value = NULL; + t->font = NULL; + t->text_class = NULL; + + s->tags = eina_list_append(s->tags, t); + return EINA_TRUE; +} + +EAPI void +edje_edit_style_tag_del(Evas_Object * obj, const char* style, const char* tag) +{ + Edje_Style *s; + Edje_Style_Tag *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(); + //printf("DEL TAG '%s' IN STYLE '%s'\n", tag, style); + + s = _edje_edit_style_get(ed, style); + t = _edje_edit_style_tag_get(ed, style, tag); + + s->tags = eina_list_remove(s->tags, t); + _edje_if_string_free(ed, t->key); + _edje_if_string_free(ed, t->value); + _edje_if_string_free(ed, t->font); + _edje_if_string_free(ed, t->text_class); + free(t); + t = NULL; +} + +/*******************/ +/* EXTERNALS API */ +/*******************/ + +EAPI Eina_List * +edje_edit_externals_list_get(Evas_Object *obj) +{ + Eina_List *externals = NULL; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->external_dir) + return NULL; + //printf("GET STYLES LIST %d\n", eina_list_count(ed->file->styles)); + for (i = 0; i < ed->file->external_dir->entries_count; ++i) + externals = eina_list_append(externals, + eina_stringshare_add(ed->file->external_dir->entries[i].entry)); + + return externals; +} + +EAPI Eina_Bool +edje_edit_external_add(Evas_Object *obj, const char *external) +{ + Edje_External_Directory_Entry *e; + unsigned int freeid; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + e = _edje_edit_external_get(ed, external); + if (e) return EINA_FALSE; + + if (!ed->file->external_dir) + ed->file->external_dir = _alloc(sizeof(Edje_External_Directory)); + + for (i = 0; i < ed->file->external_dir->entries_count; ++i) + if (!ed->file->external_dir->entries[i].entry) + break ; + + if (i == ed->file->external_dir->entries_count) + { + Edje_External_Directory_Entry *tmp; + unsigned int max; + + max = ed->file->external_dir->entries_count + 1; + tmp = realloc(ed->file->external_dir->entries, + sizeof (Edje_External_Directory_Entry) * max); + + if (!tmp) return EINA_FALSE; + + ed->file->external_dir->entries = tmp; + freeid = ed->file->external_dir->entries_count; + ed->file->external_dir->entries_count = max; + } + else + freeid = i; + + ed->file->external_dir->entries[freeid].entry = (char*)eina_stringshare_add(external); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_external_del(Evas_Object *obj, const char *external) +{ + Edje_External_Directory_Entry *e; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + e = _edje_edit_external_get(ed, external); + if (!e) return EINA_FALSE; + + _edje_if_string_free(ed, e->entry); + e->entry = NULL; + + return EINA_TRUE; +} + +/***************/ +/* PARTS API */ +/***************/ + +EAPI Eina_List * +edje_edit_parts_list_get(Evas_Object *obj) +{ + Eina_List *parts = NULL; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + //printf("EE: Found %d parts\n", ed->table_parts_size); + + parts = NULL; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + parts = eina_list_append(parts, eina_stringshare_add(rp->part->name)); + } + + return parts; +} + +EAPI Eina_Bool +edje_edit_part_name_set(Evas_Object *obj, const char* part, const char* new_name) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + if (!new_name) return EINA_FALSE; + if (!strcmp(part, new_name)) return EINA_TRUE; + if (_edje_real_part_get(ed, new_name)) return EINA_FALSE; + + //printf("Set name of part: %s [new name: %s]\n", part, new_name); + + _edje_if_string_free(ed, rp->part->name); + rp->part->name = (char *)eina_stringshare_add(new_name); + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +#define FUNC_PART_API_STRING(Value) \ + EAPI const char * \ + edje_edit_part_api_##Value##_get(Evas_Object *obj, const char *part) \ + { \ + eina_error_set(0); \ + GET_RP_OR_RETURN(NULL); \ + return eina_stringshare_add(rp->part->api.Value); \ + } \ + EAPI Eina_Bool \ + edje_edit_part_api_##Value##_set(Evas_Object *obj, const char *part, const char *s) \ + { \ + eina_error_set(0); \ + GET_RP_OR_RETURN(EINA_FALSE); \ + _edje_if_string_free(ed, rp->part->api.Value); \ + rp->part->api.Value = eina_stringshare_add(s); \ + return EINA_TRUE; \ + } + +FUNC_PART_API_STRING(name); +FUNC_PART_API_STRING(description); + +static Eina_Bool +_edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type, const char *source) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Collection *pc; + Edje_Part **tmp; + Edje_Part *ep; + Edje_Real_Part *rp; + int id; + + GET_ED_OR_RETURN(EINA_FALSE); + + //printf("ADD PART: %s [type: %d]\n", name, type); + + /* Check if part already exists */ + if (_edje_real_part_get(ed, name)) + return EINA_FALSE; + + ce = eina_hash_find(ed->file->collection, ed->group); + + /* Alloc Edje_Part or return */ + ep = eina_mempool_malloc(ce->mp.part, sizeof(Edje_Part)); + if (!ep) return EINA_FALSE; + memset(ep, 0, sizeof(Edje_Part)); + + /* Alloc Edje_Real_Part or return */ + rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_Real_Part)); + if (!rp) + { + eina_mempool_free(ce->mp.part, ep); + return EINA_FALSE; + } + memset(rp, 0, sizeof(Edje_Real_Part)); + + /* Init Edje_Part */ + pc = ed->collection; + + tmp = realloc(pc->parts, (pc->parts_count + 1) * sizeof (Edje_Part *)); + if (!tmp) + { + eina_mempool_free(ce->mp.part, ep); + eina_mempool_free(_edje_real_part_mp, rp); + return EINA_FALSE; + } + + id = pc->parts_count++; + + pc->parts = tmp; + pc->parts[id] = ep; + + ep->id = id; + ep->type = type; + ep->name = eina_stringshare_add(name); + ep->mouse_events = 1; + ep->repeat_events = 0; + ep->ignore_flags = EVAS_EVENT_FLAG_NONE; + ep->pointer_mode = EVAS_OBJECT_POINTER_MODE_AUTOGRAB; + ep->precise_is_inside = 0; + ep->use_alternate_font_metrics = 0; + ep->clip_to_id = -1; + ep->dragable.confine_id = -1; + ep->dragable.event_id = -1; + if (source) + ep->source = eina_stringshare_add(source); + + ep->default_desc = NULL; + ep->other.desc = NULL; + ep->other.desc_count = 0; + + /* Init Edje_Real_Part */ + rp->edje = ed; + _edje_ref(rp->edje); + rp->part = ep; + + if (ep->type == EDJE_PART_TYPE_RECTANGLE) + rp->object = evas_object_rectangle_add(ed->base.evas); + else if (ep->type == EDJE_PART_TYPE_IMAGE || ep->type == EDJE_PART_TYPE_PROXY) + rp->object = evas_object_image_add(ed->base.evas); + else if (ep->type == EDJE_PART_TYPE_TEXT) + { + _edje_text_part_on_add(ed, rp); + rp->object = evas_object_text_add(ed->base.evas); + evas_object_text_font_source_set(rp->object, ed->path); + } + else if (ep->type == EDJE_PART_TYPE_SWALLOW || + ep->type == EDJE_PART_TYPE_GROUP || + ep->type == EDJE_PART_TYPE_EXTERNAL) + { + rp->object = evas_object_rectangle_add(ed->base.evas); + evas_object_color_set(rp->object, 0, 0, 0, 0); + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + } + else if (ep->type == EDJE_PART_TYPE_TEXTBLOCK) + rp->object = evas_object_textblock_add(ed->base.evas); + else if (ep->type != EDJE_PART_TYPE_SPACER) + ERR("wrong part type %i!", ep->type); + if (rp->object) + { + evas_object_show(rp->object); + evas_object_smart_member_add(rp->object, ed->obj); + evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); + if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP) + { + if (ep->mouse_events) + { + _edje_callbacks_add(rp->object, ed, rp); + if (ep->repeat_events) + evas_object_repeat_events_set(rp->object, 1); + + if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) + evas_object_pointer_mode_set(rp->object, ep->pointer_mode); + } + else + { + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, + EVAS_OBJECT_POINTER_MODE_NOGRAB); + } + if (ep->precise_is_inside) + evas_object_precise_is_inside_set(rp->object, 1); + } + if (ep->type == EDJE_PART_TYPE_EXTERNAL) + { + Evas_Object *child; + child = _edje_external_type_add(source, evas_object_evas_get(ed->obj), ed->obj, NULL, name); + if (child) + _edje_real_part_swallow(rp, child, EINA_TRUE); + } + evas_object_clip_set(rp->object, ed->base.clipper); + evas_object_show(ed->base.clipper); + } + + /* Update table_parts */ + ed->table_parts_size++; + ed->table_parts = realloc(ed->table_parts, + sizeof(Edje_Real_Part *) * ed->table_parts_size); + + ed->table_parts[ep->id % ed->table_parts_size] = rp; + + /* Create default description */ + if (!edje_edit_state_add(obj, name, "default", 0.0)) + { + _edje_if_string_free(ed, ep->name); + if (source) + _edje_if_string_free(ed, ep->source); + eina_mempool_free(ce->mp.part, ep); + eina_mempool_free(_edje_real_part_mp, rp); + return EINA_FALSE; + } + edje_edit_part_selected_state_set(obj, name, "default", 0.0); + + ce->count.part++; + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type) +{ + eina_error_set(0); + + if (type == EDJE_PART_TYPE_EXTERNAL) + return EINA_FALSE; + return _edje_edit_real_part_add(obj, name, type, NULL); +} + +EAPI Eina_Bool +edje_edit_part_external_add(Evas_Object *obj, const char *name, const char *source) +{ + eina_error_set(0); + + if (!source) + return EINA_FALSE; + return _edje_edit_real_part_add(obj, name, EDJE_PART_TYPE_EXTERNAL, source); +} + +EAPI Eina_Bool +edje_edit_part_del(Evas_Object *obj, const char* part) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Collection *pc; + Edje_Part *ep; + unsigned int k; + unsigned int id; + unsigned int i; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + //printf("REMOVE PART: %s\n", part); + + ep = rp->part; + id = ep->id; + + /* Unlik Edje_Real_Parts that link to the removed one */ + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *real; + + if (i == id) continue; //don't check the deleted id + real = ed->table_parts[i]; + + if (real->text.source == rp) real->text.source = NULL; + if (real->text.text_source == rp) real->text.text_source = NULL; + + if (real->param1.rel1_to_x == rp) real->param1.rel1_to_x = NULL; + if (real->param1.rel1_to_y == rp) real->param1.rel1_to_y = NULL; + if (real->param1.rel2_to_x == rp) real->param1.rel2_to_x = NULL; + if (real->param1.rel2_to_y == rp) real->param1.rel2_to_y = NULL; + + if (real->param2) + { + if (real->param2->rel1_to_x == rp) real->param2->rel1_to_x = NULL; + if (real->param2->rel1_to_y == rp) real->param2->rel1_to_y = NULL; + if (real->param2->rel2_to_x == rp) real->param2->rel2_to_x = NULL; + if (real->param2->rel2_to_y == rp) real->param2->rel2_to_y = NULL; + } + + if (real->custom) + { + if (real->custom->rel1_to_x == rp) real->custom->rel1_to_x = NULL; + if (real->custom->rel1_to_y == rp) real->custom->rel1_to_y = NULL; + if (real->custom->rel2_to_x == rp) real->custom->rel2_to_x = NULL; + if (real->custom->rel2_to_y == rp) real->custom->rel2_to_y = NULL; + } + + if (real->clip_to == rp) + { + evas_object_clip_set(real->object, ed->base.clipper); + real->clip_to = NULL; + } + if (real->drag && real->drag->confine_to == rp) + real->drag->confine_to = NULL; + } + + /* Unlink all the parts and descriptions that refer to id */ + _edje_part_id_set(ed, rp, -1); + + /* Remove part from parts list */ + pc = ed->collection; + pc->parts_count--; + if (id < pc->parts_count) /* Forward parts */ + { + int mcount = (pc->parts_count - id) * sizeof(Edje_Part *); + memmove(&pc->parts[id], &pc->parts[id+1], mcount); + } + pc->parts[pc->parts_count] = NULL; + _edje_fix_parts_id(ed); + + /* Free Edje_Part and all descriptions */ + ce = eina_hash_find(ed->file->collection, ed->group); + + _edje_if_string_free(ed, ep->name); + if (ep->default_desc) + { + _edje_collection_free_part_description_free(ep->type, ep->default_desc, ce, 0); + ep->default_desc = NULL; + } + + for (k = 0; k < ep->other.desc_count; ++k) + _edje_collection_free_part_description_free(ep->type, ep->other.desc[k], ce, 0); + + free(ep->other.desc); + eina_mempool_free(ce->mp.part, ep); + + /* Free Edje_Real_Part */ + _edje_real_part_free(rp); + + /* if all parts are gone, hide the clipper */ + if (ed->table_parts_size == 0) + evas_object_hide(ed->base.clipper); + + edje_object_calc_force(obj); + + ce->count.part--; + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_part_exist(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + return EINA_TRUE; +} + +EAPI const char* +edje_edit_part_below_get(Evas_Object *obj, const char* part) +{ + Edje_Real_Part *prev; + + eina_error_set(0); + + GET_RP_OR_RETURN(0); + + if (rp->part->id < 1) return NULL; + + prev = ed->table_parts[(rp->part->id - 1) % ed->table_parts_size]; + + return eina_stringshare_add(prev->part->name); +} + +EAPI const char* +edje_edit_part_above_get(Evas_Object *obj, const char* part) +{ + Edje_Real_Part *next; + + eina_error_set(0); + + GET_RP_OR_RETURN(0); + + if ((unsigned int) rp->part->id >= ed->table_parts_size - 1) return 0; + + next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size]; + + return eina_stringshare_add(next->part->name); +} + +EAPI Eina_Bool +edje_edit_part_restack_below(Evas_Object *obj, const char* part) +{ + Edje_Part_Collection *group; + Edje_Real_Part *prev; + Edje_Part *swap; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + //printf("RESTACK PART: %s BELOW\n", part); + + if (rp->part->id < 1) return EINA_FALSE; + group = ed->collection; + + /* update parts list */ + prev = ed->table_parts[(rp->part->id - 1) % ed->table_parts_size]; + + swap = group->parts[rp->part->id]; + group->parts[rp->part->id] = group->parts[prev->part->id]; + group->parts[prev->part->id] = swap; + + _edje_parts_id_switch(ed, rp, prev); + + evas_object_stack_below(rp->object, prev->object); + if (rp->swallowed_object) + evas_object_stack_above(rp->swallowed_object, rp->object); + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_part_restack_above(Evas_Object *obj, const char* part) +{ + Edje_Part_Collection *group; + Edje_Real_Part *next; + Edje_Part *swap; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + //printf("RESTACK PART: %s ABOVE\n", part); + + if ((unsigned int) rp->part->id >= ed->table_parts_size - 1) return EINA_FALSE; + + group = ed->collection; + + /* update parts list */ + next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size]; + + swap = group->parts[rp->part->id]; + group->parts[rp->part->id] = group->parts[next->part->id]; + group->parts[next->part->id] = swap; + + /* update ids */ + _edje_parts_id_switch(ed, rp, next); + + evas_object_stack_above(rp->object, next->object); + if (rp->swallowed_object) + evas_object_stack_above(rp->swallowed_object, rp->object); + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +EAPI Edje_Part_Type +edje_edit_part_type_get(Evas_Object *obj, const char *part) +{ + + eina_error_set(0); + + GET_RP_OR_RETURN(0); + + return rp->part->type; +} + +EAPI const char * +edje_edit_part_selected_state_get(Evas_Object *obj, const char *part, double *value) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(NULL); + + if (!rp->chosen_description) + { + if (value) *value = 0.0; // FIXME: Make sure edje_edit supports correctly the default having any value + return eina_stringshare_add("default"); + } + + if (value) *value = rp->chosen_description->state.value; + return eina_stringshare_add(rp->chosen_description->state.name); +} + +EAPI Eina_Bool +edje_edit_part_selected_state_set(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Common *pd; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + pd = _edje_part_description_find_byname(eed, part, state, value); + if (!pd) return EINA_FALSE; + + //printf("EDJE: Set state: %s %f\n", pd->state.name, pd->state.value); + _edje_part_description_apply(ed, rp, pd->state.name, pd->state.value, NULL, 0.0); + + edje_object_calc_force(obj); + return EINA_TRUE; +} + +EAPI const char * +edje_edit_part_clip_to_get(Evas_Object *obj, const char *part) +{ + Edje_Real_Part *clip = NULL; + + eina_error_set(0); + + GET_RP_OR_RETURN(NULL); + + //printf("Get clip_to for part: %s [to_id: %d]\n", part, rp->part->clip_to_id); + if (rp->part->clip_to_id < 0) return NULL; + + clip = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; + if (!clip || !clip->part || !clip->part->name) return NULL; + + return eina_stringshare_add(clip->part->name); +} + +EAPI Eina_Bool +edje_edit_part_clip_to_set(Evas_Object *obj, const char *part, const char *clip_to) +{ + Edje_Real_Part *clip; + Evas_Object *o, *oo; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + /* unset clipping */ + if (!clip_to) + { + //printf("UnSet clip_to for part: %s\n", part); + + if (rp->clip_to && rp->clip_to->object) + { + evas_object_pointer_mode_set(rp->clip_to->object, + EVAS_OBJECT_POINTER_MODE_AUTOGRAB); + evas_object_clip_unset(rp->object); + } + + evas_object_clip_set(rp->object, ed->base.clipper); + if (rp->swallowed_object) + evas_object_clip_set(rp->swallowed_object, ed->base.clipper); + + rp->part->clip_to_id = -1; + rp->clip_to = NULL; + + edje_object_calc_force(obj); + + return EINA_TRUE; + } + + /* set clipping */ + //printf("Set clip_to for part: %s [to: %s]\n", part, clip_to); + clip = _edje_real_part_get(ed, clip_to); + if (!clip || !clip->part) return EINA_FALSE; + o = clip->object; + while ((oo = evas_object_clip_get(o))) + { + if (o == rp->object) + return EINA_FALSE; + o = oo; + } + + rp->part->clip_to_id = clip->part->id; + rp->clip_to = clip; + + evas_object_pass_events_set(rp->clip_to->object, 1); + evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + evas_object_clip_set(rp->object, rp->clip_to->object); + if (rp->swallowed_object) + evas_object_clip_set(rp->swallowed_object, rp->clip_to->object); + + edje_object_calc_force(obj); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_part_mouse_events_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + //printf("Get mouse_events for part: %s [%d]\n", part, rp->part->mouse_events); + return rp->part->mouse_events; +} + +EAPI void +edje_edit_part_mouse_events_set(Evas_Object *obj, const char *part, Eina_Bool mouse_events) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + + if (!rp->object) return; + + //printf("Set mouse_events for part: %s [%d]\n", part, mouse_events); + + rp->part->mouse_events = mouse_events ? 1 : 0; + + if (mouse_events) + { + evas_object_pass_events_set(rp->object, 0); + _edje_callbacks_add(rp->object, ed, rp); + } + else + { + evas_object_pass_events_set(rp->object, 1); + _edje_callbacks_del(rp->object, ed); + } +} + +EAPI Eina_Bool +edje_edit_part_repeat_events_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + //printf("Get repeat_events for part: %s [%d]\n", part, rp->part->repeat_events); + return rp->part->repeat_events; +} + +EAPI void +edje_edit_part_repeat_events_set(Evas_Object *obj, const char *part, Eina_Bool repeat_events) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + + if (!rp->object) return; + + //printf("Set repeat_events for part: %s [%d]\n", part, repeat_events); + + rp->part->repeat_events = repeat_events ? 1 : 0; + + if (repeat_events) + evas_object_repeat_events_set(rp->object, 1); + else + evas_object_repeat_events_set(rp->object, 0); +} + +EAPI Evas_Event_Flags +edje_edit_part_ignore_flags_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(0); + + return rp->part->ignore_flags; +} + +EAPI void +edje_edit_part_ignore_flags_set(Evas_Object *obj, const char *part, Evas_Event_Flags ignore_flags) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + + if (!rp->object) return; + //printf("Set ignore_flags for part: %s [%#x]\n", part, ignore_flags); + + rp->part->ignore_flags = ignore_flags; +} + +EAPI void +edje_edit_part_scale_set(Evas_Object *obj, const char *part, Eina_Bool scale) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + + rp->part->scale = scale; + edje_object_calc_force(obj); +} + +EAPI Eina_Bool +edje_edit_part_scale_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + return rp->part->scale; +} + +EAPI const char * +edje_edit_part_source_get(Evas_Object *obj, const char *part) +{ + //Edje_Real_Part *clip = NULL; + eina_error_set(0); + + GET_RP_OR_RETURN(NULL); + + //printf("Get source for part: %s\n", part); + if (!rp->part->source) return NULL; + + return eina_stringshare_add(rp->part->source); +} + +EAPI Eina_Bool +edje_edit_part_source_set(Evas_Object *obj, const char *part, const char *source) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + Evas_Object *child_obj; + //printf("Set source for part: %s [source: %s]\n", part, source); + + if (rp->part->type == EDJE_PART_TYPE_EXTERNAL) + return EINA_FALSE; + + _edje_if_string_free(ed, rp->part->source); + + if (rp->swallowed_object) + { + _edje_real_part_swallow_clear(rp); + evas_object_del(rp->swallowed_object); + rp->swallowed_object = NULL; + } + if (source) + { + rp->part->source = eina_stringshare_add(source); + child_obj = edje_object_add(ed->base.evas); + edje_object_file_set(child_obj, ed->file->path, source); + _edje_real_part_swallow(rp, child_obj, EINA_TRUE); + } + else + rp->part->source = NULL; + return EINA_TRUE; +} + +EAPI int +edje_edit_part_drag_x_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(0); + //printf("Get dragX for part: %s\n", part); + return rp->part->dragable.x; +} + +EAPI void +edje_edit_part_drag_x_set(Evas_Object *obj, const char *part, int drag) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + //printf("Set dragX for part: %s\n", part); + rp->part->dragable.x = drag; + + if (!drag && !rp->part->dragable.y) + { + free(rp->drag); + rp->drag = NULL; + return ; + } + + if (rp->drag) return; + + rp->drag = _alloc(sizeof (Edje_Real_Part_Drag)); + if (!rp->drag) return; + + rp->drag->step.x = rp->part->dragable.step_x; + rp->drag->step.y = rp->part->dragable.step_y; +} + +EAPI int +edje_edit_part_drag_y_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(0); + //printf("Get dragY for part: %s\n", part); + return rp->part->dragable.y; +} + +EAPI void +edje_edit_part_drag_y_set(Evas_Object *obj, const char *part, int drag) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + //printf("Set dragY for part: %s\n", part); + rp->part->dragable.y = drag; + + if (!drag && !rp->part->dragable.x) + { + free(rp->drag); + rp->drag = NULL; + return ; + } + + if (rp->drag) return; + + rp->drag = _alloc(sizeof (Edje_Real_Part_Drag)); + if (!rp->drag) return; + + rp->drag->step.x = rp->part->dragable.step_x; + rp->drag->step.y = rp->part->dragable.step_y; +} + +#define FUNC_PART_DRAG_INT(Class, Value) \ + EAPI int \ + edje_edit_part_drag_##Class##_##Value##_get(Evas_Object *obj, const char *part) \ + { \ + eina_error_set(0); \ + GET_RP_OR_RETURN(0); \ + return rp->part->dragable.Class##_##Value; \ + } \ + EAPI void \ + edje_edit_part_drag_##Class##_##Value##_set(Evas_Object *obj, const char *part, int v) \ + { \ + eina_error_set(0); \ + GET_RP_OR_RETURN(); \ + rp->part->dragable.Class##_##Value = v; \ + } + +FUNC_PART_DRAG_INT(step, x); +FUNC_PART_DRAG_INT(step, y); +FUNC_PART_DRAG_INT(count, x); +FUNC_PART_DRAG_INT(count, y); + +#define FUNC_PART_DRAG_ID(Id) \ + EAPI const char* \ + edje_edit_part_drag_##Id##_get(Evas_Object *obj, const char *part) \ + { \ + Edje_Real_Part *p; \ + \ + eina_error_set(0); \ + \ + GET_RP_OR_RETURN(NULL); \ + \ + if (rp->part->dragable.Id##_id < 0) \ + return NULL; \ + \ + p = ed->table_parts[rp->part->dragable.Id##_id]; \ + return eina_stringshare_add(p->part->name); \ + } \ + EAPI void \ + edje_edit_part_drag_##Id##_set(Evas_Object *obj, const char *part, const char *e) \ + { \ + Edje_Real_Part *e_part; \ + \ + eina_error_set(0); \ + \ + GET_RP_OR_RETURN(); \ + if (!e) \ + { \ + rp->part->dragable.Id##_id = -1; \ + return ; \ + } \ + \ + e_part = _edje_real_part_get(ed, e); \ + rp->part->dragable.Id##_id = e_part->part->id; \ + } + +FUNC_PART_DRAG_ID(confine); +FUNC_PART_DRAG_ID(event); + +/*********************/ +/* PART STATES API */ +/*********************/ +EAPI Eina_List * +edje_edit_part_states_list_get(Evas_Object *obj, const char *part) +{ + char state_name[PATH_MAX]; + Eina_List *states = NULL; + unsigned int i; + + eina_error_set(0); + + GET_RP_OR_RETURN(NULL); + + //Is there a better place to put this? maybe edje_edit_init() ? +#ifdef HAVE_LOCALE_H + setlocale(LC_NUMERIC, "C"); +#endif + + states = NULL; + + //append default state + snprintf(state_name, PATH_MAX, + "%s %.2f", + rp->part->default_desc->state.name, + rp->part->default_desc->state.value); + states = eina_list_append(states, eina_stringshare_add(state_name)); + //printf("NEW STATE def: %s\n", state->state.name); + + //append other states + for (i = 0; i < rp->part->other.desc_count; ++i) + { + snprintf(state_name, sizeof(state_name), + "%s %.2f", + rp->part->other.desc[i]->state.name, + rp->part->other.desc[i]->state.value); + states = eina_list_append(states, eina_stringshare_add(state_name)); + //printf("NEW STATE: %s\n", state_name); + } + return states; +} + +EAPI Eina_Bool +edje_edit_state_name_set(Evas_Object *obj, const char *part, const char *state, double value, const char *new_name, double new_value) +{ + int part_id; + int i; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + //printf("Set name of state: %s in part: %s [new name: %s]\n", + // part, state, new_name); + + if (!new_name) return EINA_FALSE; + + /* update programs */ + /* update the 'state' field in all programs. update only if program has + a single target */ + part_id = _edje_part_id_find(ed, part); + for (i = 0; i < ed->table_programs_size; i++) + { + Edje_Program *epr = ed->table_programs[i]; + + if (eina_list_count(epr->targets) == 1) + { + Edje_Program_Target *t = eina_list_data_get(epr->targets); + + if (t->id == part_id && + !strcmp(epr->state, pd->state.name) && + pd->state.value == epr->value) + { + _edje_if_string_free(ed, epr->state); + epr->state = eina_stringshare_add(new_name); + epr->value = value; + } + } + } + + /* set name */ + _edje_if_string_free(ed, pd->state.name); + pd->state.name = (char *)eina_stringshare_add(new_name); + /* set value */ + pd->state.value = new_value; + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_state_del(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Description_Common *pd; + unsigned int i; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + if (!edje_edit_state_exist(obj, part, state, value)) + return EINA_FALSE; + + pd = _edje_part_description_find_byname(eed, part, state, value); + if (!pd) return EINA_FALSE; + + /* Don't allow to delete default state, for now at least; */ + if (pd == rp->part->default_desc) + return EINA_FALSE; + + /* And if we are deleting the current state, go back to default first */ + if (pd == rp->chosen_description) + _edje_part_description_apply(ed, rp, "default", 0.0, NULL, 0.0); + + ce = eina_hash_find(ed->file->collection, ed->group); + + for (i = 0; i < rp->part->other.desc_count; ++i) + if (pd == rp->part->other.desc[i]) + { + memmove(rp->part->other.desc + i, + rp->part->other.desc + i + 1, + sizeof (Edje_Part_Description_Common*) * (rp->part->other.desc_count - i - 1)); + rp->part->other.desc_count--; + break; + } + + _edje_collection_free_part_description_free(rp->part->type, pd, ce, 0); + return EINA_TRUE; +} + +static Edje_Part_Description_Common * +_edje_edit_state_alloc(int type, Edje *ed) +{ + Edje_Part_Collection_Directory_Entry *ce; + Edje_Part_Description_Common *pd = NULL; + + ce = eina_hash_find(ed->file->collection, ed->group); + + switch (type) + { + case EDJE_PART_TYPE_RECTANGLE: + pd = eina_mempool_malloc(ce->mp.RECTANGLE, sizeof (Edje_Part_Description_Common)); + ce->count.RECTANGLE++; + break; + case EDJE_PART_TYPE_SPACER: + pd = eina_mempool_malloc(ce->mp.SPACER, sizeof (Edje_Part_Description_Common)); + ce->count.SPACER++; + break; + case EDJE_PART_TYPE_SWALLOW: + pd = eina_mempool_malloc(ce->mp.SWALLOW, sizeof (Edje_Part_Description_Common)); + ce->count.SWALLOW++; + break; + case EDJE_PART_TYPE_GROUP: + pd = eina_mempool_malloc(ce->mp.GROUP, sizeof (Edje_Part_Description_Common)); + ce->count.GROUP++; + break; + +#define EDIT_ALLOC_POOL(Short, Type, Name) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *Name; \ + \ + Name = eina_mempool_malloc(ce->mp.Short, \ + sizeof (Edje_Part_Description_##Type)); \ + memset(Name, 0, sizeof(Edje_Part_Description_##Type)); \ + pd = &Name->common; \ + ce->count.Short++; \ + break; \ + } + + EDIT_ALLOC_POOL(IMAGE, Image, image); + EDIT_ALLOC_POOL(TEXT, Text, text); + EDIT_ALLOC_POOL(TEXTBLOCK, Text, text); + EDIT_ALLOC_POOL(BOX, Box, box); + EDIT_ALLOC_POOL(TABLE, Table, table); + EDIT_ALLOC_POOL(EXTERNAL, External, external_params); + } + + return pd; +} + +EAPI Eina_Bool +edje_edit_state_add(Evas_Object *obj, const char *part, const char *name, double value) +{ + Edje_Part_Description_Common *pd; + + GET_RP_OR_RETURN(EINA_FALSE); + + if (edje_edit_state_exist(obj, part, name, value)) + return EINA_FALSE; + + //printf("ADD STATE: %s TO PART: %s\n", name , part); + pd = _edje_edit_state_alloc(rp->part->type, ed); + if (!pd) return EINA_FALSE; + + if (!rp->part->default_desc) + { + rp->part->default_desc = pd; + } + else + { + Edje_Part_Description_Common **tmp; + + tmp = realloc(rp->part->other.desc, + sizeof (Edje_Part_Description_Common *) * (rp->part->other.desc_count + 1)); + if (!tmp) + { + free(pd); + return EINA_FALSE; + } + rp->part->other.desc = tmp; + rp->part->other.desc[rp->part->other.desc_count++] = pd; + } + + memset(pd, 0, sizeof (*pd)); + + pd->state.name = eina_stringshare_add(name); + pd->state.value = value; + pd->visible = 1; + pd->align.x = 0.5; + pd->align.y = 0.5; + pd->min.w = 0; + pd->min.h = 0; + pd->fixed.w = 0; + pd->fixed.h = 0; + pd->max.w = -1; + pd->max.h = -1; + pd->rel1.relative_x = 0.0; + pd->rel1.relative_y = 0.0; + pd->rel1.offset_x = 0; + pd->rel1.offset_y = 0; + pd->rel1.id_x = -1; + pd->rel1.id_y = -1; + pd->rel2.relative_x = 1.0; + pd->rel2.relative_y = 1.0; + pd->rel2.offset_x = -1; + pd->rel2.offset_y = -1; + pd->rel2.id_x = -1; + pd->rel2.id_y = -1; + pd->color_class = NULL; + pd->color.r = 255; + pd->color.g = 255; + pd->color.b = 255; + pd->color.a = 255; + pd->color2.r = 0; + pd->color2.g = 0; + pd->color2.b = 0; + pd->color2.a = 255; + pd->map.id_persp = -1; + pd->map.id_light = -1; + pd->map.rot.id_center = -1; + pd->map.rot.x = FROM_DOUBLE(0.0); + pd->map.rot.y = FROM_DOUBLE(0.0); + pd->map.rot.z = FROM_DOUBLE(0.0); + pd->map.on = 0; + pd->map.smooth = 1; + pd->map.alpha = 1; + pd->map.backcull = 0; + pd->map.persp_on = 0; + pd->persp.zplane = 0; + pd->persp.focal = 1000; + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text*) pd; + + memset(&text->text, 0, sizeof (text->text)); + + text->text.color3.r = 0; + text->text.color3.g = 0; + text->text.color3.b = 0; + text->text.color3.a = 128; + text->text.align.x = 0.5; + text->text.align.y = 0.5; + text->text.id_source = -1; + text->text.id_text_source = -1; + } + else if (rp->part->type == EDJE_PART_TYPE_IMAGE) + { + Edje_Part_Description_Image *img; + + img = (Edje_Part_Description_Image*) pd; + + memset(&img->image, 0, sizeof (img->image)); + + img->image.id = -1; + img->image.fill.smooth = 1; + img->image.fill.pos_rel_x = 0.0; + img->image.fill.pos_abs_x = 0; + img->image.fill.rel_x = 1.0; + img->image.fill.abs_x = 0; + img->image.fill.pos_rel_y = 0.0; + img->image.fill.pos_abs_y = 0; + img->image.fill.rel_y = 1.0; + img->image.fill.abs_y = 0; + img->image.fill.angle = 0; + img->image.fill.spread = 0; + img->image.fill.type = EDJE_FILL_TYPE_SCALE; + } + else if (rp->part->type == EDJE_PART_TYPE_PROXY) + { + Edje_Part_Description_Proxy *pro; + + pro = (Edje_Part_Description_Proxy*) pd; + + memset(&pro->proxy, 0, sizeof (pro->proxy)); + + pro->proxy.id = -1; + pro->proxy.fill.smooth = 1; + pro->proxy.fill.pos_rel_x = 0.0; + pro->proxy.fill.pos_abs_x = 0; + pro->proxy.fill.rel_x = 1.0; + pro->proxy.fill.abs_x = 0; + pro->proxy.fill.pos_rel_y = 0.0; + pro->proxy.fill.pos_abs_y = 0; + pro->proxy.fill.rel_y = 1.0; + pro->proxy.fill.abs_y = 0; + pro->proxy.fill.angle = 0; + pro->proxy.fill.spread = 0; + pro->proxy.fill.type = EDJE_FILL_TYPE_SCALE; + } + else if (rp->part->type == EDJE_PART_TYPE_EXTERNAL) + { + Edje_Part_Description_External *external; + Edje_External_Param_Info *pi; + + external = (Edje_Part_Description_External*) pd; + + external->external_params = NULL; + + if (rp->part->source) + { + pi = (Edje_External_Param_Info *)edje_external_param_info_get(rp->part->source); + while (pi && pi->name) + { + Edje_External_Param *p; + p = _alloc(sizeof(Edje_External_Param)); + /* error checking.. meh */ + p->name = eina_stringshare_add(pi->name); + p->type = pi->type; + switch(p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + if (pi->info.i.def != EDJE_EXTERNAL_INT_UNSET) + p->i = pi->info.i.def; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (pi->info.d.def != EDJE_EXTERNAL_DOUBLE_UNSET) + p->d = pi->info.d.def; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + if (pi->info.c.def) + p->s = eina_stringshare_add(pi->info.c.def); + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (pi->info.s.def) + p->s = eina_stringshare_add(pi->info.s.def); + break; + default: + ERR("unknown external parameter type '%d'", p->type); + } + external->external_params = eina_list_append(external->external_params, p); + pi++; + } + if (external->external_params) + rp->param1.external_params = _edje_external_params_parse(rp->swallowed_object, external->external_params); + } + } + else if (rp->part->type == EDJE_PART_TYPE_BOX) + { + Edje_Part_Description_Box *box; + + box = (Edje_Part_Description_Box*) pd; + memset(&box->box, 0, sizeof (box->box)); + } + else if (rp->part->type == EDJE_PART_TYPE_TABLE) + { + Edje_Part_Description_Table *table; + + table = (Edje_Part_Description_Table*) pd; + memset(&table->table, 0, sizeof (table->table)); + } + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_state_exist(Evas_Object *obj, const char *part, const char *state, double value) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, double val_from, const char *to, double val_to) +{ + Edje_Part_Description_Common *pdfrom, *pdto; + Edje_External_Param *p; + + eina_error_set(0); + + GET_RP_OR_RETURN(EINA_FALSE); + + pdfrom = _edje_part_description_find_byname(eed, part, from, val_from); + if (!pdfrom) + return EINA_FALSE; + + pdto = _edje_part_description_find_byname(eed, part, to, val_to); + if (!pdto) + { + Edje_Part_Description_Common **tmp; + + pdto = _edje_edit_state_alloc(rp->part->type, ed); + if (!pdto) return EINA_FALSE; + /* No need to check for default desc, at this point it must exist */ + + tmp = realloc(rp->part->other.desc, + sizeof (Edje_Part_Description_Common *) * (rp->part->other.desc_count + 1)); + if (!tmp) + { + free(pdto); + return EINA_FALSE; + } + rp->part->other.desc = tmp; + rp->part->other.desc[rp->part->other.desc_count++] = pdto; + } + +#define PD_STRING_COPY(To, From, _x) \ + _edje_if_string_free(ed, To->_x); \ + To->_x = (char *)eina_stringshare_add(From->_x); + + /* Copy all value */ + *pdto = *pdfrom; + /* Keeping the pdto state name and value */ + pdto->state.name = eina_stringshare_add(to); + pdto->state.value = val_to; + /* Update pointer. */ + PD_STRING_COPY(pdto, pdfrom, color_class); + + switch (rp->part->type) + { + case EDJE_PART_TYPE_PROXY: + { + Edje_Part_Description_Proxy *pro_to = (Edje_Part_Description_Proxy*) pdto; + Edje_Part_Description_Proxy *pro_from = (Edje_Part_Description_Proxy*) pdfrom; + + pro_to->proxy = pro_from->proxy; + + break; + } + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img_to = (Edje_Part_Description_Image*) pdto; + Edje_Part_Description_Image *img_from = (Edje_Part_Description_Image*) pdfrom; + unsigned int i; + + img_to->image = img_from->image; + + /* Update pointers. */ + for (i = 0; i < img_to->image.tweens_count; ++i) + free(img_to->image.tweens[i]); + if (img_to->image.tweens_count > 0) + free(img_to->image.tweens); + + img_to->image.tweens_count = img_from->image.tweens_count; + img_to->image.tweens = calloc(img_to->image.tweens_count, + sizeof (Edje_Part_Image_Id*)); + if (!img_to->image.tweens) + break; + + for (i = 0; i < img_to->image.tweens_count; ++i) + { + Edje_Part_Image_Id *new_i; + new_i = _alloc(sizeof(Edje_Part_Image_Id)); + if (!new_i) continue ; + + *new_i = *img_from->image.tweens[i]; + + img_to->image.tweens[i] = new_i; + } + break; + } + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + { + Edje_Part_Description_Text *text_to = (Edje_Part_Description_Text*) pdto; + Edje_Part_Description_Text *text_from = (Edje_Part_Description_Text*) pdfrom; + + text_to->text = text_from->text; + + /* Update pointers. */ + PD_STRING_COPY(text_to, text_from, text.text.str); + PD_STRING_COPY(text_to, text_from, text.text_class); + PD_STRING_COPY(text_to, text_from, text.style.str); + PD_STRING_COPY(text_to, text_from, text.font.str); + PD_STRING_COPY(text_to, text_from, text.repch.str); + break; + } + case EDJE_PART_TYPE_BOX: + { + Edje_Part_Description_Box *box_to = (Edje_Part_Description_Box*) pdto; + Edje_Part_Description_Box *box_from = (Edje_Part_Description_Box*) pdfrom; + + box_to->box = box_from->box; + + PD_STRING_COPY(box_to, box_from, box.layout); + PD_STRING_COPY(box_to, box_from, box.alt_layout); + break; + } + case EDJE_PART_TYPE_TABLE: + { + Edje_Part_Description_Table *table_to = (Edje_Part_Description_Table*) pdto; + Edje_Part_Description_Table *table_from = (Edje_Part_Description_Table*) pdfrom; + + table_to->table = table_from->table; + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *ext_to = (Edje_Part_Description_External*) pdto; + Edje_Part_Description_External *ext_from = (Edje_Part_Description_External*) pdfrom; + Eina_List *l; + + /* XXX: optimize this, most likely we don't need to remove and add */ + EINA_LIST_FREE(ext_to->external_params, p) + { + _edje_if_string_free(ed, p->name); + if (p->s) + _edje_if_string_free(ed, p->s); + free(p); + } + EINA_LIST_FOREACH(ext_from->external_params, l, p) + { + Edje_External_Param *new_p; + new_p = _alloc(sizeof(Edje_External_Param)); + new_p->name = eina_stringshare_add(p->name); + new_p->type = p->type; + switch (p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + new_p->i = p->i; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + new_p->d = p->d; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + new_p->s = eina_stringshare_add(p->s); + break; + default: + break; + } + ext_to->external_params = eina_list_append(ext_to->external_params, new_p); + } + break; + } + } + +#undef PD_STRING_COPY + + return EINA_TRUE; +} + +#define FUNC_STATE_RELATIVE_DOUBLE(Sub, Value) \ + EAPI double \ + edje_edit_state_##Sub##_relative_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(0); \ + return TO_DOUBLE(pd->Sub.relative_##Value); \ + } \ + EAPI void \ + edje_edit_state_##Sub##_relative_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + pd->Sub.relative_##Value = FROM_DOUBLE(v); \ + edje_object_calc_force(obj); \ + } + +FUNC_STATE_RELATIVE_DOUBLE(rel1, x); +FUNC_STATE_RELATIVE_DOUBLE(rel1, y); +FUNC_STATE_RELATIVE_DOUBLE(rel2, x); +FUNC_STATE_RELATIVE_DOUBLE(rel2, y); + +#define FUNC_STATE_OFFSET_INT(Sub, Value) \ + EAPI int \ + edje_edit_state_##Sub##_offset_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(0); \ + return pd->Sub.offset_##Value; \ + } \ + EAPI void \ + edje_edit_state_##Sub##_offset_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + pd->Sub.offset_##Value = TO_INT(FROM_DOUBLE(v)); \ + edje_object_calc_force(obj); \ + } + +FUNC_STATE_OFFSET_INT(rel1, x); +FUNC_STATE_OFFSET_INT(rel1, y); +FUNC_STATE_OFFSET_INT(rel2, x); +FUNC_STATE_OFFSET_INT(rel2, y); + +#define FUNC_STATE_REL(Sub, Value) \ + EAPI const char * \ + edje_edit_state_##Sub##_to_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + Edje_Real_Part *rel; \ + \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(NULL); \ + \ + if (pd->Sub.id_##Value == -1) return NULL; \ + \ + rel = ed->table_parts[pd->Sub.id_##Value % ed->table_parts_size]; \ + \ + if (rel->part->name) return eina_stringshare_add(rel->part->name); \ + return NULL; \ + } \ + EAPI void \ + edje_edit_state_##Sub##_to_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, const char *to) \ + { \ + Edje_Real_Part *relp; \ + \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(); \ + \ + if (to) \ + { \ + relp = _edje_real_part_get(ed, to); \ + if (!relp) return; \ + pd->Sub.id_##Value = relp->part->id; \ + } \ + else \ + pd->Sub.id_##Value = -1; \ + \ + } +//note after this call edje_edit_part_selected_state_set() to update !! need to fix this +//_edje_part_description_apply(ed, rp, pd->state.name, pd->state.value, "state", 0.1); //Why segfault?? +// edje_object_calc_force(obj);//don't work for redraw + +FUNC_STATE_REL(rel1, x); +FUNC_STATE_REL(rel1, y); +FUNC_STATE_REL(rel2, x); +FUNC_STATE_REL(rel2, y); + +//colors +#define FUNC_COLOR(Code) \ + EAPI void \ + edje_edit_state_##Code##_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + \ + if (r) *r = pd->Code.r; \ + if (g) *g = pd->Code.g; \ + if (b) *b = pd->Code.b; \ + if (a) *a = pd->Code.a; \ + } \ + EAPI void \ + edje_edit_state_##Code##_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + \ + if (r > -1 && r < 256) pd->Code.r = r; \ + if (g > -1 && g < 256) pd->Code.g = g; \ + if (b > -1 && b < 256) pd->Code.b = b; \ + if (a > -1 && a < 256) pd->Code.a = a; \ + \ + edje_object_calc_force(obj); \ + } + +FUNC_COLOR(color); +FUNC_COLOR(color2); + +EAPI void +edje_edit_state_color3_get(Evas_Object *obj, const char *part, const char *state, double value, int *r, int *g, int *b, int *a) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + { + if (r) *r = 0; + if (g) *g = 0; + if (b) *b = 0; + if (a) *a = 0; + return; + } + + txt = (Edje_Part_Description_Text*) pd; + + if (r) *r = txt->text.color3.r; + if (g) *g = txt->text.color3.g; + if (b) *b = txt->text.color3.b; + if (a) *a = txt->text.color3.a; +} + +EAPI void +edje_edit_state_color3_set(Evas_Object *obj, const char *part, const char *state, double value, int r, int g, int b, int a) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return; + + txt = (Edje_Part_Description_Text*) pd; + + if (r > -1 && r < 256) txt->text.color3.r = r; + if (g > -1 && g < 256) txt->text.color3.g = g; + if (b > -1 && b < 256) txt->text.color3.b = b; + if (a > -1 && a < 256) txt->text.color3.a = a; + + edje_object_calc_force(obj); +} + +#define FUNC_STATE_DOUBLE(Class, Value) \ + EAPI double \ + edje_edit_state_##Class##_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(0); \ + return TO_DOUBLE(pd->Class.Value); \ + } \ + EAPI void \ + edje_edit_state_##Class##_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + pd->Class.Value = FROM_DOUBLE(v); \ + edje_object_calc_force(obj); \ + } + +#define FUNC_STATE_INT(Class, Value) \ + EAPI int \ + edje_edit_state_##Class##_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(0); \ + return pd->Class.Value; \ + } \ + EAPI void \ + edje_edit_state_##Class##_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, int v) \ + { \ + eina_error_set(0); \ + GET_PD_OR_RETURN(); \ + pd->Class.Value = v; \ + edje_object_calc_force(obj); \ + } + +FUNC_STATE_DOUBLE(align, x); +FUNC_STATE_DOUBLE(align, y); +FUNC_STATE_INT(min, w); +FUNC_STATE_INT(min, h); +FUNC_STATE_INT(max, w); +FUNC_STATE_INT(max, h); +FUNC_STATE_DOUBLE(aspect, min); +FUNC_STATE_DOUBLE(aspect, max); + +#define FUNC_STATE_DOUBLE_FILL(Class, Type, Value) \ + EAPI double \ + edje_edit_state_fill_##Type##_relative_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(0); \ + \ + switch (rp->part->type) \ + { \ + case EDJE_PART_TYPE_IMAGE: \ + { \ + Edje_Part_Description_Image *img; \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + return TO_DOUBLE(img->image.fill.Class##rel_##Value); \ + } \ + case EDJE_PART_TYPE_PROXY: \ + { \ + Edje_Part_Description_Proxy *pro; \ + \ + pro = (Edje_Part_Description_Proxy*) pd; \ + \ + return TO_DOUBLE(pro->proxy.fill.Class##rel_##Value); \ + } \ + } \ + \ + return 0; \ + } \ + EAPI void \ + edje_edit_state_fill_##Type##_relative_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(); \ + \ + switch (rp->part->type) \ + { \ + case EDJE_PART_TYPE_IMAGE: \ + { \ + Edje_Part_Description_Image *img; \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + img->image.fill.Class##rel_##Value = FROM_DOUBLE(v); \ + \ + break; \ + } \ + case EDJE_PART_TYPE_PROXY: \ + { \ + Edje_Part_Description_Proxy *pro; \ + \ + pro = (Edje_Part_Description_Proxy*) pd; \ + \ + pro->proxy.fill.Class##rel_##Value = FROM_DOUBLE(v); \ + \ + break; \ + } \ + default: \ + return; \ + } \ + \ + edje_object_calc_force(obj); \ + } + +#define FUNC_STATE_INT_FILL(Class, Type, Value) \ + EAPI int \ + edje_edit_state_fill_##Type##_offset_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(0); \ + \ + switch (rp->part->type) \ + { \ + case EDJE_PART_TYPE_IMAGE: \ + { \ + Edje_Part_Description_Image *img; \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + return img->image.fill.Class##abs_##Value; \ + } \ + case EDJE_PART_TYPE_PROXY: \ + { \ + Edje_Part_Description_Proxy *pro; \ + \ + pro = (Edje_Part_Description_Proxy*) pd; \ + \ + return pro->proxy.fill.Class##abs_##Value; \ + } \ + } \ + return 0; \ + } \ + EAPI void \ + edje_edit_state_fill_##Type##_offset_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(); \ + \ + switch (rp->part->type) \ + { \ + case EDJE_PART_TYPE_IMAGE: \ + { \ + Edje_Part_Description_Image *img; \ + \ + img = (Edje_Part_Description_Image*) pd; \ + \ + img->image.fill.Class##abs_##Value = FROM_DOUBLE(v); \ + return; \ + } \ + case EDJE_PART_TYPE_PROXY: \ + { \ + Edje_Part_Description_Proxy *pro; \ + \ + pro = (Edje_Part_Description_Proxy*) pd; \ + \ + pro->proxy.fill.Class##abs_##Value = FROM_DOUBLE(v); \ + return; \ + } \ + default: \ + return; \ + } \ + \ + edje_object_calc_force(obj); \ + } + +FUNC_STATE_DOUBLE_FILL(pos_, origin, x); +FUNC_STATE_DOUBLE_FILL(pos_, origin, y); +FUNC_STATE_INT_FILL(pos_, origin, x); +FUNC_STATE_INT_FILL(pos_, origin, y); + +FUNC_STATE_DOUBLE_FILL(, size, x); +FUNC_STATE_DOUBLE_FILL(, size, y); +FUNC_STATE_INT_FILL(, size, x); +FUNC_STATE_INT_FILL(, size, y); + +EAPI Eina_Bool +edje_edit_state_visible_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + //printf("Get state visible flag of part: %s state: %s\n", part, state); + return pd->visible; +} + +EAPI void +edje_edit_state_visible_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool visible) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(); + //printf("Set state visible flag of part: %s state: %s to: %d\n", part, state, visible); + if (visible) pd->visible = 1; + else pd->visible = 0; + edje_object_calc_force(obj); +} + +EAPI unsigned char +edje_edit_state_aspect_pref_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(0); + + //printf("GET ASPECT_PREF of state '%s' [%d]\n", state, pd->aspect.prefer); + return pd->aspect.prefer; +} + +EAPI void +edje_edit_state_aspect_pref_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char pref) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(); + + //printf("SET ASPECT_PREF of state '%s' [to: %d]\n", state, pref); + pd->aspect.prefer = pref; +} + +EAPI const char* +edje_edit_state_color_class_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + //printf("Get ColorClass of part: %s state: %s\n", part, state); + return eina_stringshare_add(pd->color_class); +} + +EAPI void +edje_edit_state_color_class_set(Evas_Object *obj, const char *part, const char *state, double value, const char *color_class) +{ + eina_error_set(0); + + GET_PD_OR_RETURN(); + //printf("Set ColorClass of part: %s state: %s [to: %s]\n", part, state, color_class); + _edje_if_string_free(ed, pd->color_class); + pd->color_class = (char*)eina_stringshare_add(color_class); +} + +EAPI const Eina_List * +edje_edit_state_external_params_list_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_External *external; + + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + return NULL; + + external = (Edje_Part_Description_External *) pd; + + return external->external_params; +} + +EAPI Eina_Bool +edje_edit_state_external_param_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type *type, void **val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + return EINA_FALSE; + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (type) *type = p->type; + if (val) + switch (p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + *val = &p->i; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + *val = &p->d; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + *val = (void *)p->s; + break; + default: + ERR("unknown external parameter type '%d'", p->type); + } + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_int_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int *val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + if (val) *val = 0; + return EINA_FALSE; + } + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (p->type != EDJE_EXTERNAL_PARAM_TYPE_INT) + return EINA_FALSE; + if (val) + *val = p->i; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_bool_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool *val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + if (val) *val = 0; + return EINA_FALSE; + } + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (p->type != EDJE_EXTERNAL_PARAM_TYPE_BOOL) + return EINA_FALSE; + if (val) + *val = p->i; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_double_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double *val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + if (val) *val = 0; + return EINA_FALSE; + } + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (p->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + if (val) + *val = p->d; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_string_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + if (val) *val = NULL; + return EINA_FALSE; + } + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (p->type != EDJE_EXTERNAL_PARAM_TYPE_STRING) + return EINA_FALSE; + if (val) + *val = p->s; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_choice_get(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char **val) +{ + Edje_Part_Description_External *external; + Edje_External_Param *p; + Eina_List *l; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + if (val) *val = NULL; + return EINA_FALSE; + } + + external = (Edje_Part_Description_External *) pd; + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + if (p->type != EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + return EINA_FALSE; + if (val) + *val = p->s; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Edje_External_Param_Type type, ...) +{ + va_list ap; + Eina_List *l; + Edje_Part_Description_External *external; + Edje_External_Param *p = NULL, old_p = { 0, 0, 0, 0, 0 }; + int found = 0; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + return EINA_FALSE; + + external = (Edje_Part_Description_External *) pd; + + va_start(ap, type); + + EINA_LIST_FOREACH(external->external_params, l, p) + if (!strcmp(p->name, param)) + { + found = 1; + old_p = *p; + break; + } + + if (!found) + { + p = _alloc(sizeof(Edje_External_Param)); + if (!p) + { + va_end(ap); + return EINA_FALSE; + } + p->name = eina_stringshare_add(param); + } + + p->type = type; + p->i = 0; + p->d = 0; + _edje_if_string_free(ed, p->s); + p->s = NULL; + + switch (type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + p->i = (int)va_arg(ap, int); + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + p->d = (double)va_arg(ap, double); + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + p->s = eina_stringshare_add((const char *)va_arg(ap, char *)); + break; + default: + ERR("unknown external parameter type '%d'", type); + va_end(ap); + if (!found) free(p); + else *p = old_p; + return EINA_FALSE; + } + + va_end(ap); + + //FIXME: + //For now, we're just setting the value if the state is the selected state. + //This is a conceptual error and is incoherent with the rest of the API! + { + const char *sname; + double svalue; + sname = edje_edit_part_selected_state_get(obj, part, &svalue); + if (!strcmp(state, sname) && svalue == value) + if (!edje_object_part_external_param_set(obj, part, p)) + if ((type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) || + (type == EDJE_EXTERNAL_PARAM_TYPE_STRING)) + { + _edje_if_string_free(ed, p->s); + if (!found) free(p); + else *p = old_p; + eina_stringshare_del(sname); + return EINA_FALSE; + } + eina_stringshare_del(sname); + } + + if (!found) + external->external_params = eina_list_append(external->external_params, p); + + _edje_external_parsed_params_free(rp->swallowed_object, + rp->param1.external_params); + rp->param1.external_params = \ + _edje_external_params_parse(rp->swallowed_object, + external->external_params); + + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_state_external_param_int_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, int val) +{ + eina_error_set(0); + return edje_edit_state_external_param_set(obj, part, state, value, param, EDJE_EXTERNAL_PARAM_TYPE_INT, val); +} + +EAPI Eina_Bool +edje_edit_state_external_param_bool_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, Eina_Bool val) +{ + eina_error_set(0); + return edje_edit_state_external_param_set(obj, part, state, value, param, EDJE_EXTERNAL_PARAM_TYPE_BOOL, (int)val); +} + +EAPI Eina_Bool +edje_edit_state_external_param_double_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, double val) +{ + eina_error_set(0); + return edje_edit_state_external_param_set(obj, part, state, value, param, EDJE_EXTERNAL_PARAM_TYPE_DOUBLE, val); +} + +EAPI Eina_Bool +edje_edit_state_external_param_string_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val) +{ + eina_error_set(0); + return edje_edit_state_external_param_set(obj, part, state, value, param, EDJE_EXTERNAL_PARAM_TYPE_STRING, val); +} + +EAPI Eina_Bool +edje_edit_state_external_param_choice_set(Evas_Object *obj, const char *part, const char *state, double value, const char *param, const char *val) +{ + eina_error_set(0); + return edje_edit_state_external_param_set(obj, part, state, value, param, EDJE_EXTERNAL_PARAM_TYPE_CHOICE, val); +} + +/**************/ +/* TEXT API */ +/**************/ + +EAPI const char * +edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return NULL; + + txt = (Edje_Part_Description_Text *) pd; + //printf("GET TEXT of state: %s\n", state); + + return eina_stringshare_add(edje_string_get(&txt->text.text)); +} + +EAPI void +edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, double value, const char *text) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + //printf("SET TEXT of state: %s\n", state); + + if (!text) return; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return; + + txt = (Edje_Part_Description_Text *) pd; + + _edje_if_string_free(ed, txt->text.text.str); + txt->text.text.str = (char *)eina_stringshare_add(text); + txt->text.text.id = 0; + + edje_object_calc_force(obj); +} + +EAPI int +edje_edit_state_text_size_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(-1); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return -1; + + txt = (Edje_Part_Description_Text *) pd; + //printf("GET TEXT_SIZE of state: %s [%d]\n", state, pd->text.size); + return txt->text.size; +} + +EAPI void +edje_edit_state_text_size_set(Evas_Object *obj, const char *part, const char *state, double value, int size) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + //printf("SET TEXT_SIZE of state: %s [%d]\n", state, size); + + if (size < 0) return; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return; + + txt = (Edje_Part_Description_Text *) pd; + + txt->text.size = size; + + edje_object_calc_force(obj); +} + +#define FUNC_TEXT_DOUBLE(Name, Value) \ + EAPI double \ + edje_edit_state_text_##Name##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + Edje_Part_Description_Text *txt; \ + \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(0); \ + \ + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && \ + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) \ + return 0; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + return TO_DOUBLE(txt->text.Value); \ + } \ + EAPI void \ + edje_edit_state_text_##Name##_set(Evas_Object *obj, const char *part, const char *state, double value, double v) \ + { \ + Edje_Part_Description_Text *txt; \ + \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(); \ + \ + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && \ + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) \ + return; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + txt->text.Value = FROM_DOUBLE(v); \ + edje_object_calc_force(obj); \ + } \ + +FUNC_TEXT_DOUBLE(align_x, align.x); +FUNC_TEXT_DOUBLE(align_y, align.y); +FUNC_TEXT_DOUBLE(elipsis, elipsis); + +#define FUNC_TEXT_BOOL_FIT(Value) \ + EAPI Eina_Bool \ + edje_edit_state_text_fit_##Value##_get(Evas_Object *obj, const char *part, const char *state, double value) \ + { \ + Edje_Part_Description_Text *txt; \ + \ + eina_error_set(0); \ + \ + GET_PD_OR_RETURN(EINA_FALSE); \ + \ + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && \ + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) \ + return EINA_FALSE; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + return txt->text.fit_##Value; \ + } \ + EAPI void \ + edje_edit_state_text_fit_##Value##_set(Evas_Object *obj, const char *part, const char *state, double value, Eina_Bool fit) \ + { \ + Edje_Part_Description_Text *txt; \ + \ + GET_PD_OR_RETURN(); \ + \ + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && \ + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) \ + return; \ + \ + txt = (Edje_Part_Description_Text *) pd; \ + txt->text.fit_##Value = fit ? 1 : 0; \ + edje_object_calc_force(obj); \ + } + +FUNC_TEXT_BOOL_FIT(x); +FUNC_TEXT_BOOL_FIT(y); + +EAPI Eina_List * +edje_edit_fonts_list_get(Evas_Object *obj) +{ + Eina_Iterator *it; + Eina_List *fonts = NULL; + Edje_Font_Directory_Entry *f; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->fonts) return NULL; + + it = eina_hash_iterator_data_new(ed->file->fonts); + if (!it) return NULL; + + EINA_ITERATOR_FOREACH(it, f) + fonts = eina_list_append(fonts, eina_stringshare_add(f->entry)); + + eina_iterator_free(it); + + return fonts; +} + +EAPI Eina_Bool +edje_edit_font_add(Evas_Object *obj, const char* path, const char* alias) +{ + char entry[PATH_MAX]; + char *new_path; + struct stat st; + Edje_Font_Directory_Entry *fnt; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + INF("ADD FONT: %s", path); + + if (!path) return EINA_FALSE; + if (stat(path, &st) || !S_ISREG(st.st_mode)) return EINA_FALSE; + if (!ed->file) return EINA_FALSE; + if (!ed->path) return EINA_FALSE; + + /* Alias */ + if (alias) + { + if ((new_path = strrchr(path, '/'))) new_path ++; + else new_path = (char *)path; + } + else + { + if ((alias = strrchr(path, '/'))) alias ++; + else alias = (char *)path; + new_path = (char *)alias; + } + snprintf(entry, sizeof(entry), "edje/fonts/%s", alias); + + /* Initializing a new font hash, if no exist */ + if (!ed->file->fonts) + { + ed->file->fonts = eina_hash_string_small_new(NULL); + if (!ed->file->fonts) return EINA_FALSE; + } + + /* Check if exists */ + fnt = eina_hash_find(ed->file->fonts, alias); + if (fnt) + return EINA_FALSE; + + /* Create Edje_Font_Directory_Entry */ + fnt = _alloc(sizeof(Edje_Font_Directory_Entry)); + if (!fnt) + { + ERR("Unable to alloc font entry part \"%s\"", alias); + return EINA_FALSE; + } + fnt->file = eina_stringshare_add(new_path); + fnt->entry = eina_stringshare_add(alias); + + eina_hash_direct_add(ed->file->fonts, fnt->entry, fnt); + + /* Import font */ + if (!_edje_import_font_file(ed, path, entry)) + { + eina_hash_del(ed->file->fonts, fnt->entry, fnt); + eina_stringshare_del(fnt->file); + eina_stringshare_del(fnt->entry); + return EINA_FALSE; + } + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_font_del(Evas_Object *obj, const char* alias) +{ + Edje_Font_Directory_Entry *fnt; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + INF("DEL FONT: %s", alias); + + if (!alias) return EINA_FALSE; + if (!ed->file) return EINA_FALSE; + if (!ed->path) return EINA_FALSE; + + fnt = eina_hash_find(ed->file->fonts, alias); + if (!fnt) + { + WRN("Unable to find font entry part \"%s\"", alias); + return EINA_FALSE; + } + + /* Erase font to edje file */ + { + char entry[PATH_MAX]; + Eet_File *eetf; + + /* open the eet file */ + eetf = eet_open(ed->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Unable to open \"%s\" for writing output", ed->path); + return EINA_FALSE; + } + + snprintf(entry, sizeof(entry), "edje/fonts/%s", alias); + + if (eet_delete(eetf, entry) <= 0) + { + ERR("Unable to delete \"%s\" font entry", entry); + eet_close(eetf); + return EINA_FALSE; + } + + /* write the edje_file */ + if (!_edje_edit_edje_file_save(eetf, ed->file)) + { + eet_close(eetf); + return EINA_FALSE; + } + eet_close(eetf); + } + + eina_hash_del(ed->file->fonts, alias, fnt); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_font_path_get(Evas_Object *obj, const char *alias) +{ + Eina_Iterator *it; + Edje_Font_Directory_Entry *f; + const char *str = NULL; + + eina_error_set(0); + + if (!alias) return NULL; + GET_ED_OR_RETURN(NULL); + + if (!ed->file || !ed->file->fonts) return NULL; + + it = eina_hash_iterator_data_new(ed->file->fonts); + if (!it) return NULL; + + EINA_ITERATOR_FOREACH(it, f) + if (!strcmp(f->entry, alias)) + { + str = f->file; + break; + } + + eina_iterator_free(it); + return eina_stringshare_add(str); +} + +EAPI const char * +edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return NULL; + + txt = (Edje_Part_Description_Text*) pd; + + return eina_stringshare_add(edje_string_get(&txt->text.font)); +} + +EAPI void +edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, double value, const char *font) +{ + Edje_Part_Description_Text *txt; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return; + + txt = (Edje_Part_Description_Text*) pd; + + _edje_if_string_free(ed, txt->text.font.str); + txt->text.font.str = (char *)eina_stringshare_add(font); + txt->text.font.id = 0; + + edje_object_calc_force(obj); +} + +EAPI Edje_Text_Effect +edje_edit_part_effect_get(Evas_Object *obj, const char *part) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(0); + + //printf("GET EFFECT of part: %s\n", part); + return rp->part->effect; +} + +EAPI void +edje_edit_part_effect_set(Evas_Object *obj, const char *part, Edje_Text_Effect effect) +{ + eina_error_set(0); + + GET_RP_OR_RETURN(); + + //printf("SET EFFECT of part: %s [%d]\n", part, effect); + rp->part->effect = effect; + + edje_object_calc_force(obj); +} + +/****************/ +/* IMAGES API */ +/****************/ + +EAPI Eina_List * +edje_edit_images_list_get(Evas_Object *obj) +{ + Eina_List *images = NULL; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->file) return NULL; + if (!ed->file->image_dir) return NULL; + + //printf("GET IMAGES LIST for %s\n", ed->file->path); + for (i = 0; i < ed->file->image_dir->entries_count; ++i) + images = eina_list_append(images, + eina_stringshare_add(ed->file->image_dir->entries[i].entry)); + + return images; +} + +EAPI Eina_Bool +edje_edit_image_add(Evas_Object *obj, const char* path) +{ + Edje_Image_Directory_Entry *de; + unsigned int i; + int free_id = -1; + char *name; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!path) return EINA_FALSE; + if (!ed->file) return EINA_FALSE; + if (!ed->path) return EINA_FALSE; + + /* Create Image_Directory if not exist */ + if (!ed->file->image_dir) + { + ed->file->image_dir = _alloc(sizeof(Edje_Image_Directory)); + if (!ed->file->image_dir) return EINA_FALSE; + } + + /* Image name */ + if ((name = strrchr(path, '/'))) name++; + else name = (char *)path; + + /* Loop trough image directory to find if image exist */ + for (i = 0; i < ed->file->image_dir->entries_count; ++i) + { + de = ed->file->image_dir->entries + i; + + if (!de->entry) + free_id = i; + else if (!strcmp(name, de->entry)) + return EINA_FALSE; + } + + if (free_id == -1) + { + Edje_Image_Directory_Entry *tmp; + unsigned int count; + + count = ed->file->image_dir->entries_count + 1; + + tmp = realloc(ed->file->image_dir->entries, + sizeof (Edje_Image_Directory_Entry) * count); + if (!tmp) return EINA_FALSE; + + ed->file->image_dir->entries = tmp; + free_id = ed->file->image_dir->entries_count; + ed->file->image_dir->entries_count = count; + } + + /* Set Image Entry */ + de = ed->file->image_dir->entries + free_id; + de->entry = eina_stringshare_add(name); + de->id = free_id; + de->source_type = 1; + de->source_param = 1; + + /* Import image */ + if (!_edje_import_image_file(ed, path, free_id)) + { + eina_stringshare_del(de->entry); + de->entry = NULL; + return EINA_FALSE; + } + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_image_del(Evas_Object *obj, const char* name) +{ + Edje_Image_Directory_Entry *de; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!name) return EINA_FALSE; + if (!ed->file) return EINA_FALSE; + if (!ed->path) return EINA_FALSE; + + /* Create Image_Directory if not exist */ + if (!ed->file->image_dir) + goto invalid_image; + + return EINA_TRUE; + + for (i = 0; i < ed->file->image_dir->entries_count; ++i) + { + de = ed->file->image_dir->entries + i; + + if (de->entry + && !strcmp(name, de->entry)) + break; + } + + if (i == ed->file->image_dir->entries_count) + goto invalid_image; + + { + char entry[PATH_MAX]; + Eet_File *eetf; + + /* open the eet file */ + eetf = eet_open(ed->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Unable to open \"%s\" for writing output", ed->path); + return EINA_FALSE; + } + + snprintf(entry, sizeof(entry), "edje/images/%i", de->id); + + if (eet_delete(eetf, entry) <= 0) + { + ERR("Unable to delete \"%s\" font entry", entry); + eet_close(eetf); + return EINA_FALSE; + } + + /* write the edje_file */ + if (!_edje_edit_edje_file_save(eetf, ed->file)) + { + eet_close(eetf); + return EINA_FALSE; + } + + eet_close(eetf); + } + + _edje_if_string_free(ed, de->entry); + de->entry = NULL; + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; + +invalid_image: + WRN("Unable to find image entry part \"%s\"", name); + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_edit_image_data_add(Evas_Object *obj, const char *name, int id) +{ + Edje_Image_Directory_Entry *de; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + if (!name) return EINA_FALSE; + if (!ed->file) return EINA_FALSE; + if (!ed->path) return EINA_FALSE; + + /* Create Image_Directory if not exist */ + if (!ed->file->image_dir) + { + ed->file->image_dir = _alloc(sizeof(Edje_Image_Directory)); + if (!ed->file->image_dir) return EINA_FALSE; + } + + /* Loop trough image directory to find if image exist */ + if (id < 0) id = - id - 1; + if ((unsigned int) id >= ed->file->image_dir->entries_count) return EINA_FALSE; + + de = ed->file->image_dir->entries + id; + eina_stringshare_replace(&de->entry, name); + de->source_type = 1; + de->source_param = 1; + + return EINA_TRUE; +} + +EAPI int +edje_edit_image_id_get(Evas_Object *obj, const char *image_name) +{ + eina_error_set(0); + + GET_EED_OR_RETURN(-1); + + return _edje_image_id_find(eed, image_name); +} + +EAPI Edje_Edit_Image_Comp +edje_edit_image_compression_type_get(Evas_Object *obj, const char *image) +{ + Edje_Image_Directory_Entry *de = NULL; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(-1); + + if (!ed->file) return -1; + if (!ed->file->image_dir) return -1; + + for (i = 0; i < ed->file->image_dir->entries_count; ++i) + { + de = ed->file->image_dir->entries + i; + + if (de->entry + && !strcmp(image, de->entry)) + break; + } + + if (i == ed->file->image_dir->entries_count) return -1; + + switch(de->source_type) + { + case EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT: + if (de->source_param == 0) // RAW + return EDJE_EDIT_IMAGE_COMP_RAW; + else // COMP + return EDJE_EDIT_IMAGE_COMP_COMP; + break; + case EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY: // LOSSY + return EDJE_EDIT_IMAGE_COMP_LOSSY; + break; + case EDJE_IMAGE_SOURCE_TYPE_EXTERNAL: // USER + return EDJE_EDIT_IMAGE_COMP_USER; + break; + } + + return -1; +} + +EAPI int +edje_edit_image_compression_rate_get(Evas_Object *obj, const char *image) +{ + Edje_Image_Directory_Entry *de; + unsigned int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(-1); + + // Gets the Image Entry + for (i = 0; i < ed->file->image_dir->entries_count; ++i) + { + de = ed->file->image_dir->entries + i; + if (de->entry + && !strcmp(de->entry, image)) + break; + } + + if (i == ed->file->image_dir->entries_count) return -1; + if (de->source_type != EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY) return -2; + + return de->source_param; +} + +EAPI const char * +edje_edit_state_image_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Image *img; + const char *image; + + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return NULL; + + img = (Edje_Part_Description_Image *) pd; + + image = _edje_image_name_find(eed, img->image.id); + if (!image) return NULL; + + //printf("GET IMAGE for %s [%s]\n", state, image); + return eina_stringshare_add(image); +} + +EAPI void +edje_edit_state_image_set(Evas_Object *obj, const char *part, const char *state, double value, const char *image) +{ + Edje_Part_Description_Image *img; + int id; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if (!image) return; + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return; + + id = _edje_image_id_find(eed, image); + //printf("SET IMAGE for %s [%s]\n", state, image); + + img = (Edje_Part_Description_Image *) pd; + + if (id > -1) img->image.id = id; + + edje_object_calc_force(obj); +} + +EAPI Eina_List * +edje_edit_state_tweens_list_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Image *img; + Eina_List *tweens = NULL; + const char *name; + unsigned int i; + + eina_error_set(0); + + GET_PD_OR_RETURN(NULL); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return NULL; + + img = (Edje_Part_Description_Image *) pd; + + for (i = 0; i < img->image.tweens_count; ++i) + { + name = _edje_image_name_find(eed, img->image.tweens[i]->id); + //printf(" t: %s\n", name); + tweens = eina_list_append(tweens, eina_stringshare_add(name)); + } + + return tweens; +} + +EAPI Eina_Bool +edje_edit_state_tween_add(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) +{ + Edje_Part_Description_Image *img; + Edje_Part_Image_Id **tmp; + Edje_Part_Image_Id *i; + int id; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return EINA_FALSE; + + id = _edje_image_id_find(eed, tween); + if (id < EINA_FALSE) return 0; + + /* alloc Edje_Part_Image_Id */ + i = _alloc(sizeof(Edje_Part_Image_Id)); + if (!i) return EINA_FALSE; + i->id = id; + + img = (Edje_Part_Description_Image *) pd; + + /* add to tween list */ + tmp = realloc(img->image.tweens, + sizeof (Edje_Part_Image_Id*) * img->image.tweens_count); + if (!tmp) + { + free(i); + return EINA_FALSE; + } + + tmp[img->image.tweens_count++] = i; + img->image.tweens = tmp; + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_state_tween_del(Evas_Object *obj, const char *part, const char *state, double value, const char *tween) +{ + Edje_Part_Description_Image *img; + unsigned int i; + int search; + + eina_error_set(0); + + GET_PD_OR_RETURN(EINA_FALSE); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return EINA_FALSE; + + img = (Edje_Part_Description_Image *) pd; + + if (!img->image.tweens_count) return EINA_FALSE; + + search = _edje_image_id_find(eed, tween); + if (search < 0) return EINA_FALSE; + + for (i = 0; i < img->image.tweens_count; ++i) + { + if (img->image.tweens[i]->id == search) + { + img->image.tweens_count--; + free(img->image.tweens[i]); + memmove(img->image.tweens + i, + img->image.tweens + i + 1, + sizeof (Edje_Part_Description_Image*) * (img->image.tweens_count - i)); + return EINA_TRUE; + } + } + return EINA_FALSE; +} + +EAPI void +edje_edit_state_image_border_get(Evas_Object *obj, const char *part, const char *state, double value, int *l, int *r, int *t, int *b) +{ + Edje_Part_Description_Image *img; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + { + if (l) *l = 0; + if (r) *r = 0; + if (t) *t = 0; + if (b) *b = 0; + return; + } + + img = (Edje_Part_Description_Image *) pd; + + //printf("GET IMAGE_BORDER of state '%s'\n", state); + + if (l) *l = img->image.border.l; + if (r) *r = img->image.border.r; + if (t) *t = img->image.border.t; + if (b) *b = img->image.border.b; +} + +EAPI void +edje_edit_state_image_border_set(Evas_Object *obj, const char *part, const char *state, double value, int l, int r, int t, int b) +{ + Edje_Part_Description_Image *img; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return; + + img = (Edje_Part_Description_Image *) pd; + + //printf("SET IMAGE_BORDER of state '%s'\n", state); + + if (l > -1) img->image.border.l = l; + if (r > -1) img->image.border.r = r; + if (t > -1) img->image.border.t = t; + if (b > -1) img->image.border.b = b; + + edje_object_calc_force(obj); +} + +EAPI unsigned char +edje_edit_state_image_border_fill_get(Evas_Object *obj, const char *part, const char *state, double value) +{ + Edje_Part_Description_Image *img; + + eina_error_set(0); + + GET_PD_OR_RETURN(0); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return 0; + + img = (Edje_Part_Description_Image *) pd; + + if (img->image.border.no_fill == 0) return 1; + else if (img->image.border.no_fill == 1) return 0; + else if (img->image.border.no_fill == 2) return 2; + return 0; +} + +EAPI void +edje_edit_state_image_border_fill_set(Evas_Object *obj, const char *part, const char *state, double value, unsigned char fill) +{ + Edje_Part_Description_Image *img; + + eina_error_set(0); + + GET_PD_OR_RETURN(); + + if (rp->part->type != EDJE_PART_TYPE_IMAGE) + return; + + img = (Edje_Part_Description_Image *) pd; + + if (fill == 0) img->image.border.no_fill = 1; + else if (fill == 1) img->image.border.no_fill = 0; + else if (fill == 2) img->image.border.no_fill = 2; + + edje_object_calc_force(obj); +} + +/******************/ +/* PROGRAMS API */ +/******************/ +static int +_edje_program_id_find(Edje_Edit *eed, const char *program) +{ + Edje_Program *epr; + int i; + + for (i = 0; i < eed->base.table_programs_size; i++) + { + epr = eed->base.table_programs[i]; + if (epr->name && !strcmp(epr->name, program)) + return epr->id; + } + return -1; +} + +static Edje_Program * +_edje_program_get_byname(Evas_Object *obj, const char *prog_name) +{ + Edje_Program *epr; + int i; + + GET_ED_OR_RETURN(NULL); + + if (!prog_name) return NULL; + + for (i = 0; i < ed->table_programs_size; i++) + { + epr = ed->table_programs[i]; + if ((epr->name) && (strcmp(epr->name, prog_name) == 0)) + return epr; + } + return NULL; +} + +EAPI Eina_List * +edje_edit_programs_list_get(Evas_Object *obj) +{ + Eina_List *progs = NULL; + int i; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + //printf("EE: Found %d programs\n", ed->table_programs_size); + + for (i = 0; i < ed->table_programs_size; i++) + { + Edje_Program *epr; + + epr = ed->table_programs[i]; + /* XXX: bad, we miss programs this way, but since you can't access + * them in any way without a name, better ignore them. */ + if (!epr->name) continue; + progs = eina_list_append(progs, eina_stringshare_add(epr->name)); + } + + return progs; +} + +EAPI Eina_Bool +edje_edit_program_add(Evas_Object *obj, const char *name) +{ + Edje_Program *epr; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + + //printf("ADD PROGRAM [new name: %s]\n", name); + + //Check if program already exists + if (_edje_program_get_byname(obj, name)) + return EINA_FALSE; + + //Alloc Edje_Program or return + epr = _alloc(sizeof(Edje_Program)); + if (!epr) return EINA_FALSE; + + //Add program to group + // pc = ed->collection; + + /* By default, source and signal are empty, so they fill in nocmp category */ + ed->collection->programs.nocmp = realloc(ed->collection->programs.nocmp, + sizeof (Edje_Program*) * (ed->collection->programs.nocmp_count + 1)); + ed->collection->programs.nocmp[ed->collection->programs.nocmp_count++] = epr; + + //Init Edje_Program + epr->id = ed->table_programs_size; + epr->name = eina_stringshare_add(name); + epr->signal = NULL; + epr->source = NULL; + epr->filter.part = NULL; + epr->filter.state = NULL; + epr->in.from = 0.0; + epr->in.range = 0.0; + epr->action = 0; + epr->state = NULL; + epr->value = 0.0; + epr->state2 = NULL; + epr->value2 = 0.0; + epr->tween.mode = 1; + epr->tween.time = ZERO; + epr->targets = NULL; + epr->after = NULL; + + + //Update table_programs + ed->table_programs_size++; + ed->table_programs = realloc(ed->table_programs, + sizeof(Edje_Program *) * ed->table_programs_size); + ed->table_programs[epr->id % ed->table_programs_size] = epr; + + //Update patterns + _edje_programs_patterns_clean(ed); + _edje_programs_patterns_init(ed); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_del(Evas_Object *obj, const char *prog) +{ + Eina_List *l, *l_next; + Edje_Program_Target *prt; + Edje_Program_After *pa; + Edje_Program *p; + Program_Script *ps, *old_ps; + int id, i; + int old_id = -1; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + //pc = ed->collection; + + //Remove program from programs list + id = epr->id; + _edje_program_remove(ed->collection, epr); + + /* fix table program */ + if (epr->id != ed->table_programs_size - 1) + { + /* If the removed program is not the last in the list/table, + * put the last one in its place and update references to it later */ + ed->table_programs[epr->id] = ed->table_programs[ed->table_programs_size - 1]; + old_id = ed->table_programs_size - 1; + ed->table_programs[epr->id]->id = epr->id; + } + + ps = eina_hash_find(eed->program_scripts, &id); + old_ps = eina_hash_find(eed->program_scripts, &old_id); + if (old_ps) + { + if (!ps) + { + ps = _alloc(sizeof(Program_Script)); + ps->id = id; + eina_hash_add(eed->program_scripts, &id, ps); + } + else + { + free(ps->code); + free(ps->processed); + ps->processed = NULL; + ps->delete_me = EINA_FALSE; + } + ps->code = old_ps->code; + old_ps->code = NULL; + free(old_ps->processed); + old_ps->processed = NULL; + ps->dirty = EINA_TRUE; + old_ps->dirty = EINA_FALSE; + old_ps->delete_me = EINA_TRUE; + } + else if (ps) + { + ps->dirty = EINA_FALSE; + ps->delete_me = EINA_TRUE; + } + + //Free Edje_Program + _edje_if_string_free(ed, epr->name); + _edje_if_string_free(ed, epr->signal); + _edje_if_string_free(ed, epr->source); + _edje_if_string_free(ed, epr->filter.part); + _edje_if_string_free(ed, epr->filter.state); + _edje_if_string_free(ed, epr->state); + _edje_if_string_free(ed, epr->state2); + + EINA_LIST_FREE(epr->targets, prt) + free(prt); + EINA_LIST_FREE(epr->after, pa) + free(pa); + free(epr); + + ed->table_programs_size--; + ed->table_programs = realloc(ed->table_programs, + sizeof(Edje_Program *) * ed->table_programs_size); + + //We also update all other programs that point to old_id and id + for (i = 0; i < ed->table_programs_size; i++) + { + p = ed->table_programs[i]; + + /* check in afters */ + EINA_LIST_FOREACH_SAFE(p->after, l, l_next, pa) + { + if (pa->id == old_id) + pa->id = id; + else if (pa->id == id) + { + p->after = eina_list_remove_list(p->after, l); + free(pa); + } + } + /* check in targets */ + if (p->action == EDJE_ACTION_TYPE_ACTION_STOP) + { + Edje_Program_Target *pt; + + EINA_LIST_FOREACH_SAFE(p->targets, l, l_next, pt) + { + if (pt->id == old_id) + pt->id = id; + else if (pt->id == id) + { + p->targets = eina_list_remove_list(p->targets, l); + free(pt); + } + } + } + } + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_exist(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_run(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + _edje_program_run(ed, epr, 0, "", ""); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_name_set(Evas_Object *obj, const char *prog, const char* new_name) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (!new_name) return EINA_FALSE; + + if (_edje_program_get_byname(obj, new_name)) return EINA_FALSE; + + //printf("SET NAME for program: %s [new name: %s]\n", prog, new_name); + + _edje_if_string_free(ed, epr->name); + epr->name = eina_stringshare_add(new_name); + + _edje_edit_flag_script_dirty(eed, EINA_TRUE); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_source_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->source) return NULL; + //printf("GET SOURCE for program: %s [%s]\n", prog, epr->source); + return eina_stringshare_add(epr->source); +} + +EAPI Eina_Bool +edje_edit_program_source_set(Evas_Object *obj, const char *prog, const char *source) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (!source) return EINA_FALSE; + + /* Remove from program array */ + _edje_program_remove(ed->collection, epr); + _edje_if_string_free(ed, epr->source); + + /* Insert it back */ + epr->source = eina_stringshare_add(source); + _edje_program_insert(ed->collection, epr); + + //Update patterns + _edje_programs_patterns_clean(ed); + _edje_programs_patterns_init(ed); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_filter_part_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->filter.part) return NULL; + return eina_stringshare_add(epr->filter.part); +} + +EAPI Eina_Bool +edje_edit_program_filter_part_set(Evas_Object *obj, const char *prog, const char *filter_part) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (!filter_part) return EINA_FALSE; + + _edje_if_string_free(ed, epr->filter.part); + epr->filter.part = eina_stringshare_add(filter_part); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_filter_state_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->filter.state) return NULL; + return eina_stringshare_add(epr->filter.state); +} + +EAPI Eina_Bool +edje_edit_program_filter_state_set(Evas_Object *obj, const char *prog, const char *filter_state) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (!filter_state) return EINA_FALSE; + + _edje_if_string_free(ed, epr->filter.state); + epr->filter.state = eina_stringshare_add(filter_state); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_signal_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->signal) return NULL; + //printf("GET SIGNAL for program: %s [%s]\n", prog, epr->signal); + return eina_stringshare_add(epr->signal); +} + +EAPI Eina_Bool +edje_edit_program_signal_set(Evas_Object *obj, const char *prog, const char *sig) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (!sig) return EINA_FALSE; + + /* Remove from program array */ + _edje_program_remove(ed->collection, epr); + _edje_if_string_free(ed, epr->signal); + + /* Insert it back */ + epr->signal = eina_stringshare_add(sig); + _edje_program_insert(ed->collection, epr); + + //Update patterns + _edje_programs_patterns_clean(ed); + _edje_programs_patterns_init(ed); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_state_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->state) return NULL; + //printf("GET STATE for program: %s [%s %.2f]\n", prog, epr->state, epr->value); + return eina_stringshare_add(epr->state); +} + +EAPI Eina_Bool +edje_edit_program_state_set(Evas_Object *obj, const char *prog, const char *state) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET STATE for program: %s\n", prog); + + _edje_if_string_free(ed, epr->state); + epr->state = eina_stringshare_add(state); + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_state2_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + if (!epr->state2) return NULL; + //printf("GET STATE2 for program: %s [%s %.2f]\n", prog, epr->state2, epr->value2); + return eina_stringshare_add(epr->state2); +} + +EAPI Eina_Bool +edje_edit_program_state2_set(Evas_Object *obj, const char *prog, const char *state2) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET STATE2 for program: %s\n", prog); + + _edje_if_string_free(ed, epr->state2); + epr->state2 = eina_stringshare_add(state2); + + return EINA_TRUE; +} + +EAPI double +edje_edit_program_value_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(-1); + + //printf("GET VALUE for program: %s [%s %.2f]\n", prog, epr->state, epr->value); + return epr->value; +} + +EAPI Eina_Bool +edje_edit_program_value_set(Evas_Object *obj, const char *prog, double value) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET VALUE for program: %s [%.2f]\n", prog, value); + epr->value = value; + return EINA_TRUE; +} + +EAPI double +edje_edit_program_value2_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(-1); + + //printf("GET VALUE2 for program: %s [%s %.2f]\n", prog, epr->state2, epr->value2); + return epr->value2; +} + +EAPI Eina_Bool +edje_edit_program_value2_set(Evas_Object *obj, const char *prog, double value) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET VALUE for program: %s [%.2f]\n", prog, value); + epr->value2 = value; + return EINA_TRUE; +} + +EAPI double +edje_edit_program_in_from_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(0); + + //printf("GET IN.FROM for program: %s [%f]\n", prog, epr->in.from); + return epr->in.from; +} + +EAPI Eina_Bool +edje_edit_program_in_from_set(Evas_Object *obj, const char *prog, double seconds) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET IN.FROM for program: %s [%f]\n", prog, epr->in.from); + epr->in.from = seconds; + return EINA_TRUE; +} + +EAPI double +edje_edit_program_in_range_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(0); + + //printf("GET IN.RANGE for program: %s [%f]\n", prog, epr->in.range); + return epr->in.range; +} + +EAPI Eina_Bool +edje_edit_program_in_range_set(Evas_Object *obj, const char *prog, double seconds) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET IN.RANGE for program: %s [%f]\n", prog, epr->in.range); + epr->in.range = seconds; + return EINA_TRUE; +} + +EAPI Edje_Tween_Mode +edje_edit_program_transition_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(-1); + + //printf("GET TRANSITION for program: %s [%d]\n", prog, epr->tween.mode); + return epr->tween.mode; +} + +EAPI Eina_Bool +edje_edit_program_transition_set(Evas_Object *obj, const char *prog, Edje_Tween_Mode transition) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("GET TRANSITION for program: %s [%d]\n", prog, epr->tween.mode); + epr->tween.mode = transition; + return EINA_TRUE; +} + +EAPI double +edje_edit_program_transition_time_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(-1); + + //printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time); + return TO_DOUBLE(epr->tween.time); +} + +EAPI Eina_Bool +edje_edit_program_transition_time_set(Evas_Object *obj, const char *prog, double seconds) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("GET TRANSITION_TIME for program: %s [%.4f]\n", prog, epr->tween.time); + epr->tween.time = FROM_DOUBLE(seconds); + return EINA_TRUE; +} + +EAPI Edje_Action_Type +edje_edit_program_action_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(-1); + + //printf("GET ACTION for program: %s [%d]\n", prog, epr->action); + return epr->action; +} + +EAPI Eina_Bool +edje_edit_program_action_set(Evas_Object *obj, const char *prog, Edje_Action_Type action) +{ + Program_Script *ps; + + eina_error_set(0); + + GET_EED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + //printf("SET ACTION for program: %s [%d]\n", prog, action); + if (action >= EDJE_ACTION_TYPE_LAST) return EINA_FALSE; + + if ((Edje_Action_Type)epr->action == action) + return EINA_TRUE; + + if (action == EDJE_ACTION_TYPE_SCRIPT) + { + ps = eina_hash_find(eed->program_scripts, &epr->id); + if (!ps) + { + ps = _alloc(sizeof(Program_Script)); + if (!ps) + return EINA_FALSE; + } + ps->id = epr->id; + ps->code = strdup(""); + ps->dirty = EINA_TRUE; + ps->delete_me = EINA_FALSE; + eina_hash_set(eed->program_scripts, &ps->id, ps); + _edje_edit_flag_script_dirty(eed, EINA_FALSE); + } + if (epr->action == EDJE_ACTION_TYPE_SCRIPT) + { + ps = eina_hash_find(eed->program_scripts, &epr->id); + if (ps) + { + free(ps->code); + free(ps->processed); + ps->code = ps->processed = NULL; + ps->dirty = EINA_FALSE; + ps->delete_me = EINA_TRUE; + _edje_edit_flag_script_dirty(eed, EINA_FALSE); + } + } + + epr->action = action; + return EINA_TRUE; +} + +EAPI Eina_List * +edje_edit_program_targets_get(Evas_Object *obj, const char *prog) +{ + Eina_List *l, *targets = NULL; + Edje_Program_Target *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + GET_EPR_OR_RETURN(NULL); + + //printf("GET TARGETS for program: %s [count: %d]\n", prog, eina_list_count(epr->targets)); + EINA_LIST_FOREACH(epr->targets, l, t) + { + if (epr->action == EDJE_ACTION_TYPE_STATE_SET) + { + /* the target is a part */ + Edje_Real_Part *p = NULL; + + p = ed->table_parts[t->id % ed->table_parts_size]; + if (p && p->part && p->part->name) + targets = eina_list_append(targets, + eina_stringshare_add(p->part->name)); + } + else if (epr->action == EDJE_ACTION_TYPE_ACTION_STOP) + { + /* the target is a program */ + Edje_Program *p; + + p = ed->table_programs[t->id % ed->table_programs_size]; + if (p && p->name) + targets = eina_list_append(targets, + eina_stringshare_add(p->name)); + } + } + return targets; +} + +EAPI Eina_Bool +edje_edit_program_targets_clear(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + while (epr->targets) + { + Edje_Program_Target *prt; + + prt = eina_list_data_get(epr->targets); + epr->targets = eina_list_remove_list(epr->targets, epr->targets); + free(prt); + } + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_target_add(Evas_Object *obj, const char *prog, const char *target) +{ + int id; + Edje_Program_Target *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (epr->action == EDJE_ACTION_TYPE_STATE_SET) + { + /* the target is a part */ + Edje_Real_Part *rp; + + rp = _edje_real_part_get(ed, target); + if (!rp) return EINA_FALSE; + id = rp->part->id; + } + else if (epr->action == EDJE_ACTION_TYPE_ACTION_STOP) + { + /* the target is a program */ + Edje_Program *tar; + + tar = _edje_program_get_byname(obj, target); + if (!tar) return EINA_FALSE; + id = tar->id; + } + else + return EINA_FALSE; + + t = _alloc(sizeof(Edje_Program_Target)); + if (!t) return EINA_FALSE; + + t->id = id; + epr->targets = eina_list_append(epr->targets, t); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_target_del(Evas_Object *obj, const char *prog, const char *target) +{ + int id; + Eina_List *l; + Edje_Program_Target *t; + + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + if (epr->action == EDJE_ACTION_TYPE_STATE_SET) + { + /* the target is a part */ + Edje_Real_Part *rp; + + rp = _edje_real_part_get(ed, target); + if (!rp) return EINA_FALSE; + id = rp->part->id; + } + else if (epr->action == EDJE_ACTION_TYPE_ACTION_STOP) + { + /* the target is a program */ + Edje_Program *tar; + + tar = _edje_program_get_byname(obj, target); + if (!tar) return EINA_FALSE; + id = tar->id; + } + else + return EINA_FALSE; + + EINA_LIST_FOREACH(epr->targets, l, t) + if (t->id == id) + break; + epr->targets = eina_list_remove_list(epr->targets, l); + free(t); + + return EINA_TRUE; +} + +EAPI Eina_List * +edje_edit_program_afters_get(Evas_Object *obj, const char *prog) +{ + Eina_List *l, *afters = NULL; + Edje_Program_After *a; + + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + GET_EPR_OR_RETURN(NULL); + + // printf("GET AFTERS for program: %s [count: %d]\n", prog, eina_list_count(epr->after)); + EINA_LIST_FOREACH(epr->after, l, a) + { + Edje_Program *p = NULL; + + p = ed->table_programs[a->id % ed->table_programs_size]; + if (p && p->name) + { + //printf(" a: %d name: %s\n", a->id, p->name); + afters = eina_list_append(afters, eina_stringshare_add(p->name)); + } + } + return afters; +} + +EAPI Eina_Bool +edje_edit_program_afters_clear(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + while (epr->after) + { + Edje_Program_After *pa; + + pa = eina_list_data_get(epr->after); + epr->after = eina_list_remove_list(epr->after, epr->after); + free(pa); + } + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_after_add(Evas_Object *obj, const char *prog, const char *after) +{ + Edje_Program *af; + Edje_Program_After *a; + + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + af = _edje_program_get_byname(obj, after); + if (!af) return EINA_FALSE; + + a = _alloc(sizeof(Edje_Program_After)); + if (!a) return EINA_FALSE; + + a->id = af->id; + + epr->after = eina_list_append(epr->after, a); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_after_del(Evas_Object *obj, const char *prog, const char *after) +{ + Edje_Program *af; + Edje_Program_After *a; + Eina_List *l; + + eina_error_set(0); + + GET_EPR_OR_RETURN(EINA_FALSE); + + af = _edje_program_get_byname(obj, after); + if (!af) return EINA_FALSE; + + EINA_LIST_FOREACH(epr->after, l, a) + if (a->id == af->id) + { + epr->after = eina_list_remove_list(epr->after, l); + break; + } + + return EINA_TRUE; +} + +EAPI const char * +edje_edit_program_api_name_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + return eina_stringshare_add(epr->api.name); +} + +EAPI const char * +edje_edit_program_api_description_get(Evas_Object *obj, const char *prog) +{ + eina_error_set(0); + + GET_EPR_OR_RETURN(NULL); + + return eina_stringshare_add(epr->api.description); +} + +EAPI Eina_Bool +edje_edit_program_api_name_set(Evas_Object *obj, const char *prog, const char* name) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + _edje_if_string_free(ed, epr->api.name); + epr->api.name = eina_stringshare_add(name); + + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_program_api_description_set(Evas_Object *obj, const char *prog, const char *description) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(EINA_FALSE); + GET_EPR_OR_RETURN(EINA_FALSE); + + _edje_if_string_free(ed, epr->api.description); + epr->api.description = eina_stringshare_add(description); + + return EINA_TRUE; +} + +/*************************/ +/* EMBRYO SCRIPTS API */ +/*************************/ +EAPI char * +edje_edit_script_get(Evas_Object *obj) +{ + eina_error_set(0); + + GET_ED_OR_RETURN(NULL); + + if (!ed->collection) return NULL; + if (!eed->embryo_source) return NULL; + + return strdup(eed->embryo_source); +} + +EAPI void +edje_edit_script_set(Evas_Object *obj, const char *code) +{ + eina_error_set(0); + + GET_EED_OR_RETURN(); + + free(eed->embryo_source); + free(eed->embryo_processed); + + if (code) + eed->embryo_source = strdup(code); + else + eed->embryo_source = NULL; + eed->embryo_processed = NULL; + + eed->embryo_source_dirty = EINA_TRUE; + + _edje_edit_flag_script_dirty(eed, EINA_FALSE); +} + +EAPI char * +edje_edit_script_program_get(Evas_Object *obj, const char *prog) +{ + Program_Script *ps; + + eina_error_set(0); + + GET_EED_OR_RETURN(NULL); + GET_EPR_OR_RETURN(NULL); + + if (epr->action != EDJE_ACTION_TYPE_SCRIPT) + return NULL; + + ps = eina_hash_find(eed->program_scripts, prog); + if (!ps) /* mmm? it should be there, even if empty */ + return NULL; + + return ps->code ? strdup(ps->code) : NULL; +} + +EAPI void +edje_edit_script_program_set(Evas_Object *obj, const char *prog, const char *code) +{ + Program_Script *ps; + + eina_error_set(0); + + GET_EED_OR_RETURN(); + GET_EPR_OR_RETURN(); + + if (epr->action != EDJE_ACTION_TYPE_SCRIPT) + return; + + ps = eina_hash_find(eed->program_scripts, prog); + if (!ps) /* ???? how so? */ + return; + + free(ps->code); + free(ps->processed); + + if (code) + ps->code = strdup(code); + else + ps->code = NULL; + ps->processed = NULL; + ps->dirty = EINA_TRUE; + + _edje_edit_flag_script_dirty(eed, EINA_FALSE); +} + +static int +__part_replace(Edje_Edit *eed, char *pcode, char *name) +{ + int id; + + id = _edje_part_id_find((Edje *)eed, name); + if (id < 0) + return 0; + return eina_convert_itoa(id, pcode); +} + +static int +__program_replace(Edje_Edit *eed, char *pcode, char *name) +{ + int id; + + id = _edje_program_id_find(eed, name); + if (id < 0) + return 0; + return eina_convert_itoa(id, pcode); +} + +static int +__group_replace(Edje_Edit *eed __UNUSED__, char *pcode, char *name) +{ + strcpy(pcode, name); + return strlen(name) + 1; +} + +static int +__image_replace(Edje_Edit *eed, char *pcode, char *name) +{ + int id; + + id = _edje_image_id_find(eed, name); + if (id < 0) + return 0; + return eina_convert_itoa(id, pcode); +} + +static char * +_edje_edit_script_process(Edje_Edit *eed, const char *progname, char *code) +{ + char *pcode, *psrc, *pdst; + int codesize, pcodesize; + int quoted = 0, escaped = 0; + int line = 1; + Eina_Bool success = EINA_TRUE; + + codesize = strlen(code); + pcode = malloc(codesize + 1); + if (!pcode) + return NULL; + + pcodesize = 0; + psrc = code; + pdst = pcode; + while (*psrc) + { + if (!quoted) + { + char *ptr = NULL; + const char *what = NULL; + int (*func)(Edje_Edit *, char *, char *); + + if (*psrc == 'P') + { + if (!strncmp(psrc, "PART:\"", 6)) + { + psrc += 6; + ptr = psrc; + func = __part_replace; + what = "part"; + } + else if (!strncmp(psrc, "PROGRAM:\"", 9)) + { + psrc += 9; + ptr = psrc; + func = __program_replace; + what = "program"; + } + } + else if (*psrc == 'G') + { + if (!strncmp(psrc, "GROUP:\"", 7)) + { + psrc += 7; + ptr = psrc; + func = __group_replace; + what = "group"; + } + } + else if (*psrc == 'I') + { + if (!strncmp(psrc, "IMAGE:\"", 7)) + { + psrc += 7; + ptr = psrc; + func = __image_replace; + what = "image"; + } + } + else if (*psrc == '#') + { + while (*psrc) + if (*psrc == '\n') + break; + line++; + continue; + } + else if (*psrc == '\"') + quoted = 1; + else if (*psrc == '\n') + line++; + + if (ptr) + { + int i = 0, inesc = 0; + char *name; + while (*psrc) + { + if (!inesc) + { + if (*psrc == '\\') + inesc = 1; + else if (*psrc == '\"') + { + /* string concatenation as in "foo""bar" */ + if (*(psrc + 1) != '\"') + { + psrc++; + break; + } + else + psrc++; + } + } + else + inesc = 0; + psrc++; + } + name = alloca(psrc - ptr); + inesc = 0; + while (*ptr) + { + if (!inesc) + { + if (*ptr == '\\') + inesc = 1; + else if (*ptr == '\"') + { + if (*(ptr + 1) == '\"') + ptr++; + else + { + name[i] = 0; + break; + } + } + else + { + name[i] = *ptr; + name[i + 1] = 0; + i++; + } + } + else + inesc = 0; + ptr++; + } + i = func(eed, pdst, name); + if (!i) + { + Edje_Edit_Script_Error *se; + se = malloc(sizeof(Edje_Edit_Script_Error)); + se->program_name = progname ? + eina_stringshare_add(progname) : NULL; + se->line = line; + se->error_str = eina_stringshare_printf( + "Referenced %s '%s' could not be found in object.", + what, name); + eed->errors = eina_list_append(eed->errors, se); + success = EINA_FALSE; + } + else + { + pcodesize += i; + pdst += i; + } + /* replaced reference for the right value, now go + * to the next iteration */ + continue; + } + } + else + { + if (!escaped) + { + if (*psrc == '\"') + quoted = 0; + else if (*psrc == '\\') + escaped = 1; + } + else if (escaped) + escaped = 0; + } + *pdst = *psrc; + pdst++; + psrc++; + pcodesize++; + } + + if (!success) + { + free(pcode); + return NULL; + } + + if (pcodesize < codesize) + pcode = realloc(pcode, pcodesize + 1); + pcode[pcodesize] = 0; + + return pcode; +} + +static Eina_Bool +_edje_edit_embryo_rebuild(Edje_Edit *eed) +{ + FILE *f; + int fd, size, ret; + const char *tmp_dir; + char tmp_in[PATH_MAX]; + char tmp_out[PATH_MAX]; + char buf[4096]; + Eina_Iterator *it; + Program_Script *ps; + Edje_Part_Collection *edc; + Eina_Bool success = EINA_TRUE; /* we are optimists! */ + Edje_Edit_Script_Error *se; + + EINA_LIST_FREE(eed->errors, se) + { + eina_stringshare_del(se->program_name); + eina_stringshare_del(se->error_str); + free(se); + } + +#ifdef HAVE_EVIL + tmp_dir = evil_tmpdir_get(); +#else + tmp_dir = "/tmp"; +#endif + + snprintf(tmp_in, sizeof(tmp_in), "%s/edje_edit.sma-tmp-XXXXXX", tmp_dir); + snprintf(tmp_out, sizeof(tmp_out), "%s/edje_edit.amx-tmp-XXXXXX", tmp_dir); + + fd = mkstemp(tmp_in); + if (fd < 0) + return EINA_FALSE; /* FIXME: report something */ + + f = fdopen(fd, "w"); + if (!f) + { + close(fd); + unlink(tmp_in); + return EINA_FALSE; + } + + fprintf(f, "#include \n"); + if (eed->embryo_source) + { + if (eed->all_dirty) + { + free(eed->embryo_processed); + eed->embryo_processed = NULL; + } + if (!eed->embryo_processed) + eed->embryo_processed = _edje_edit_script_process(eed, NULL, + eed->embryo_source); + if (!eed->embryo_processed) + { + /* oops.. an error finding references parts or something. + * we could flag it and do some lighter processing of the + * rest of the scripts, in order to find all the errors of + * this kind and report them at once, but knowing already + * that the script will not compile we can avoid some work + */ + success = EINA_FALSE; + } + else + fprintf(f, "%s", eed->embryo_processed); + } + + it = eina_hash_iterator_data_new(eed->program_scripts); + EINA_ITERATOR_FOREACH(it, ps) + { + Edje_Program *epr; + + if (ps->delete_me) + continue; + if (eed->all_dirty) + { + free(ps->processed); + ps->processed = NULL; + } + epr = eed->base.table_programs[ps->id]; + if (!ps->processed) + ps->processed = _edje_edit_script_process(eed, epr->name, ps->code); + if (!ps->processed) + { + /* oops.. an error finding references parts or something. + * we could flag it and do some lighter processing of the + * rest of the scripts, in order to find all the errors of + * this kind and report them at once, but knowing already + * that the script will not compile we can avoid some work + */ + success = EINA_FALSE; + continue; + } + fprintf(f, "public _p%i(sig[], src[]) {\n", ps->id); + fprintf(f, "%s", ps->processed); + fprintf(f, "}\n"); + } + eina_iterator_free(it); + + fclose(f); + + if (!success) + goto almost_out; + + fd = mkstemp(tmp_out); + if (fd < 0) + { + success = EINA_FALSE; + goto almost_out; + } + + snprintf(buf, sizeof(buf), "embryo_cc -i %s/include -o %s %s", + PACKAGE_DATA_DIR, tmp_out, tmp_in); + ret = system(buf); + + if ((ret < 0) || (ret > 1)) + { + success = EINA_FALSE; + close(fd); + goto the_doorway; + } + + f = fdopen(fd, "rb"); + if (!f) + { + success = EINA_FALSE; + close(fd); + goto the_doorway; + } + + fseek(f, 0, SEEK_END); + size = ftell(f); + rewind(f); + + free(eed->bytecode); + if (size > 0) + { + eed->bytecode = malloc(size); + if (!eed->bytecode) + { + success = EINA_FALSE; + goto the_way_out; + } + if (fread(eed->bytecode, size, 1, f) != 1) + { + success = EINA_FALSE; + goto the_way_out; + } + } + else + eed->bytecode = NULL; /* correctness mostly, I don't see why we + would get a 0 sized program */ + + eed->bytecode_size = size; + eed->bytecode_dirty = EINA_TRUE; + eed->script_need_recompile = EINA_FALSE; + eed->all_dirty = EINA_FALSE; + + edc = eed->base.collection; + embryo_program_free(edc->script); + edc->script = embryo_program_new(eed->bytecode, eed->bytecode_size); + _edje_embryo_script_init(edc); + _edje_var_init((Edje *)eed); + +the_way_out: + fclose(f); +the_doorway: + unlink(tmp_out); +almost_out: + unlink(tmp_in); + + return success; +} + +EAPI Eina_Bool +edje_edit_script_compile(Evas_Object *obj) +{ + GET_EED_OR_RETURN(EINA_FALSE); + + if (!eed->script_need_recompile) + return EINA_TRUE; + + return _edje_edit_embryo_rebuild(eed); +} + +EAPI const Eina_List * +edje_edit_script_error_list_get(Evas_Object *obj) +{ + GET_EED_OR_RETURN(NULL); + return eed->errors; +} + +/***************************/ +/* EDC SOURCE GENERATION */ +/***************************/ +#define I0 "" +#define I1 " " +#define I2 " " +#define I3 " " +#define I4 " " +#define I5 " " +#define I6 " " +#define I7 " " + +#define BUF_APPEND(STR) \ + ret &= eina_strbuf_append(buf, STR) + +#define BUF_APPENDF(FMT, ...) \ + ret &= eina_strbuf_append_printf(buf, FMT, ##__VA_ARGS__) + +static const char *types[] = {"NONE", "RECT", "TEXT", "IMAGE", "SWALLOW", "TEXTBLOCK", "GRADIENT", "GROUP", "BOX", "TABLE", "EXTERNAL", "SPACER"}; +static const char *effects[] = {"NONE", "PLAIN", "OUTLINE", "SOFT_OUTLINE", "SHADOW", "SOFT_SHADOW", "OUTLINE_SHADOW", "OUTLINE_SOFT_SHADOW ", "FAR_SHADOW ", "FAR_SOFT_SHADOW", "GLOW"}; +static const char *prefers[] = {"NONE", "VERTICAL", "HORIZONTAL", "BOTH"}; + + static Eina_Bool +_edje_generate_source_of_colorclass(Edje * ed, const char *name, Eina_Strbuf *buf) +{ + Eina_List *l; + Edje_Color_Class *cc; + Eina_Bool ret = EINA_TRUE; + + EINA_LIST_FOREACH(ed->file->color_classes, l, cc) + if (!strcmp(cc->name, name)) + { + BUF_APPENDF(I1 "color_class { name: \"%s\";\n", cc->name); + BUF_APPENDF(I2 "color: %d %d %d %d;\n", cc->r, cc->g, cc->b, cc->a); + BUF_APPENDF(I2 "color2: %d %d %d %d;\n", cc->r2, cc->g2, cc->b2, cc->a2); + BUF_APPENDF(I2 "color3: %d %d %d %d;\n", cc->r3, cc->g3, cc->b3, cc->a3); + BUF_APPEND(I1 "}\n"); + } + return ret; +} + + static Eina_Bool +_edje_generate_source_of_style(Edje * ed, const char *name, Eina_Strbuf *buf) +{ + Eina_List *l, *ll; + Edje_Style *s; + Edje_Style_Tag *t; + Eina_Bool ret = EINA_TRUE; + + EINA_LIST_FOREACH(ed->file->styles, l, s) + if (!strcmp(s->name, name)) + { + t = s->tags ? s->tags->data : NULL; + BUF_APPENDF(I1 "style { name:\"%s\";\n", s->name); + if (t && t->value) + BUF_APPENDF(I2 "base: \"%s\";\n", t->value); + + EINA_LIST_FOREACH(s->tags, ll, t) + if (ll->prev && t && t->value) + BUF_APPENDF(I2 "tag: \"%s\" \"%s\";\n", t->key, + t->value); + BUF_APPEND(I1 "}\n"); + return ret; + } + return EINA_FALSE; +} + +static Eina_Bool +_edje_generate_source_of_program(Evas_Object *obj, const char *program, Eina_Strbuf *buf) +{ + Eina_List *l, *ll; + const char *s, *s2; + double db, db2; + char *data; + Eina_Bool ret = EINA_TRUE; + const char *api_name, *api_description; + Edje_Program *epr; + + GET_EED_OR_RETURN(EINA_FALSE); + + epr = _edje_program_get_byname(obj, program); + + BUF_APPENDF(I3"program { name: \"%s\";\n", program); + + /* Signal */ + if ((s = edje_edit_program_signal_get(obj, program))) + { + BUF_APPENDF(I4"signal: \"%s\";\n", s); + edje_edit_string_free(s); + } + + /* Source */ + if ((s = edje_edit_program_source_get(obj, program))) + { + BUF_APPENDF(I4"source: \"%s\";\n", s); + edje_edit_string_free(s); + } + + /* Action */ + switch (edje_edit_program_action_get(obj, program)) + { + case EDJE_ACTION_TYPE_ACTION_STOP: + BUF_APPEND(I4"action: ACTION_STOP;\n"); + break; + case EDJE_ACTION_TYPE_STATE_SET: + if ((s = edje_edit_program_state_get(obj, program))) + { + BUF_APPENDF(I4"action: STATE_SET \"%s\" %.2f;\n", s, + edje_edit_program_value_get(obj, program)); + edje_edit_string_free(s); + } + break; + case EDJE_ACTION_TYPE_SIGNAL_EMIT: + s = edje_edit_program_state_get(obj, program); + s2 = edje_edit_program_state2_get(obj, program); + if (s && s2) + { + BUF_APPENDF(I4"action: SIGNAL_EMIT \"%s\" \"%s\";\n", s, s2); + edje_edit_string_free(s); + edje_edit_string_free(s2); + } + break; + case EDJE_ACTION_TYPE_SCRIPT: + { + Program_Script *ps; + + ps = eina_hash_find(eed->program_scripts, &epr->id); + if (ps && !ps->delete_me) + { + BUF_APPEND(I4"script {\n"); + BUF_APPEND(ps->code); + BUF_APPEND(I4"}\n"); + } + } + break; + //TODO Support Drag + //~ case EDJE_ACTION_TYPE_DRAG_VAL_SET: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_SET TODO;\n"); + //~ break; + //~ case EDJE_ACTION_TYPE_DRAG_VAL_STEP: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_STEP TODO;\n"); + //~ break; + //~ case EDJE_ACTION_TYPE_DRAG_VAL_PAGE: + //~ eina_strbuf_append(buf, I4"action: DRAG_VAL_PAGE TODO;\n"); + //~ break; + default: + break; + } + + /* Transition */ + db = edje_edit_program_transition_time_get(obj, program); + switch (edje_edit_program_transition_get(obj, program)) + { + case EDJE_TWEEN_MODE_LINEAR: + if (db) + BUF_APPENDF(I4"transition: LINEAR %.5f;\n", db); + break; + case EDJE_TWEEN_MODE_ACCELERATE: + BUF_APPENDF(I4"transition: ACCELERATE %.5f;\n", db); + break; + case EDJE_TWEEN_MODE_DECELERATE: + BUF_APPENDF(I4"transition: DECELERATE %.5f;\n", db); + break; + case EDJE_TWEEN_MODE_SINUSOIDAL: + BUF_APPENDF(I4"transition: SINUSOIDAL %.5f;\n", db); + break; + default: + break; + } + + /* In */ + db = edje_edit_program_in_from_get(obj, program); + db2 = edje_edit_program_in_range_get(obj, program); + if (db || db2) + BUF_APPENDF(I4"in: %.5f %.5f;\n", db, db2); + + /* Targets */ + if ((ll = edje_edit_program_targets_get(obj, program))) + { + EINA_LIST_FOREACH(ll, l, data) + BUF_APPENDF(I4"target: \"%s\";\n", data); + edje_edit_string_list_free(ll); + } + + /* Afters */ + if ((ll = edje_edit_program_afters_get(obj, program))) + { + EINA_LIST_FOREACH(ll, l, data) + BUF_APPENDF(I4"after: \"%s\";\n", data); + edje_edit_string_list_free(ll); + } + + // TODO Support script {} + /* api */ + api_name = edje_edit_program_api_name_get(obj, program); + api_description = edje_edit_program_api_description_get(obj, program); + + if (api_name || api_description) + { + if (api_name && api_description) + { + BUF_APPENDF(I4"api: \"%s\" \"%s\";\n", api_name, api_description); + edje_edit_string_free(api_name); + edje_edit_string_free(api_description); + } + else + if (api_name) + { + BUF_APPENDF(I4"api: \"%s\" \"\";\n", api_name); + edje_edit_string_free(api_name); + } + else + { + BUF_APPENDF(I4"api: \"\" \"%s\";\n", api_description); + edje_edit_string_free(api_description); + } + } + + BUF_APPEND(I3 "}\n"); + return ret; +} + +static Eina_Bool +_edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *state, double value, Eina_Strbuf *buf) +{ + Eina_List *l, *ll; + Eina_Bool ret = EINA_TRUE; + + GET_PD_OR_RETURN(EINA_FALSE); + + BUF_APPENDF(I4"description { state: \"%s\" %g;\n", pd->state.name, pd->state.value); + //TODO Support inherit + + if (!pd->visible) + BUF_APPEND(I5"visible: 0;\n"); + + if (pd->align.x != 0.5 || pd->align.y != 0.5) + BUF_APPENDF(I5"align: %g %g;\n", TO_DOUBLE(pd->align.x), TO_DOUBLE(pd->align.y)); + + //TODO Support fixed + + if (pd->min.w || pd->min.h) + BUF_APPENDF(I5"min: %d %d;\n", pd->min.w, pd->min.h); + if (pd->max.w != -1 || pd->max.h != -1) + BUF_APPENDF(I5"max: %d %d;\n", pd->max.w, pd->max.h); + + //TODO Support step + + if (pd->aspect.min || pd->aspect.max) + BUF_APPENDF(I5"aspect: %g %g;\n", TO_DOUBLE(pd->aspect.min), TO_DOUBLE(pd->aspect.max)); + if (pd->aspect.prefer) + BUF_APPENDF(I5"aspect_preference: %s;\n", prefers[(int) pd->aspect.prefer]); + + if (pd->color_class) + BUF_APPENDF(I5"color_class: \"%s\";\n", pd->color_class); + + if (pd->color.r != 255 || pd->color.g != 255 || + pd->color.b != 255 || pd->color.a != 255) + BUF_APPENDF(I5"color: %d %d %d %d;\n", + pd->color.r, pd->color.g, pd->color.b, pd->color.a); + if (pd->color2.r != 0 || pd->color2.g != 0 || + pd->color2.b != 0 || pd->color2.a != 255) + BUF_APPENDF(I5"color2: %d %d %d %d;\n", + pd->color2.r, pd->color2.g, pd->color2.b, pd->color2.a); + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *) pd; + + if (txt->text.color3.r != 0 || txt->text.color3.g != 0 || + txt->text.color3.b != 0 || txt->text.color3.a != 128) + BUF_APPENDF(I5"color3: %d %d %d %d;\n", + txt->text.color3.r, txt->text.color3.g, txt->text.color3.b, txt->text.color3.a); + } + + //Rel1 + if (pd->rel1.relative_x || pd->rel1.relative_y || pd->rel1.offset_x || + pd->rel1.offset_y || pd->rel1.id_x != -1 || pd->rel1.id_y != -1) + { + BUF_APPEND(I5"rel1 {\n"); + if (pd->rel1.relative_x || pd->rel1.relative_y) + BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->rel1.relative_x), TO_DOUBLE(pd->rel1.relative_y)); + if (pd->rel1.offset_x || pd->rel1.offset_y) + BUF_APPENDF(I6"offset: %d %d;\n", pd->rel1.offset_x, pd->rel1.offset_y); + if (pd->rel1.id_x != -1 && pd->rel1.id_x == pd->rel1.id_y) + BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->rel1.id_x]->part->name); + else + { + if (pd->rel1.id_x != -1) + BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->rel1.id_x]->part->name); + if (pd->rel1.id_y != -1) + BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->rel1.id_y]->part->name); + } + BUF_APPEND(I5"}\n");//rel1 + } + + //Rel2 + if (pd->rel2.relative_x != 1.0 || pd->rel2.relative_y != 1.0 || + pd->rel2.offset_x != -1 || pd->rel2.offset_y != -1 || + pd->rel2.id_x != -1 || pd->rel2.id_y != -1) + { + BUF_APPEND(I5"rel2 {\n"); + if (TO_DOUBLE(pd->rel2.relative_x) != 1.0 || TO_DOUBLE(pd->rel2.relative_y) != 1.0) + BUF_APPENDF(I6"relative: %g %g;\n", TO_DOUBLE(pd->rel2.relative_x), TO_DOUBLE(pd->rel2.relative_y)); + if (pd->rel2.offset_x != -1 || pd->rel2.offset_y != -1) + BUF_APPENDF(I6"offset: %d %d;\n", pd->rel2.offset_x, pd->rel2.offset_y); + if (pd->rel2.id_x != -1 && pd->rel2.id_x == pd->rel2.id_y) + BUF_APPENDF(I6"to: \"%s\";\n", ed->table_parts[pd->rel2.id_x]->part->name); + else + { + if (pd->rel2.id_x != -1) + BUF_APPENDF(I6"to_x: \"%s\";\n", ed->table_parts[pd->rel2.id_x]->part->name); + if (pd->rel2.id_y != -1) + BUF_APPENDF(I6"to_y: \"%s\";\n", ed->table_parts[pd->rel2.id_y]->part->name); + } + BUF_APPEND(I5"}\n");//rel2 + } + + //Image + if (rp->part->type == EDJE_PART_TYPE_IMAGE) + { + char *data; + const char *image_name; + + Edje_Part_Description_Image *img; + + img = (Edje_Part_Description_Image *) pd; + + BUF_APPEND(I5"image {\n"); + + image_name = _edje_image_name_find(eed, img->image.id); + if (image_name) + BUF_APPENDF(I6"normal: \"%s\";\n", image_name); + + ll = edje_edit_state_tweens_list_get(obj, part, state, value); + EINA_LIST_FOREACH(ll, l, data) + BUF_APPENDF(I6"tween: \"%s\";\n", data); + edje_edit_string_list_free(ll); + + if (img->image.border.l || img->image.border.r || img->image.border.t || img->image.border.b) + BUF_APPENDF(I6"border: %d %d %d %d;\n", img->image.border.l, img->image.border.r, img->image.border.t, img->image.border.b); + if (img->image.border.no_fill == 1) + BUF_APPEND(I6"middle: NONE;\n"); + else if (img->image.border.no_fill == 0) + BUF_APPEND(I6"middle: DEFAULT;\n"); + else if (img->image.border.no_fill == 2) + BUF_APPEND(I6"middle: SOLID;\n"); + + BUF_APPEND(I5"}\n");//image + + //Fill + + BUF_APPEND(I5"fill {\n"); + if (!img->image.fill.smooth) + BUF_APPEND(I6"smooth: 0;\n"); + //TODO Support spread + + if (img->image.fill.pos_rel_x || img->image.fill.pos_rel_y || + img->image.fill.pos_abs_x || img->image.fill.pos_abs_y) + { + BUF_APPEND(I6"origin {\n"); + if (img->image.fill.pos_rel_x || img->image.fill.pos_rel_y) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(img->image.fill.pos_rel_x), TO_DOUBLE(img->image.fill.pos_rel_y)); + if (img->image.fill.pos_abs_x || img->image.fill.pos_abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", img->image.fill.pos_abs_x, img->image.fill.pos_abs_y); + BUF_APPEND(I6"}\n"); + } + + if (TO_DOUBLE(img->image.fill.rel_x) != 1.0 || TO_DOUBLE(img->image.fill.rel_y) != 1.0 || + img->image.fill.abs_x || img->image.fill.abs_y) + { + BUF_APPEND(I6"size {\n"); + if (img->image.fill.rel_x != 1.0 || img->image.fill.rel_y != 1.0) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(img->image.fill.rel_x), TO_DOUBLE(img->image.fill.rel_y)); + if (img->image.fill.abs_x || img->image.fill.abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", img->image.fill.abs_x, img->image.fill.abs_y); + BUF_APPEND(I6"}\n"); + } + + BUF_APPEND(I5"}\n"); + } + + if (rp->part->type == EDJE_PART_TYPE_PROXY) + { + Edje_Part_Description_Proxy *pro; + + pro = (Edje_Part_Description_Proxy *) pd; + + //Fill + + BUF_APPEND(I5"fill {\n"); + if (!pro->proxy.fill.smooth) + BUF_APPEND(I6"smooth: 0;\n"); + //TODO Support spread + //TODO Support source + + if (pro->proxy.fill.pos_rel_x || pro->proxy.fill.pos_rel_y || + pro->proxy.fill.pos_abs_x || pro->proxy.fill.pos_abs_y) + { + BUF_APPEND(I6"origin {\n"); + if (pro->proxy.fill.pos_rel_x || pro->proxy.fill.pos_rel_y) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(pro->proxy.fill.pos_rel_x), TO_DOUBLE(pro->proxy.fill.pos_rel_y)); + if (pro->proxy.fill.pos_abs_x || pro->proxy.fill.pos_abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", pro->proxy.fill.pos_abs_x, pro->proxy.fill.pos_abs_y); + BUF_APPEND(I6"}\n"); + } + + if (TO_DOUBLE(pro->proxy.fill.rel_x) != 1.0 || TO_DOUBLE(pro->proxy.fill.rel_y) != 1.0 || + pro->proxy.fill.abs_x || pro->proxy.fill.abs_y) + { + BUF_APPEND(I6"size {\n"); + if (pro->proxy.fill.rel_x != 1.0 || pro->proxy.fill.rel_y != 1.0) + BUF_APPENDF(I7"relative: %g %g;\n", TO_DOUBLE(pro->proxy.fill.rel_x), TO_DOUBLE(pro->proxy.fill.rel_y)); + if (pro->proxy.fill.abs_x || pro->proxy.fill.abs_y) + BUF_APPENDF(I7"offset: %d %d;\n", pro->proxy.fill.abs_x, pro->proxy.fill.abs_y); + BUF_APPEND(I6"}\n"); + } + + BUF_APPEND(I5"}\n"); + } + + //Text + if (rp->part->type == EDJE_PART_TYPE_TEXT) + { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *) pd; + + BUF_APPEND(I5"text {\n"); + if (edje_string_get(&txt->text.text)) + { + if (txt->text.text.id) + BUF_APPENDF(I6"text: _(\"%s\");\n", edje_string_id_get(&txt->text.text)); + else + BUF_APPENDF(I6"text: \"%s\";\n", edje_string_get(&txt->text.text)); + } + if (edje_string_get(&txt->text.font)) + { + if (txt->text.font.id) + BUF_APPENDF(I6"font: _(\"%s\");\n", edje_string_id_get(&txt->text.font)); + else + BUF_APPENDF(I6"font: \"%s\";\n", edje_string_get(&txt->text.font)); + } + if (txt->text.size) + BUF_APPENDF(I6"size: %d;\n", txt->text.size); + if (txt->text.text_class) + BUF_APPENDF(I6"text_class: \"%s\";\n", txt->text.text_class); + if (txt->text.fit_x || txt->text.fit_y) + BUF_APPENDF(I6"fit: %d %d;\n", txt->text.fit_x, txt->text.fit_y); + //TODO Support min & max + if (TO_DOUBLE(txt->text.align.x) != 0.5 || TO_DOUBLE(txt->text.align.y) != 0.5) + BUF_APPENDF(I6"align: %g %g;\n", TO_DOUBLE(txt->text.align.x), TO_DOUBLE(txt->text.align.y)); + //TODO Support source + //TODO Support text_source + if (txt->text.elipsis) + BUF_APPENDF(I6"elipsis: %g;\n", txt->text.elipsis); + BUF_APPEND(I5"}\n"); + } + + //External + if (rp->part->type == EDJE_PART_TYPE_EXTERNAL) + { + if ((ll = (Eina_List *)edje_edit_state_external_params_list_get(obj, part, state, value))) + { + Edje_External_Param *p; + + BUF_APPEND(I5"params {\n"); + EINA_LIST_FOREACH(ll, l, p) + { + switch (p->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + BUF_APPENDF(I6"int: \"%s\" \"%d\";\n", p->name, p->i); + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + BUF_APPENDF(I6"double: \"%s\" \"%g\";\n", p->name, p->d); + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (p->s) + BUF_APPENDF(I6"string: \"%s\" \"%s\";\n", p->name, + p->s); + break; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + BUF_APPENDF(I6"bool: \"%s\" \"%d\";\n", p->name, p->i); + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + if (p->s) + BUF_APPENDF(I6"choice: \"%s\" \"%s\";\n", p->name, + p->s); + break; + default: + break; + } + } + BUF_APPEND(I5"}\n"); + } + } + + BUF_APPEND(I4"}\n");//description + return ret; +} + +static Eina_Bool +_edje_generate_source_of_part(Evas_Object *obj, Edje_Part *ep, Eina_Strbuf *buf) +{ + const char *part = ep->name; + const char *str; + Eina_List *l, *ll; + char *data; + Eina_Bool ret = EINA_TRUE; + const char *api_name, *api_description; + + BUF_APPENDF(I3"part { name: \"%s\";\n", part); + BUF_APPENDF(I4"type: %s;\n", types[edje_edit_part_type_get(obj, part)]); + if (!edje_edit_part_mouse_events_get(obj, part)) + BUF_APPEND(I4"mouse_events: 0;\n"); + if (edje_edit_part_repeat_events_get(obj, part)) + BUF_APPEND(I4"repeat_events: 1;\n"); + if (edje_edit_part_scale_get(obj, part)) + BUF_APPEND(I4"scale: 1;\n"); + //TODO Support ignore_flags + //TODO Support pointer_mode + //TODO Support precise_is_inside + //TODO Support use_alternate_font_metrics + if ((str = edje_edit_part_clip_to_get(obj, part))) + { + BUF_APPENDF(I4"clip_to: \"%s\";\n", str); + edje_edit_string_free(str); + } + if ((str = edje_edit_part_source_get(obj, part))) + { + BUF_APPENDF(I4"source: \"%s\";\n", str); + edje_edit_string_free(str); + } + if (edje_edit_part_effect_get(obj, part)) + BUF_APPENDF(I4"effect: %s;\n", + effects[edje_edit_part_effect_get(obj, part)]); + + //Dragable + if (edje_edit_part_drag_x_get(obj, part) || + edje_edit_part_drag_y_get(obj, part)) + { + BUF_APPEND(I4"dragable {\n"); + BUF_APPENDF(I5"x: %d %d %d;\n", + edje_edit_part_drag_x_get(obj, part), + edje_edit_part_drag_step_x_get(obj, part), + edje_edit_part_drag_count_x_get(obj, part)); + BUF_APPENDF(I5"y: %d %d %d;\n", + edje_edit_part_drag_y_get(obj, part), + edje_edit_part_drag_step_y_get(obj, part), + edje_edit_part_drag_count_y_get(obj, part)); + if ((str = edje_edit_part_drag_confine_get(obj, part))) + { + BUF_APPENDF(I5"confine: \"%s\";\n", str); + edje_edit_string_free(str); + } + if ((str = edje_edit_part_drag_event_get(obj, part))) + { + BUF_APPENDF(I5"events: \"%s\";\n", str); + edje_edit_string_free(str); + } + BUF_APPEND(I4"}\n"); + } + + //Descriptions + ll = edje_edit_part_states_list_get(obj, part); + EINA_LIST_FOREACH(ll, l, data) + { + char state[512], *delim; + double value; + strncpy(state, data, sizeof(state) - 1); /* if we go over it, too bad.. the list of states may need to change to provide name and value separated */ + delim = strchr(state, ' '); + *delim = '\0'; + delim++; + value = strtod(delim, NULL); + ret &= _edje_generate_source_of_state(obj, part, state, value, buf); + } + edje_edit_string_list_free(ll); + + api_name = edje_edit_part_api_name_get(obj, part); + api_description = edje_edit_part_api_description_get(obj, part); + + if (api_name || api_description) + { + if (api_name && api_description) + { + BUF_APPENDF(I4"api: \"%s\" \"%s\";\n", api_name, api_description); + edje_edit_string_free(api_name); + edje_edit_string_free(api_description); + } + else + if (api_name) + { + BUF_APPENDF(I4"api: \"%s\" \"\";\n", api_name); + edje_edit_string_free(api_name); + } + else + { + BUF_APPENDF(I4"api: \"\" \"%s\";\n", api_description); + edje_edit_string_free(api_description); + } + } + + BUF_APPEND(I3"}\n");//part + return ret; +} + +static Eina_Bool +_edje_generate_source_of_group(Edje *ed, Edje_Part_Collection_Directory_Entry *pce, Eina_Strbuf *buf) +{ + Edje_Edit *eed; + Eet_File *ef; + Evas_Object *obj; + Eina_List *l, *ll; + unsigned int i; + int w, h; + char *data; + const char *group = pce->entry; + Edje_Part_Collection *pc; + Eina_Bool ret = EINA_TRUE; + + obj = edje_edit_object_add(ed->base.evas); + if (!edje_object_file_set(obj, ed->file->path, group)) return EINA_FALSE; + + ef = eet_open(ed->file->path, EET_FILE_MODE_READ); + if (!ef) + { + evas_object_del(obj); + return EINA_FALSE; + } + + eed = evas_object_smart_data_get(obj); + pc = eed->base.collection; + + BUF_APPENDF(I1"group { name: \"%s\";\n", group); + //TODO Support alias: + w = edje_edit_group_min_w_get(obj); + h = edje_edit_group_min_h_get(obj); + if ((w > 0) || (h > 0)) + BUF_APPENDF(I2"min: %d %d;\n", w, h); + w = edje_edit_group_max_w_get(obj); + h = edje_edit_group_max_h_get(obj); + if ((w > 0) || (h > 0)) + BUF_APPENDF(I2"max: %d %d;\n", w, h); + + /* Data */ + if (pc->data) + { + Eina_Iterator *it; + Eina_Hash_Tuple *tuple; + BUF_APPEND(I2"data {\n"); + + it = eina_hash_iterator_tuple_new(pc->data); + + if (!it) + { + ERR("Generating EDC for Group[%s] data.", group); + return EINA_FALSE; + } + + EINA_ITERATOR_FOREACH(it, tuple) + BUF_APPENDF(I3"item: \"%s\" \"%s\";\n", (char *)tuple->key, + edje_string_get(tuple->data)); + + eina_iterator_free(it); + BUF_APPEND(I2"}\n"); + } + + if (eed->embryo_source) + { + BUF_APPEND(I2"script {\n"); + BUF_APPEND(eed->embryo_source); + BUF_APPEND(I2"}\n"); + } + + /* Parts */ + BUF_APPEND(I2"parts {\n"); + for (i = 0; i < pc->parts_count; i++) + { + Edje_Part *ep; + ep = pc->parts[i]; + ret &= _edje_generate_source_of_part(obj, ep, buf); + } + BUF_APPEND(I2"}\n");//parts + + if (!ret) + { + ERR("Generating EDC for Group[%s] Parts.", group); + return EINA_FALSE; + } + + /* Programs */ + if ((ll = edje_edit_programs_list_get(obj))) + { + BUF_APPEND(I2 "programs {\n"); + EINA_LIST_FOREACH(ll, l, data) + ret &= _edje_generate_source_of_program(obj, data, buf); + BUF_APPEND(I2 "}\n"); + edje_edit_string_list_free(ll); + } + BUF_APPEND(I1"}\n");//group + + if (!ret) + { + ERR("Generating EDC for Group[%s] Programs.", group); + evas_object_del(obj); + return EINA_FALSE; + } + + eet_close(ef); + evas_object_del(obj); + return ret; +} + +static Eina_Strbuf* +_edje_generate_source(Evas_Object *obj) +{ + Eina_Strbuf *buf; + + Eina_List *l, *ll; + Edje_Font_Directory_Entry *fnt; + + char *entry; + Eina_Bool ret = EINA_TRUE; + + GET_ED_OR_RETURN(NULL); + + /* Open a str buffer */ + + buf = eina_strbuf_new(); + if (!buf) return NULL; + + /* Write edc into file */ + //TODO Probably we need to save the file before generation + + /* Images */ + if ((ll = edje_edit_images_list_get(obj))) + { + BUF_APPEND(I0"images {\n"); + + EINA_LIST_FOREACH(ll, l, entry) + { + int comp = edje_edit_image_compression_type_get(obj, entry); + if (comp < 0) continue; + + BUF_APPENDF(I1"image: \"%s\" ", entry); + + if (comp == EDJE_EDIT_IMAGE_COMP_LOSSY) + BUF_APPENDF("LOSSY %d;\n", + edje_edit_image_compression_rate_get(obj, entry)); + else if (comp == EDJE_EDIT_IMAGE_COMP_RAW) + BUF_APPEND("RAW;\n"); + else if (comp == EDJE_EDIT_IMAGE_COMP_USER) + BUF_APPEND("USER;\n"); + else + BUF_APPEND("COMP;\n"); + } + BUF_APPEND(I0"}\n\n"); + edje_edit_string_list_free(ll); + + if (!ret) + { + ERR("Generating EDC for Images"); + eina_strbuf_free(buf); + return NULL; + } + } + + /* Fonts */ + if (ed->file->fonts) + { + Eina_Iterator *it; + + it = eina_hash_iterator_data_new(ed->file->fonts); + if (it) + { + BUF_APPEND(I0"fonts {\n"); + + EINA_ITERATOR_FOREACH(it, fnt) + BUF_APPENDF(I1"font: \"%s\" \"%s\";\n", fnt->file, + fnt->entry); + + BUF_APPEND(I0"}\n\n"); + eina_iterator_free(it); + + if (!ret) + { + ERR("Generating EDC for Fonts"); + eina_strbuf_free(buf); + return NULL; + } + } + } + + /* Data */ + if ((ll = edje_edit_data_list_get(obj))) + { + BUF_APPEND(I0 "data {\n"); + + EINA_LIST_FOREACH(ll, l, entry) + BUF_APPENDF(I1 "item: \"%s\" \"%s\";\n", entry, + edje_edit_data_value_get(obj, entry)); + + BUF_APPEND(I0 "}\n\n"); + edje_edit_string_list_free(ll); + + if (!ret) + { + ERR("Generating EDC for Data"); + eina_strbuf_free(buf); + return NULL; + } + } + + /* Color Classes */ + if ((ll = edje_edit_color_classes_list_get(obj))) + { + BUF_APPEND(I0 "color_classes {\n"); + + EINA_LIST_FOREACH(ll, l, entry) + _edje_generate_source_of_colorclass(ed, entry, buf); + + BUF_APPEND(I0 "}\n\n"); + edje_edit_string_list_free(ll); + + if (!ret) + { + ERR("Generating EDC for Color Classes"); + eina_strbuf_free(buf); + return NULL; + } + } + + /* Styles */ + if ((ll = edje_edit_styles_list_get(obj))) + { + BUF_APPEND(I0 "styles {\n"); + EINA_LIST_FOREACH(ll, l, entry) + _edje_generate_source_of_style(ed, entry, buf); + BUF_APPEND(I0 "}\n\n"); + edje_edit_string_list_free(ll); + + if (!ret) + { + ERR("Generating EDC for Styles"); + eina_strbuf_free(buf); + return NULL; + } + } + + /* Externals */ + if ((ll = edje_edit_externals_list_get(obj))) + { + BUF_APPEND(I0 "externals {\n"); + EINA_LIST_FOREACH(ll, l, entry) + BUF_APPENDF(I1 "external: \"%s\";\n", entry); + + BUF_APPEND(I0 "}\n\n"); + edje_edit_string_list_free(ll); + + if (!ret) + { + ERR("Generating EDC for Externals"); + eina_strbuf_free(buf); + return NULL; + } + } + + /* Collections */ + if (ed->file->collection) + { + Eina_Iterator *it; + Edje_Part_Collection_Directory_Entry *pce; + BUF_APPEND("collections {\n"); + + it = eina_hash_iterator_data_new(ed->file->collection); + + if (!it) + { + ERR("Generating EDC for Collections"); + eina_strbuf_free(buf); + return NULL; + } + + EINA_ITERATOR_FOREACH(it, pce) + { + ret &= _edje_generate_source_of_group(ed, pce, buf); + } + + eina_iterator_free(it); + BUF_APPEND("}\n\n"); + } + + return buf; +} + + + +/*********************/ +/* SAVING ROUTINES */ +/*********************/ +//////////////////////////////////////// +typedef struct _SrcFile SrcFile; +typedef struct _SrcFile_List SrcFile_List; + +struct _SrcFile +{ + char *name; + const char *file; +}; + +struct _SrcFile_List +{ + Eina_List *list; +}; + +static Eet_Data_Descriptor *_srcfile_edd = NULL; +static Eet_Data_Descriptor *_srcfile_list_edd = NULL; + +static void +source_edd(void) +{ + Eet_Data_Descriptor_Class eddc; + + if (_srcfile_edd) return; + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile", sizeof(SrcFile)); + _srcfile_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "name", name, EET_T_INLINED_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "file", file, EET_T_INLINED_STRING); + + eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile_list", sizeof(SrcFile_List)); + _srcfile_list_edd = eet_data_descriptor_stream_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_LIST(_srcfile_list_edd, SrcFile_List, "list", list, _srcfile_edd); +} +///////////////////////////////////////// + +static Eina_Bool +_edje_edit_edje_file_save(Eet_File *eetf, Edje_File *ef) +{ + /* Write Edje_File structure */ + INF("** Writing Edje_File* ed->file"); + if (eet_data_write(eetf, _edje_edd_edje_file, "edje/file", ef, 1) <= 0) + { + ERR("Error. unable to write \"edje_file\" entry to \"%s\"", ef->path); + return EINA_FALSE; + } + return EINA_TRUE; +} + +static Eina_Bool +_edje_edit_collection_save(Eet_File *eetf, Edje_Part_Collection *epc) +{ + char buf[256]; + + snprintf(buf, sizeof(buf), "edje/collections/%i", epc->id); + + if (eet_data_write(eetf, _edje_edd_edje_part_collection, buf, epc, 1) > 0) + return EINA_TRUE; + + ERR("Error. unable to write \"%s\" part entry", buf); + return EINA_FALSE; +} + +static Eina_Bool +_edje_edit_source_save(Eet_File *eetf, Evas_Object *obj) +{ + SrcFile *sf; + SrcFile_List *sfl; + Eina_Strbuf *source_file; + Eina_Bool ret = EINA_TRUE; + + source_file = _edje_generate_source(obj); + if (!source_file) + { + ERR("Can't create edc source"); + return EINA_FALSE; + } + + //open the temp file and put the contents in SrcFile + sf = _alloc(sizeof(SrcFile)); + if (!sf) + { + ERR("Unable to create source file struct"); + ret = EINA_FALSE; + goto save_free_source; + } + sf->name = strdup("generated_source.edc"); + if (!sf->name) + { + ERR("Unable to alloc filename"); + ret = EINA_FALSE; + goto save_free_sf; + } + + sf->file = eina_strbuf_string_get(source_file); + + //create the needed list of source files (only one) + sfl = _alloc(sizeof(SrcFile_List)); + if (!sfl) + { + ERR("Unable to create file list"); + ret = EINA_FALSE; + goto save_free_filename; + } + sfl->list = NULL; + sfl->list = eina_list_append(sfl->list, sf); + if (!sfl->list) + { + ERR("Error. unable to append file in list"); + ret = EINA_FALSE; + goto save_free_sfl; + } + + // write the sources list to the eet file + source_edd(); + if (eet_data_write(eetf, _srcfile_list_edd, "edje_sources", sfl, 1) <= 0) + { + ERR("Unable to write edc source"); + ret = EINA_FALSE; + } + + /* Clear stuff */ + eina_list_free(sfl->list); +save_free_sfl: + free(sfl); +save_free_filename: + free(sf->name); +save_free_sf: + free(sf); +save_free_source: + eina_strbuf_free(source_file); + return ret; +} + +Eina_Bool +_edje_edit_internal_save(Evas_Object *obj, int current_only) +{ + Edje_File *ef; + Eet_File *eetf; + + GET_ED_OR_RETURN(EINA_FALSE); + + ef = ed->file; + if (!ef) return EINA_FALSE; + + INF("*********** Saving file ******************"); + INF("** path: %s", ef->path); + + /* Open the eet file */ + eetf = eet_open(ef->path, EET_FILE_MODE_READ_WRITE); + if (!eetf) + { + ERR("Error. unable to open \"%s\" for writing output", + ef->path); + return EINA_FALSE; + } + + /* Set compiler name */ + if (strcmp(ef->compiler, "edje_edit")) + { + _edje_if_string_free(ed, ef->compiler); + ef->compiler = (char *)eina_stringshare_add("edje_edit"); + } + + if (!_edje_edit_edje_file_save(eetf, ef)) + { + eet_close(eetf); + return EINA_FALSE; + } + + if (current_only) + { + if (ed->collection) + { + INF("** Writing Edje_Part_Collection* ed->collection " + "[id: %d]", ed->collection->id); + if (!_edje_edit_collection_save(eetf, ed->collection)) + { + eet_close(eetf); + return EINA_FALSE; + } + } + } + else + { + Eina_List *l; + Edje_Part_Collection *edc; + Edje_Part_Collection_Directory_Entry *ce; + Eina_Iterator *it; + + INF("** Writing all collections"); + + it = eina_hash_iterator_data_new(ef->collection); + while (eina_iterator_next(it, (void **)&ce)) + { + if (ce->ref) + { + INF("** Writing hash Edje_Part_Collection* ed->collection " + "[id: %d]", ce->id); + if(!_edje_edit_collection_save(eetf, ce->ref)) + { + eet_close(eetf); + return EINA_FALSE; + } + } + } + eina_iterator_free(it); + + EINA_LIST_FOREACH(ef->collection_cache, l, edc) + { + INF("** Writing cache Edje_Part_Collection* ed->collection " + "[id: %d]", edc->id); + if(!_edje_edit_collection_save(eetf, edc)) + { + eet_close(eetf); + return EINA_FALSE; + } + } + } + + if (eed->bytecode_dirty || eed->script_need_recompile) + { + char buf[64]; + Eina_Iterator *it; + Program_Script *ps; + Eina_List *deathnote = NULL; + + if (eed->bytecode_dirty) + { + snprintf(buf, sizeof(buf), "edje/scripts/embryo/compiled/%i", + ed->collection->id); + eet_write(eetf, buf, eed->bytecode, eed->bytecode_size, 1); + free(eed->bytecode); + eed->bytecode = NULL; + eed->bytecode_size = 0; + eed->bytecode_dirty = EINA_FALSE; + } + + if (eed->embryo_source_dirty) + { + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i", + ed->collection->id); + eet_write(eetf, buf, eed->embryo_source, + strlen(eed->embryo_source) +1, 1); + eed->embryo_source_dirty = EINA_FALSE; + } + + it = eina_hash_iterator_data_new(eed->program_scripts); + EINA_ITERATOR_FOREACH(it, ps) + { + if (ps->dirty) + { + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i/%i", + ed->collection->id, ps->id); + eet_write(eetf, buf, ps->code, strlen(ps->code) + 1, 1); + ps->dirty = EINA_FALSE; + } + else if (ps->delete_me) + { + snprintf(buf, sizeof(buf), "edje/scripts/embryo/source/%i/%i", + ed->collection->id, ps->id); + eet_delete(eetf, buf); + deathnote = eina_list_append(deathnote, ps); + } + } + eina_iterator_free(it); + + EINA_LIST_FREE(deathnote, ps) + eina_hash_del(eed->program_scripts, &ps->id, ps); + } + + if (!_edje_edit_source_save(eetf, obj)) + { + eet_close(eetf); + return EINA_FALSE; + } + + eet_close(eetf); + + /* Update mtime */ + { + struct stat st; + if (stat(ed->path, &st) != 0) + return EINA_FALSE; + ef->mtime = st.st_mtime; + } + + INF("*********** Saving DONE ******************"); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_edit_save(Evas_Object *obj) +{ + eina_error_set(0); + + return _edje_edit_internal_save(obj, 1); +} + +EAPI Eina_Bool +edje_edit_save_all(Evas_Object *obj) +{ + eina_error_set(0); + + return _edje_edit_internal_save(obj, 0); +} + +EAPI void +edje_edit_print_internal_status(Evas_Object *obj) +{ +/* + Edje_Program *epr; + unsigned int i; + int j; +*/ + eina_error_set(0); + + GET_EED_OR_RETURN(); + + _edje_generate_source(obj); +/* + INF("****** CHECKIN' INTERNAL STRUCTS STATUS *********"); + + INF("path: '%s', group: '%s', parent: '%s'", + ed->path, ed->group, ed->parent); + + INF("Parts [table:%d list:%d]", ed->table_parts_size, + ed->collection->parts_count); + for (i = 0; i < ed->collection->parts_count; ++i) + { + Edje_Real_Part *rp; + Edje_Part *p; + + p = ed->collection->parts[i]; + + rp = ed->table_parts[p->id % ed->table_parts_size]; + printf("part[%d]: '%s' ", p->id, p->name); + if (p == rp->part) + printf("OK!\n"); + else + printf("WRONG (table[%d]->name = '%s')\n", p->id, rp->part->name); + } + + INF("Programs [table:%d list:%d,%d,%d,%d,%d]", ed->table_programs_size, + ed->collection->programs.fnmatch_count, + ed->collection->programs.strcmp_count, + ed->collection->programs.strncmp_count, + ed->collection->programs.strrncmp_count, + ed->collection->programs.nocmp_count); + for(j = 0; j < ed->table_programs_size; ++j) + { + epr = ed->table_programs[i % ed->table_programs_size]; + printf("program[%d]: '%s'\n", epr->id, epr->name); + } + + INF("****************** END ************************"); + */ +} diff --git a/src/lib/edje_embryo.c b/src/lib/edje_embryo.c new file mode 100644 index 0000000..ffcbc64 --- /dev/null +++ b/src/lib/edje_embryo.c @@ -0,0 +1,3187 @@ +#include "edje_private.h" + +/* + * ALREADY EXPORTED BY EMBRYO: + * + * enum Float_Round_Method { + * ROUND, FLOOR, CEIL, TOZERO + * }; + * enum Float_Angle_Mode { + * RADIAN, DEGREES, GRADES + * }; + * + * numargs(); + * getarg(arg, index=0); + * setarg(arg, index=0, value); + * + * Float:atof(string[]); + * Float:fract(Float:value); + * round(Float:value, Float_Round_Method:method=ROUND); + * Float:sqrt(Float:value); + * Float:pow(Float:value, Float:exponent); + * Float:log(Float:value, Float:base=10.0); + * Float:sin(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:cos(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:tan(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:abs(Float:value); + * atoi(str[]); + * fnmatch(glob[], str[]); + * strcmp(str1[], str2[]); + * strncmp(str1[], str2[]); + * strcpy(dst[], src[]); + * strncpy(dst[], src[], n); + * strlen(str[]); + * strcat(dst[], src[]); + * strncat(dst[], src[], n); + * strprep(dst[], src[]); + * strnprep(dst[], src[], n); + * strcut(dst[], str[], n, n2); + * snprintf(dst[], dstn, fmt[], ...); + * strstr(str[], ndl[]); + * strchr(str[], ch[]); + * strrchr(str[], ch[]); + * rand(); + * Float:randf(); + * Float:seconds(); + * date(&year, &month, &day, &yearday, &weekday, &hr, &min, &Float:sec); + * + */ + +/* EDJE... + * + * implemented so far as examples: + * + * enum Msg_Type { + * MSG_NONE, MSG_STRING, MSG_INT, MSG_FLOAT, MSG_STRING_SET, MSG_INT_SET, + * MSG_FLOAT_SET, MSG_STRING_INT, MSG_INT_FLOAT, MSG_STRING_INT_SET, + * MSG_INT_FLOAT_SET + * }; + * + * get_int(id) + * set_int(id, v) + * Float:get_float (id) + * set_float(id, Float:v) + * get_strlen(id) + * get_str(id, dst[], maxlen) + * set_str(id, str[]) + * timer(Float:in, fname[], val) + * cancel_timer(id) + * anim(Float:len, fname[], val) + * cancel_anim(id) + * emit(sig[], src[]) + * set_state(part_id, state[], Float:state_val) + * get_state(part_id, dst[], maxlen, &Float:val) + * set_tween_state(part_id, Float:tween, state1[], Float:state1_val, state2[], Float:state2_val) + * play_sample(sample_name, speed) + * play_tone(tone_name, duration) + * run_program(program_id) + * Direction:get_drag_dir(part_id) + * get_drag(part_id, &Float:dx, &Float:&dy) + * set_drag(part_id, Float:dx, Float:dy) + * get_drag_size(part_id, &Float:dx, &Float:&dy) + * set_drag_size(part_id, Float:dx, Float:dy) + * set_text(part_id, str[]) + * get_text(part_id, dst[], maxlen) + * get_min_size(w, h) + * get_max_size(w, h) + * set_color_class(class[], r, g, b, a) + * get_color_class(class[], &r, &g, &b, &a) + * set_text_class(class[], font[], Float:size) + * get_text_class(class[], font[], &Float:size) + * get_drag_step(part_id, &Float:dx, &Float:&dy) + * set_drag_step(part_id, Float:dx, Float:dy) + * get_drag_page(part_id, &Float:dx, &Float:&dy) + * set_drag_page(part_id, Float:dx, Float:dy) + * get_geometry(part_id, &Float:x, &Float:y, &Float:w, &Float:h) + * get_mouse(&x, &y) + * stop_program(program_id) + * stop_programs_on(part_id) + * set_min_size(w, h) + * set_max_size(w, h) + * send_message(Msg_Type:type, id, ...) + * + * count(id) + * remove(id, n) + * + * append_int(id, v) + * prepend_int(id, v) + * insert_int(id, n, v) + * replace_int(id, n, v) + * fetch_int(id, n) + * + * append_str(id, str[]) + * prepend_str(id, str[]) + * insert_str(id, n, str[]) + * replace_str(id, n, str[]) + * fetch_str(id, n, dst[], maxlen) + * + * append_float(id, Float:v) + * prepend_float(id, Float:v) + * insert_float(id, n, Float:v) + * replace_float(id, n, Float:v) + * Float:fetch_float(id, n) + * + * custom_state(part_id, state[], Float:state_val = 0.0) + * set_state_val(part_id, State_Param:param, ...) + * get_state_val(part_id, State_Param:param, ...) + * + * Supported parameters: + * align[Float:x, Float:y] + * min[w, h] + * max[w, h] + * step[x,y] + * aspect[Float:min, Float:max] + * color[r,g,b,a] + * color2[r,g,b,a] + * color3[r,g,b,a] + * aspect_preference + * rel1[relx,rely] + * rel1[part_id,part_id] + * rel1[offx,offy] + * rel2[relx,relyr] + * rel2[part_id,part_id] + * rel2[offx,offy] + * image[image_id] <- all images have an Id not name in the edje + * border[l,r,t,b] + * fill[smooth] + * fill[pos_relx,pos_rely,pos_offx,pos_offy] + * fill[sz_relx,sz_rely,sz_offx,sz_offy] + * color_class + * text[text] + * text[text_class] + * text[font] + * text[size] + * text[style] + * text[fit_x,fit_y] + * text[min_x,min_y] + * text[align_x,align_y] + * visible[on] + * map_on[on] + * map_persp[part_id] + * map_light[part_id] + * map_rot_center[part_id] + * map_rot_x[deg] + * map_rot_y[deg] + * map_rot_z[deg] + * map_back_cull[on] + * map_persp_on[on] + * persp_zplane[z] + * persp_focal[z] + * + * ** part_id and program_id need to be able to be "found" from strings + * + * get_drag_count(part_id, &Float:dx, &Float:&dy) + * set_drag_count(part_id, Float:dx, Float:dy) + * set_drag_confine(part_id, confine_part_id) + * get_size(&w, &h); + * resize_request(w, h) + * get_mouse_buttons() + * //set_type(part_id, Type:type) + * //set_effect(part_id, Effect:fx) + * set_mouse_events(part_id, ev) + * get_mouse_events(part_id) + * set_repeat_events(part_id, rep) + * get_repeat_events(part_id) + * set_clip(part_id, clip_part_id) + * get_clip(part_id) + * + * part_swallow(part_id, group_name) + * + * external_param_get_int(id, param_name[]) + * external_param_set_int(id, param_name[], value) + * Float:external_param_get_float(id, param_name[]) + * external_param_set_float(id, param_name[], Float:value) + * external_param_get_strlen(id, param_name[]) + * external_param_get_str(id, param_name[], value[], value_maxlen) + * external_param_set_str(id, param_name[], value[]) + * external_param_get_choice_len(id, param_name[]) + * external_param_get_choice(id, param_name[], value[], value_maxlen) + * external_param_set_choice(id, param_name[], value[]) + * external_param_get_bool(id, param_name[]) + * external_param_set_bool(id, param_name[], value) + * + * ADD/DEL CUSTOM OBJECTS UNDER SOLE EMBRYO SCRIPT CONTROL + * + */ + +/* get_int(id) */ +static Embryo_Cell +_edje_embryo_fn_get_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + return (Embryo_Cell)_edje_var_int_get(ed, (int)params[1]); +} + +/* set_int(id, v) */ +static Embryo_Cell +_edje_embryo_fn_set_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + _edje_var_int_set(ed, (int)params[1], (int)params[2]); + return 0; +} + +/* get_float(id) */ +static Embryo_Cell +_edje_embryo_fn_get_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + float v; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + v = (float)_edje_var_float_get(ed, params[1]); + return EMBRYO_FLOAT_TO_CELL(v); +} + +/* set_float(id, v) */ +static Embryo_Cell +_edje_embryo_fn_set_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + float v; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + v = EMBRYO_CELL_TO_FLOAT(params[2]); + _edje_var_float_set(ed, (int)params[1], (double)v); + return 0; +} + +/* get_str(id, dst[], maxlen) */ +static Embryo_Cell +_edje_embryo_fn_get_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *s; + + CHKPARAM(3); + if (params[3] < 1) return 0; + ed = embryo_program_data_get(ep); + s = (char *)_edje_var_str_get(ed, (int)params[1]); + if (s) + { + if ((int) strlen(s) < params[3]) + { + SETSTR(s, params[2]); + } + else + { + char *ss; + + ss = alloca(strlen(s) + 1); + strcpy(ss, s); + ss[params[3] - 1] = 0; + SETSTR(ss, params[2]); + } + } + else + { + SETSTR("", params[2]); + } + return 0; +} + +/* get_strlen(id) */ +static Embryo_Cell +_edje_embryo_fn_get_strlen(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *s; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + s = (char *)_edje_var_str_get(ed, (int)params[1]); + if (s) + { + return strlen(s); + } + return 0; +} + +/* set_str(id, str[]) */ +static Embryo_Cell +_edje_embryo_fn_set_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *s; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + GETSTR(s, params[2]); + if (s) + { + _edje_var_str_set(ed, (int)params[1], s); + } + return 0; +} + +/* count(id) */ +static Embryo_Cell +_edje_embryo_fn_count(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(1); + + return (Embryo_Cell)_edje_var_list_count_get(ed, (int) params[1]); +} + +/* remove(id, n) */ +static Embryo_Cell +_edje_embryo_fn_remove(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(2); + + _edje_var_list_remove_nth(ed, (int) params[1], (int) params[2]); + + return 0; +} + +/* append_int(id, var) */ +static Embryo_Cell +_edje_embryo_fn_append_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(2); + + _edje_var_list_int_append(ed, (int) params[1], (int) params[2]); + + return 0; +} + +/* prepend_int(id, var) */ +static Embryo_Cell +_edje_embryo_fn_prepend_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(2); + + _edje_var_list_int_prepend(ed, (int) params[1], (int) params[2]); + + return 0; +} + +/* insert_int(id, pos, var) */ +static Embryo_Cell +_edje_embryo_fn_insert_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(3); + + _edje_var_list_int_insert(ed, (int) params[1], (int) params[2], + (int) params[3]); + + return 0; +} + +/* replace_int(id, pos, var) */ +static Embryo_Cell +_edje_embryo_fn_replace_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(3); + + _edje_var_list_nth_int_set(ed, (int) params[1], (int) params[2], + (int) params[3]); + + return 0; +} + +/* fetch_int(id, pos) */ +static Embryo_Cell +_edje_embryo_fn_fetch_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(2); + + return _edje_var_list_nth_int_get(ed, (int) params[1], + (int) params[2]); +} + +/* append_str(id, str[]) */ +static Embryo_Cell +_edje_embryo_fn_append_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + char *s; + + CHKPARAM(2); + + GETSTR(s, params[2]); + if (s) + _edje_var_list_str_append(ed, (int) params[1], s); + + return 0; +} + +/* prepend_str(id, str[]) */ +static Embryo_Cell +_edje_embryo_fn_prepend_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + char *s; + + CHKPARAM(2); + + GETSTR(s, params[2]); + if (s) + _edje_var_list_str_prepend(ed, (int) params[1], s); + + return 0; +} + +/* insert_str(id, pos, str[]) */ +static Embryo_Cell +_edje_embryo_fn_insert_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + char *s; + + CHKPARAM(3); + + GETSTR(s, params[3]); + if (s) + _edje_var_list_str_insert(ed, (int) params[1], (int) params[2], s); + + return 0; +} + +/* replace_str(id, pos, str[]) */ +static Embryo_Cell +_edje_embryo_fn_replace_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + char *s; + + CHKPARAM(3); + + GETSTR(s, params[3]); + if (s) + _edje_var_list_nth_str_set(ed, (int) params[1], (int) params[2], s); + + return 0; +} + + +/* fetch_str(id, pos, dst[], maxlen) */ +static Embryo_Cell +_edje_embryo_fn_fetch_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + char *s; + + CHKPARAM(4); + + s = (char *) _edje_var_list_nth_str_get(ed, (int) params[1], + (int) params[2]); + if (s) + { + if ((int) strlen(s) < params[4]) + { + SETSTR(s, params[3]); + } + else + { + char *ss; + + ss = alloca(strlen(s) + 1); + strcpy(ss, s); + ss[params[4] - 1] = 0; + SETSTR(ss, params[3]); + } + } + else + { + SETSTR("", params[3]); + } + + return 0; +} + +/* append_float(id, Float:f) */ +static Embryo_Cell +_edje_embryo_fn_append_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + float f; + + CHKPARAM(2); + + f = EMBRYO_CELL_TO_FLOAT(params[2]); + _edje_var_list_float_append(ed, (int) params[1], f); + + return 0; +} + +/* prepend_float(id, Float:f) */ +static Embryo_Cell +_edje_embryo_fn_prepend_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + float f; + + CHKPARAM(2); + + f = EMBRYO_CELL_TO_FLOAT(params[2]); + _edje_var_list_float_prepend(ed, (int) params[1], f); + + return 0; +} + +/* insert_float(id, pos, Float:f) */ +static Embryo_Cell +_edje_embryo_fn_insert_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + float f; + + CHKPARAM(3); + + f = EMBRYO_CELL_TO_FLOAT(params[3]); + _edje_var_list_float_insert(ed, (int) params[1], (int) params[2], f); + + return 0; +} + +/* replace_float(id, pos, Float:f) */ +static Embryo_Cell +_edje_embryo_fn_replace_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + + CHKPARAM(3); + + _edje_var_list_nth_float_set(ed, (int) params[1], (int) params[2], + EMBRYO_CELL_TO_FLOAT(params[3])); + + return 0; +} + +/* Float:fetch_float(id, pos) */ +static Embryo_Cell +_edje_embryo_fn_fetch_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + float f; + + CHKPARAM(2); + + f = _edje_var_list_nth_float_get(ed, (int) params[1], (int) params[2]); + + return EMBRYO_FLOAT_TO_CELL(f); +} + +/* timer(Float:in, fname[], val) */ +static Embryo_Cell +_edje_embryo_fn_timer(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *fname = NULL; + float f; + double in; + int val; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + GETSTR(fname, params[2]); + if ((!fname)) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + in = (double)f; + val = params[3]; + return _edje_var_timer_add(ed, in, fname, val); +} + +/* cancel_timer(id) */ +static Embryo_Cell +_edje_embryo_fn_cancel_timer(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int id; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + id = params[1]; + if (id <= 0) return 0; + _edje_var_timer_del(ed, id); + return 0; +} + +/* anim(Float:len, fname[], val) */ +static Embryo_Cell +_edje_embryo_fn_anim(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *fname = NULL; + float f; + double len; + int val; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + GETSTR(fname, params[2]); + if ((!fname)) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + len = (double)f; + val = params[3]; + return _edje_var_anim_add(ed, len, fname, val); +} + +/* cancel_anim(id) */ +static Embryo_Cell +_edje_embryo_fn_cancel_anim(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int id; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + id = params[1]; + if (id <= 0) return 0; + _edje_var_anim_del(ed, id); + return 0; +} + +/* set_min_size(Float:w, Float:h) */ +static Embryo_Cell +_edje_embryo_fn_set_min_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + float f = 0.0; + double w = 0.0, h = 0.0; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + f = EMBRYO_CELL_TO_FLOAT(params[1]); + w = (double)f; + f = EMBRYO_CELL_TO_FLOAT(params[2]); + h = (double)f; + + if (w < 0.0) w = 0.0; + if (h < 0.0) h = 0.0; + ed->collection->prop.min.w = w; + ed->collection->prop.min.h = h; + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + return 0; +} + +/* set_max_size(Float:w, Float:h) */ +static Embryo_Cell +_edje_embryo_fn_set_max_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + float f = 0.0; + double w = 0.0, h = 0.0; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + f = EMBRYO_CELL_TO_FLOAT(params[1]); + w = (double)f; + f = EMBRYO_CELL_TO_FLOAT(params[2]); + h = (double)f; + + if (w < 0.0) w = 0.0; + if (h < 0.0) h = 0.0; + ed->collection->prop.max.w = w; + ed->collection->prop.max.h = h; + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + + return 0; +} + +/* stop_program(program_id) */ +static Embryo_Cell +_edje_embryo_fn_stop_program(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int program_id = 0; + Edje_Running_Program *runp; + Eina_List *l; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + program_id = params[1]; + if (program_id < 0) return 0; + + ed->walking_actions = 1; + + EINA_LIST_FOREACH(ed->actions, l, runp) + if (program_id == runp->program->id) + _edje_program_end(ed, runp); + + ed->walking_actions = 0; + + return 0; +} + +/* stop_programs_on(part_id) */ +static Embryo_Cell +_edje_embryo_fn_stop_programs_on(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + if (rp) + { + /* there is only ever 1 program acting on a part at any time */ + if (rp->program) _edje_program_end(ed, rp->program); + } + return 0; +} + +/* get_mouse(&x, &y) */ +static Embryo_Cell +_edje_embryo_fn_get_mouse(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Evas_Coord x = 0, y = 0; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + evas_pointer_canvas_xy_get(ed->base.evas, &x, &y); + x -= ed->x; + y -= ed->y; + SETINT((int)x, params[1]); + SETINT((int)y, params[2]); + return 0; +} + +/* get_mouse_buttons() */ +static Embryo_Cell +_edje_embryo_fn_get_mouse_buttons(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + + CHKPARAM(0); + ed = embryo_program_data_get(ep); + return evas_pointer_button_down_mask_get(ed->base.evas); +} + +/* emit(sig[], src[]) */ +static Embryo_Cell +_edje_embryo_fn_emit(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *sig = NULL, *src = NULL; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + GETSTR(sig, params[1]); + GETSTR(src, params[2]); + if ((!sig) || (!src)) return 0; + _edje_emit(ed, sig, src); + return 0; +} + +/* get_part_id(part[]) */ +static Embryo_Cell +_edje_embryo_fn_get_part_id(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Edje_Part_Collection *col; + Edje_Part **part; + char *p; + unsigned int i; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + GETSTR(p, params[1]); + if (!p) return -1; + col = ed->collection; + if (!col) return -1; + part = col->parts; + for (i = 0; i < col->parts_count; i++, part++) + { + if (!(*part)->name) continue; + if (!strcmp((*part)->name, p)) return (*part)->id; + } + return -1; +} + +static Embryo_Cell +_edje_embryo_fn_play_sample(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *sample_name = NULL; + float speed = 1.0; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + GETSTR(sample_name, params[1]); + if ((!sample_name)) return 0; + speed = EMBRYO_CELL_TO_FLOAT(params[2]); + _edje_multisense_internal_sound_sample_play(ed, sample_name, (double)speed); + return 0; +} + +static Embryo_Cell +_edje_embryo_fn_play_tone(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *tone_name = NULL; + float duration = 0.1; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + GETSTR(tone_name, params[1]); + if ((!tone_name)) return 0; + duration = EMBRYO_CELL_TO_FLOAT(params[2]); + _edje_multisense_internal_sound_tone_play(ed, tone_name, (double) duration); + return 0; +} + +/* set_state(part_id, state[], Float:state_val) */ +static Embryo_Cell +_edje_embryo_fn_set_state(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *state = NULL; + int part_id = 0; + float f = 0.0; + double value = 0.0; + Edje_Real_Part *rp; + + if (!(HASNPARAMS(2) || HASNPARAMS(3))) return -1; + + ed = embryo_program_data_get(ep); + GETSTR(state, params[2]); + if ((!state)) return 0; + part_id = params[1]; + if (part_id < 0) return 0; + if (HASNPARAMS(3)) + { + f = EMBRYO_CELL_TO_FLOAT(params[3]); + value = (double)f; + } + else + value = 0.0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + if (rp) + { + if (rp->program) _edje_program_end(ed, rp->program); + _edje_part_description_apply(ed, rp, state, value, NULL, 0.0); + _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, ZERO, ZERO, ZERO); + _edje_recalc(ed); + } + return 0; +} + +/* get_state(part_id, dst[], maxlen, &Float:val) */ +static Embryo_Cell +_edje_embryo_fn_get_state(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + const char *s; + + CHKPARAM(4); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + if (rp->chosen_description) + { + SETFLOAT(rp->chosen_description->state.value, params[4]); + s = rp->chosen_description->state.name; + if (s) + { + if ((int) strlen(s) < params[3]) + { + SETSTR(s, params[2]); + } + else + { + char *ss; + + ss = alloca(strlen(s) + 1); + strcpy(ss, s); + ss[params[3] - 1] = 0; + SETSTR(ss, params[2]); + } + } + else + { + SETSTR("", params[2]); + } + } + else + { + SETFLOAT(0.0, params[4]); + SETSTR("", params[2]); + } + return 0; +} + +/* set_tween_state(part_id, Float:tween, state1[], Float:state1_val, state2[], Float:state2_val) */ +static Embryo_Cell +_edje_embryo_fn_set_tween_state(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *state1 = NULL, *state2 = NULL; + int part_id = 0; + float f = 0.0; + double tween = 0.0, value1 = 0.0, value2 = 0.0; + Edje_Real_Part *rp; + + CHKPARAM(6); + ed = embryo_program_data_get(ep); + GETSTR(state1, params[3]); + GETSTR(state2, params[5]); + if ((!state1) || (!state2)) return 0; + part_id = params[1]; + if (part_id < 0) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[2]); + tween = (double)f; + f = EMBRYO_CELL_TO_FLOAT(params[4]); + value1 = (double)f; + f = EMBRYO_CELL_TO_FLOAT(params[6]); + value2 = (double)f; + rp = ed->table_parts[part_id % ed->table_parts_size]; + if (rp) + { + if (rp->program) _edje_program_end(ed, rp->program); + _edje_part_description_apply(ed, rp, state1, value1, state2, value2); + _edje_part_pos_set(ed, rp, EDJE_TWEEN_MODE_LINEAR, FROM_DOUBLE(tween), ZERO, ZERO); + _edje_recalc(ed); + } + return 0; +} + +/* run_program(program_id) */ +static Embryo_Cell +_edje_embryo_fn_run_program(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int program_id = 0; + Edje_Program *pr; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + program_id = params[1]; + if (program_id < 0) return 0; + pr = ed->table_programs[program_id % ed->table_programs_size]; + if (pr) + { + _edje_program_run(ed, pr, 0, "", ""); + } + return 0; +} + +/* get_drag_dir(part_id) */ +static Embryo_Cell +_edje_embryo_fn_get_drag_dir(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(1); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + return edje_object_part_drag_dir_get(ed->obj, rp->part->name); +} + +/* get_drag(part_id, &Float:dx, &Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_get_drag(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + double dx = 0.0, dy = 0.0; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_value_get(ed->obj, rp->part->name, &dx, &dy); + SETFLOAT(dx, params[2]); + SETFLOAT(dy, params[3]); + + return 0; +} + +/* set_drag(part_id, Float:dx, Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_set_drag(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_value_set(ed->obj, rp->part->name, + (double)EMBRYO_CELL_TO_FLOAT(params[2]), + (double)EMBRYO_CELL_TO_FLOAT(params[3])); + return(0); +} + +/* get_drag_size(part_id, &Float:dx, &Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_get_drag_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + double dx = 0.0, dy = 0.0; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_size_get(ed->obj, rp->part->name, &dx, &dy); + SETFLOAT(dx, params[2]); + SETFLOAT(dy, params[3]); + + return 0; +} + +/* set_drag_size(part_id, Float:dx, Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_set_drag_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_size_set(ed->obj, rp->part->name, + (double)EMBRYO_CELL_TO_FLOAT(params[2]), + (double)EMBRYO_CELL_TO_FLOAT(params[3])); + return(0); +} + +/* set_text(part_id, str[]) */ +static Embryo_Cell +_edje_embryo_fn_set_text(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + char *s; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + GETSTR(s, params[2]); + if (s){ + edje_object_part_text_set(ed->obj, rp->part->name, s); + } + return(0); +} + +/* get_text(part_id, dst[], maxlen) */ +static Embryo_Cell +_edje_embryo_fn_get_text(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + char *s; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + s = (char *)edje_object_part_text_get(ed->obj, rp->part->name); + if (s) + { + if ((int) strlen(s) < params[3]) + { + SETSTR(s, params[2]); + } + else + { + char *ss; + + ss = alloca(strlen(s) + 1); + strcpy(ss, s); + ss[params[3] - 1] = 0; + SETSTR(ss, params[2]); + } + } + else + { + SETSTR("", params[2]); + } + return 0; +} + +/* get_min_size(&w, &h) */ +static Embryo_Cell +_edje_embryo_fn_get_min_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Evas_Coord w = 0, h = 0; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + edje_object_size_min_get(ed->obj, &w, &h); + SETINT(w, params[1]); + SETINT(h, params[2]); + return 0; +} + +/* get_max_size(&w, &h) */ +static Embryo_Cell +_edje_embryo_fn_get_max_size(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Evas_Coord w = 0, h = 0; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + edje_object_size_max_get(ed->obj, &w, &h); + SETINT(w, params[1]); + SETINT(h, params[2]); + return 0; + +} + +/* get_color_class(class[], &r, &g, &b, &a) */ +static Embryo_Cell +_edje_embryo_fn_get_color_class(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Edje_Color_Class *c_class; + char *class; + + CHKPARAM(5); + ed = embryo_program_data_get(ep); + GETSTR(class, params[1]); + if (!class) return 0; + c_class = _edje_color_class_find(ed, class); + if (!c_class) return 0; + SETINT(c_class->r, params[2]); + SETINT(c_class->g, params[3]); + SETINT(c_class->b, params[4]); + SETINT(c_class->a, params[5]); + return 0; +} + +/* set_color_class(class[], r, g, b, a) */ +static Embryo_Cell +_edje_embryo_fn_set_color_class(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *class; + + CHKPARAM(5); + ed = embryo_program_data_get(ep); + GETSTR(class, params[1]); + if (!class) return 0; + edje_object_color_class_set(ed->obj, class, params[2], params[3], params[4], params[5], + params[2], params[3], params[4], params[5], + params[2], params[3], params[4], params[5]); + return 0; +} + +/* set_text_class(class[], font[], Float:size) */ +static Embryo_Cell +_edje_embryo_fn_set_text_class(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *class, *font; + Evas_Font_Size fsize; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + GETSTR(class, params[1]); + GETSTR(font, params[2]); + if( !class || !font ) return 0; + fsize = (Evas_Font_Size) EMBRYO_CELL_TO_FLOAT(params[3]); + edje_object_text_class_set(ed->obj, class, font, fsize); + return 0; +} + +/* get_text_class(class[], font[], &Float:size) */ +static Embryo_Cell +_edje_embryo_fn_get_text_class(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + char *class; + Edje_Text_Class *t_class; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + GETSTR(class, params[1]); + if (!class) return 0; + t_class = _edje_text_class_find(ed, class); + if (!t_class) return 0; + SETSTR((char *)t_class->font, params[2]); + SETFLOAT(t_class->size, params[3]); + return 0; +} + +/* get_drag_step(part_id, &Float:dx, &Float:&dy) */ +static Embryo_Cell +_edje_embryo_fn_get_drag_step(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + double dx = 0.0, dy = 0.0; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_step_get(ed->obj, rp->part->name, &dx, &dy); + SETFLOAT(dx, params[2]); + SETFLOAT(dy, params[3]); + + return 0; +} + +/* set_drag_step(part_id, Float:dx, Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_set_drag_step(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_step_set(ed->obj, rp->part->name, + (double)EMBRYO_CELL_TO_FLOAT(params[2]), + (double)EMBRYO_CELL_TO_FLOAT(params[3])); + return(0); +} + +/* get_drag_page(part_id, &Float:dx, &Float:&dy) */ +static Embryo_Cell +_edje_embryo_fn_get_drag_page(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + double dx = 0.0, dy = 0.0; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_page_get(ed->obj, rp->part->name, &dx, &dy); + SETFLOAT(dx, params[2]); + SETFLOAT(dy, params[3]); + + return 0; +} + +/* get_geometry(pard_id, &x, &y, &w, &h) */ +static Embryo_Cell +_edje_embryo_fn_get_geometry(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + Evas_Coord x = 0.0, y = 0.0, w = 0.0, h = 0.0; + + CHKPARAM(5); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_geometry_get(ed->obj, rp->part->name, &x, &y, &w, &h); + SETINT(x, params[2]); + SETINT(y, params[3]); + SETINT(w, params[4]); + SETINT(h, params[5]); + + return 0; +} + +/* set_drag_page(part_id, Float:dx, Float:dy) */ +static Embryo_Cell +_edje_embryo_fn_set_drag_page(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id = 0; + Edje_Real_Part *rp; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + edje_object_part_drag_page_set(ed->obj, rp->part->name, + (double)EMBRYO_CELL_TO_FLOAT(params[2]), + (double)EMBRYO_CELL_TO_FLOAT(params[3])); + return(0); +} + +/* send_message(Msg_Type:type, id,...); */ +static Embryo_Cell +_edje_embryo_fn_send_message(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + Edje_Message_Type type; + int id, i, n; + Embryo_Cell *ptr; + + if (params[0] < (int) (sizeof(Embryo_Cell) * (2))) return 0; + ed = embryo_program_data_get(ep); + type = params[1]; + id = params[2]; + switch (type) + { + case EDJE_MESSAGE_NONE: + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, NULL); + break; + case EDJE_MESSAGE_SIGNAL: + break; + case EDJE_MESSAGE_STRING: + { + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + Edje_Message_String *emsg; + int l; + char *s; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + emsg = alloca(sizeof(Edje_Message_String)); + emsg->str = s; + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + } + break; + case EDJE_MESSAGE_INT: + { + Edje_Message_Int *emsg; + + emsg = alloca(sizeof(Edje_Message_Int)); + ptr = embryo_data_address_get(ep, params[3]); + if (ptr) emsg->val = (int)*ptr; + else emsg->val = 0; + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + break; + case EDJE_MESSAGE_FLOAT: + { + Edje_Message_Float *emsg; + float f; + + emsg = alloca(sizeof(Edje_Message_Float)); + ptr = embryo_data_address_get(ep, params[3]); + if (ptr) + { + f = EMBRYO_CELL_TO_FLOAT(*ptr); + emsg->val = (double)f; + } + else + emsg->val = 0.0; + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + break; + case EDJE_MESSAGE_STRING_SET: + { + Edje_Message_String_Set *emsg; + + n = (params[0] / sizeof(Embryo_Cell)) + 1; + emsg = alloca(sizeof(Edje_Message_String_Set) + ((n - 3 - 1) * sizeof(char *))); + emsg->count = n - 3; + for (i = 3; i < n; i++) + { + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[i]); + if (cptr) + { + int l; + char *s; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + emsg->str[i - 3] = s; + } + } + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + break; + case EDJE_MESSAGE_INT_SET: + { + Edje_Message_Int_Set *emsg; + + n = (params[0] / sizeof(Embryo_Cell)) + 1; + emsg = alloca(sizeof(Edje_Message_Int_Set) + ((n - 3 - 1) * sizeof(int))); + emsg->count = n - 3; + for (i = 3; i < n; i++) + { + ptr = embryo_data_address_get(ep, params[i]); + if (ptr) emsg->val[i - 3] = (int)*ptr; + else emsg->val[i - 3] = 0; + } + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + break; + case EDJE_MESSAGE_FLOAT_SET: + { + Edje_Message_Float_Set *emsg; + + n = (params[0] / sizeof(Embryo_Cell)) + 1; + emsg = alloca(sizeof(Edje_Message_Float_Set) + ((n - 3 - 1) * sizeof(double))); + emsg->count = n - 3; + for (i = 3; i < n; i++) + { + float f; + + ptr = embryo_data_address_get(ep, params[i]); + if (ptr) + { + f = EMBRYO_CELL_TO_FLOAT(*ptr); + emsg->val[i - 3] = (double)f; + } + else + emsg->val[i - 3] = 0.0; + } + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + break; + case EDJE_MESSAGE_STRING_INT: + { + Edje_Message_String_Int *emsg; + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + int l; + char *s; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + emsg = alloca(sizeof(Edje_Message_String_Int)); + emsg->str = s; + ptr = embryo_data_address_get(ep, params[4]); + if (ptr) emsg->val = (int)*ptr; + else emsg->val = 0; + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + { + Edje_Message_String_Float *emsg; + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + int l; + char *s; + float f; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + emsg = alloca(sizeof(Edje_Message_String_Float)); + emsg->str = s; + ptr = embryo_data_address_get(ep, params[4]); + if (ptr) + { + f = EMBRYO_CELL_TO_FLOAT(*ptr); + emsg->val = (double)f; + } + else + emsg->val = 0.0; + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + { + Edje_Message_String_Int_Set *emsg; + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + int l; + char *s; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + n = (params[0] / sizeof(Embryo_Cell)) + 1; + emsg = alloca(sizeof(Edje_Message_String_Int_Set) + ((n - 4 - 1) * sizeof(int))); + emsg->str = s; + emsg->count = n - 4; + for (i = 4; i < n; i++) + { + ptr = embryo_data_address_get(ep, params[i]); + if (ptr) emsg->val[i - 4] = (int)*ptr; + else emsg->val[i - 4] = 0; + } + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + { + Edje_Message_String_Float_Set *emsg; + Embryo_Cell *cptr; + + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + int l; + char *s; + + l = embryo_data_string_length_get(ep, cptr); + s = alloca(l + 1); + s[0] = 0; + embryo_data_string_get(ep, cptr, s); + n = (params[0] / sizeof(Embryo_Cell)) + 1; + emsg = alloca(sizeof(Edje_Message_String_Float_Set) + ((n - 4 - 1) * sizeof(double))); + emsg->str = s; + emsg->count = n - 4; + for (i = 4; i < n; i++) + { + float f; + + ptr = embryo_data_address_get(ep, params[i]); + if (ptr) + { + f = EMBRYO_CELL_TO_FLOAT(*ptr); + emsg->val[i - 4] = (double)f; + } + else + emsg->val[i - 4] = 0.0; + } + _edje_message_send(ed, EDJE_QUEUE_APP, type, id, emsg); + } + } + break; + default: + break; + } + return(0); +} + +/* custom_state(part_id, state[], Float:state_val = 0.0) */ +static Embryo_Cell +_edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Edje_Real_Part *rp; + Edje_Part_Description_Common *parent, *d = NULL; + char *name; + float val; + + CHKPARAM(3); + + if (params[1] < 0) + return 0; + + if (!(rp = ed->table_parts[params[1] % ed->table_parts_size])) + return 0; + + /* check whether this part already has a "custom" state */ + if (rp->custom) + return 0; + + GETSTR(name, params[2]); + if (!name) + return 0; + + val = EMBRYO_CELL_TO_FLOAT(params[3]); + + if (!(parent = _edje_part_description_find(ed, rp, name, val))) + return 0; + + /* now create the custom state */ + switch (rp->part->type) + { +#define ALLOC_DESC(Short, Type, To) \ + case EDJE_PART_TYPE_##Short: To = calloc(1, sizeof (Edje_Part_Description_##Type)); break; + +#define ALLOC_COPY_DESC(Short, Type, To, Spec) \ + case EDJE_PART_TYPE_##Short: \ + { \ + Edje_Part_Description_##Type *tmp; \ + Edje_Part_Description_##Type *new; \ + \ + tmp = (Edje_Part_Description_##Type *) parent; \ + \ + new = calloc(1, sizeof (Edje_Part_Description_##Type)); \ + new->Spec = tmp->Spec; \ + d = &new->common; \ + break; \ + } + + ALLOC_DESC(RECTANGLE, Common, d); + ALLOC_DESC(SWALLOW, Common, d); + ALLOC_DESC(GROUP, Common, d); + + ALLOC_COPY_DESC(IMAGE, Image, d, image); + ALLOC_COPY_DESC(TEXT, Text, d, text); + ALLOC_COPY_DESC(TEXTBLOCK, Text, d, text); + ALLOC_COPY_DESC(BOX, Box, d, box); + ALLOC_COPY_DESC(TABLE, Table, d, table); + ALLOC_COPY_DESC(EXTERNAL, External, d, external_params); + } + + if (!d) return 0; + + rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State)); + if (!rp->custom) + { + free(d); + return 0; + } + + memset(rp->custom, 0, sizeof (Edje_Real_Part_State)); + + *d = *parent; + + d->state.name = (char *)eina_stringshare_add("custom"); + d->state.value = 0.0; + + /* make sure all the allocated memory is getting copied, + * not just referenced + */ + if (rp->part->type == EDJE_PART_TYPE_IMAGE) + { + Edje_Part_Description_Image *img_desc; + Edje_Part_Description_Image *parent_img_desc; + + img_desc = (Edje_Part_Description_Image*) d; + parent_img_desc = (Edje_Part_Description_Image*) parent; + + img_desc->image.tweens_count = parent_img_desc->image.tweens_count; + img_desc->image.tweens = calloc(img_desc->image.tweens_count, + sizeof(Edje_Part_Image_Id*)); + if (img_desc->image.tweens) + { + unsigned int i; + + for (i = 0; i < parent_img_desc->image.tweens_count; ++i) + { + Edje_Part_Image_Id *iid_new; + + iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); + if (!iid_new) continue; + + *iid_new = *parent_img_desc->image.tweens[i]; + + img_desc->image.tweens[i] = iid_new; + } + } + } + +#define DUP(x) x ? (char *)eina_stringshare_add(x) : NULL + d->color_class = DUP(d->color_class); + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text_desc; + + text_desc = (Edje_Part_Description_Text*) d; + + text_desc->text.text_class = DUP(text_desc->text.text_class); + text_desc->text.text.str = DUP(edje_string_get(&text_desc->text.text)); + text_desc->text.text.id = 0; + text_desc->text.font.str = DUP(edje_string_get(&text_desc->text.font)); + text_desc->text.font.id = 0; + text_desc->text.style.str = DUP(edje_string_get(&text_desc->text.style)); + text_desc->text.style.id = 0; + } +#undef DUP + + rp->custom->description = d; + + return 0; +} + +/* set_state_val(part_id, State_Param:p, ...) */ +static Embryo_Cell +_edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Edje_Real_Part *rp; + char *s; + + /* we need at least 3 arguments */ + if (params[0] < (int) (sizeof(Embryo_Cell) * 3)) + return 0; + + if (params[1] < 0) + return 0; + + if (!(rp = ed->table_parts[params[1] % ed->table_parts_size])) + return 0; + + /* check whether this part has a "custom" state */ + if (!rp->custom) + return 0; + + switch (params[2]) + { + case EDJE_STATE_PARAM_ALIGNMENT: + CHKPARAM(4); + + GETFLOAT_T(rp->custom->description->align.x, params[3]); + GETFLOAT_T(rp->custom->description->align.y, params[4]); + + break; + case EDJE_STATE_PARAM_MIN: + CHKPARAM(4); + + GETINT(rp->custom->description->min.w, params[3]); + GETINT(rp->custom->description->min.h, params[4]); + + break; + case EDJE_STATE_PARAM_MAX: + CHKPARAM(4); + + GETINT(rp->custom->description->max.w, params[3]); + GETINT(rp->custom->description->max.h, params[4]); + + break; + case EDJE_STATE_PARAM_STEP: + CHKPARAM(4); + + GETINT(rp->custom->description->step.x, params[3]); + GETINT(rp->custom->description->step.y, params[4]); + + break; + case EDJE_STATE_PARAM_ASPECT: + CHKPARAM(4); + + GETFLOAT_T(rp->custom->description->aspect.min, params[3]); + GETFLOAT_T(rp->custom->description->aspect.max, params[4]); + + break; + case EDJE_STATE_PARAM_ASPECT_PREF: + CHKPARAM(3); + + GETINT(rp->custom->description->aspect.prefer, params[3]); + + break; + case EDJE_STATE_PARAM_COLOR: + CHKPARAM(6); + + GETINT(rp->custom->description->color.r, params[3]); + GETINT(rp->custom->description->color.g, params[4]); + GETINT(rp->custom->description->color.b, params[5]); + GETINT(rp->custom->description->color.a, params[6]); + + break; + case EDJE_STATE_PARAM_COLOR2: + CHKPARAM(6); + + GETINT(rp->custom->description->color2.r, params[3]); + GETINT(rp->custom->description->color2.g, params[4]); + GETINT(rp->custom->description->color2.b, params[5]); + GETINT(rp->custom->description->color2.a, params[6]); + + break; + case EDJE_STATE_PARAM_COLOR3: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + + CHKPARAM(6); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.color3.r, params[3]); + GETINT(text->text.color3.g, params[4]); + GETINT(text->text.color3.b, params[5]); + GETINT(text->text.color3.a, params[6]); + break; + } + case EDJE_STATE_PARAM_COLOR_CLASS: + CHKPARAM(3); + + GETSTR(s, params[3]); + GETSTREVAS(s, rp->custom->description->color_class); + + break; + case EDJE_STATE_PARAM_REL1: + CHKPARAM(4); + + GETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]); + GETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL1_TO: + CHKPARAM(4); + + GETINT(rp->custom->description->rel1.id_x, params[3]); + GETINT(rp->custom->description->rel1.id_y, params[4]); + + if (rp->param1.description->rel1.id_x >= 0) + rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size]; + if (rp->param1.description->rel1.id_y >= 0) + rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->rel1.id_y % ed->table_parts_size]; + + break; + case EDJE_STATE_PARAM_REL1_OFFSET: + CHKPARAM(4); + + GETINT(rp->custom->description->rel1.offset_x, params[3]); + GETINT(rp->custom->description->rel1.offset_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL2: + CHKPARAM(4); + + GETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]); + GETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL2_TO: + CHKPARAM(4); + + GETINT(rp->custom->description->rel2.id_x, params[3]); + GETINT(rp->custom->description->rel2.id_y, params[4]); + + if (rp->param1.description->rel2.id_x >= 0) + rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size]; + if (rp->param1.description->rel2.id_y >= 0) + rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->rel2.id_y % ed->table_parts_size]; + + break; + case EDJE_STATE_PARAM_REL2_OFFSET: + CHKPARAM(4); + + GETINT(rp->custom->description->rel2.offset_x, params[3]); + GETINT(rp->custom->description->rel2.offset_y, params[4]); + + break; + case EDJE_STATE_PARAM_IMAGE: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); + + img = (Edje_Part_Description_Image*) rp->custom->description; + GETINT(img->image.id, params[3]); + + break; + } + case EDJE_STATE_PARAM_BORDER: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETINT(img->image.border.l, params[3]); + GETINT(img->image.border.r, params[4]); + GETINT(img->image.border.t, params[5]); + GETINT(img->image.border.b, params[6]); + + break; + } + case EDJE_STATE_PARAM_FILL_SMOOTH: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETINT(img->image.fill.smooth, params[3]); + + break; + } + case EDJE_STATE_PARAM_FILL_POS: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETFLOAT_T(img->image.fill.pos_rel_x, params[3]); + GETFLOAT_T(img->image.fill.pos_rel_y, params[4]); + GETINT(img->image.fill.pos_abs_x, params[5]); + GETINT(img->image.fill.pos_abs_y, params[6]); + + break; + } + case EDJE_STATE_PARAM_FILL_SIZE: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + GETFLOAT_T(img->image.fill.rel_x, params[3]); + GETFLOAT_T(img->image.fill.rel_y, params[4]); + GETINT(img->image.fill.abs_x, params[5]); + GETINT(img->image.fill.abs_y, params[6]); + + break; + } + case EDJE_STATE_PARAM_TEXT: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(3); + + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.text.str); + + break; + } + case EDJE_STATE_PARAM_TEXT_CLASS: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(3); + + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.text_class); + + break; + } + case EDJE_STATE_PARAM_TEXT_FONT: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(3); + + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.font.str); + + break; + } + case EDJE_STATE_PARAM_TEXT_STYLE: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; + CHKPARAM(3); + + GETSTR(s, params[3]); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETSTREVAS(s, text->text.style.str); + + break; + } + case EDJE_STATE_PARAM_TEXT_SIZE: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(3); + + text = (Edje_Part_Description_Text*) rp->custom->description; + GETINT(text->text.size, params[3]); + + break; + } + case EDJE_STATE_PARAM_TEXT_FIT: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.fit_x, params[3]); + GETINT(text->text.fit_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_MIN: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.min_x, params[3]); + GETINT(text->text.min_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_MAX: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETINT(text->text.max_x, params[3]); + GETINT(text->text.max_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_ALIGN: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + GETFLOAT_T(text->text.align.x, params[3]); + GETFLOAT_T(text->text.align.y, params[4]); + + break; + } + case EDJE_STATE_PARAM_VISIBLE: + CHKPARAM(3); + + GETINT(rp->custom->description->visible, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_OM: + CHKPARAM(3); + + GETINT(rp->custom->description->map.on, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_PERSP: + CHKPARAM(3); + + GETINT(rp->custom->description->map.id_persp, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_LIGNT: + CHKPARAM(3); + + GETINT(rp->custom->description->map.id_light, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_ROT_CENTER: + CHKPARAM(3); + + GETINT(rp->custom->description->map.rot.id_center, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_ROT_X: + CHKPARAM(3); + + GETFLOAT_T(rp->custom->description->map.rot.x, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_ROT_Y: + CHKPARAM(3); + + GETFLOAT_T(rp->custom->description->map.rot.y, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_ROT_Z: + CHKPARAM(3); + + GETFLOAT_T(rp->custom->description->map.rot.z, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_BACK_CULL: + CHKPARAM(3); + + GETINT(rp->custom->description->map.backcull, params[3]); + + break; + case EDJE_STATE_PARAM_MAP_PERSP_ON: + CHKPARAM(3); + + GETINT(rp->custom->description->map.persp_on, params[3]); + + break; + case EDJE_STATE_PARAM_PERSP_ZPLANE: + CHKPARAM(3); + + GETINT(rp->custom->description->persp.zplane, params[3]); + + break; + case EDJE_STATE_PARAM_PERSP_FOCAL: + CHKPARAM(3); + + GETINT(rp->custom->description->persp.focal, params[3]); + + break; + default: + break; + } + +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + ed->dirty=1; + return 0; +} + +/* get_state_val(part_id, State_Param:p, ...) */ +static Embryo_Cell +_edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed = embryo_program_data_get(ep); + Edje_Real_Part *rp; + char *s; + + /* we need at least 3 arguments */ + if (params[0] < (int) (sizeof(Embryo_Cell) * 3)) + return 0; + + if (params[1] < 0) + return 0; + + if (!(rp = ed->table_parts[params[1] % ed->table_parts_size])) + return 0; + + /* check whether this part has a "custom" state */ + if (!rp->custom) + return 0; + + switch (params[2]) + { + case EDJE_STATE_PARAM_ALIGNMENT: + CHKPARAM(4); + + SETFLOAT_T(rp->custom->description->align.x, params[3]); + SETFLOAT_T(rp->custom->description->align.y, params[4]); + + break; + case EDJE_STATE_PARAM_MIN: + CHKPARAM(4); + + SETINT(rp->custom->description->min.w, params[3]); + SETINT(rp->custom->description->min.h, params[4]); + + break; + case EDJE_STATE_PARAM_MAX: + CHKPARAM(4); + + SETINT(rp->custom->description->max.w, params[3]); + SETINT(rp->custom->description->max.h, params[4]); + + break; + case EDJE_STATE_PARAM_STEP: + CHKPARAM(4); + + SETINT(rp->custom->description->step.x, params[3]); + SETINT(rp->custom->description->step.y, params[4]); + + break; + case EDJE_STATE_PARAM_ASPECT: + CHKPARAM(4); + + SETFLOAT_T(rp->custom->description->aspect.min, params[3]); + SETFLOAT_T(rp->custom->description->aspect.max, params[4]); + + break; + case EDJE_STATE_PARAM_ASPECT_PREF: + CHKPARAM(3); + + SETINT(rp->custom->description->aspect.prefer, params[3]); + + break; + case EDJE_STATE_PARAM_COLOR: + CHKPARAM(6); + + SETINT(rp->custom->description->color.r, params[3]); + SETINT(rp->custom->description->color.g, params[4]); + SETINT(rp->custom->description->color.b, params[5]); + SETINT(rp->custom->description->color.a, params[6]); + + break; + case EDJE_STATE_PARAM_COLOR2: + CHKPARAM(6); + + SETINT(rp->custom->description->color2.r, params[3]); + SETINT(rp->custom->description->color2.g, params[4]); + SETINT(rp->custom->description->color2.b, params[5]); + SETINT(rp->custom->description->color2.a, params[6]); + + break; + case EDJE_STATE_PARAM_COLOR3: + { + Edje_Part_Description_Text *text; + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + return 0; + + CHKPARAM(6); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.color3.r, params[3]); + SETINT(text->text.color3.g, params[4]); + SETINT(text->text.color3.b, params[5]); + SETINT(text->text.color3.a, params[6]); + + break; + } + case EDJE_STATE_PARAM_COLOR_CLASS: + CHKPARAM(4); + + s = rp->custom->description->color_class; + SETSTRALLOCATE(s); + + break; + case EDJE_STATE_PARAM_REL1: + CHKPARAM(4); + + SETFLOAT_T(rp->custom->description->rel1.relative_x, params[3]); + SETFLOAT_T(rp->custom->description->rel1.relative_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL1_TO: + CHKPARAM(4); + + SETINT(rp->custom->description->rel1.id_x, params[3]); + SETINT(rp->custom->description->rel1.id_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL1_OFFSET: + CHKPARAM(4); + + SETINT(rp->custom->description->rel1.offset_x, params[3]); + SETINT(rp->custom->description->rel1.offset_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL2: + CHKPARAM(4); + + SETFLOAT_T(rp->custom->description->rel2.relative_x, params[3]); + SETFLOAT_T(rp->custom->description->rel2.relative_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL2_TO: + CHKPARAM(4); + + SETINT(rp->custom->description->rel2.id_x, params[3]); + SETINT(rp->custom->description->rel2.id_y, params[4]); + + break; + case EDJE_STATE_PARAM_REL2_OFFSET: + CHKPARAM(4); + + SETINT(rp->custom->description->rel2.offset_x, params[3]); + SETINT(rp->custom->description->rel2.offset_y, params[4]); + + break; + case EDJE_STATE_PARAM_IMAGE: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.id, params[3]); + + break; + } + case EDJE_STATE_PARAM_BORDER: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.border.l, params[3]); + SETINT(img->image.border.r, params[4]); + SETINT(img->image.border.t, params[5]); + SETINT(img->image.border.b, params[6]); + + break; + } + case EDJE_STATE_PARAM_FILL_SMOOTH: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(3); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETINT(img->image.fill.smooth, params[3]); + + break; + } + case EDJE_STATE_PARAM_FILL_POS: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETFLOAT_T(img->image.fill.pos_rel_x, params[3]); + SETFLOAT_T(img->image.fill.pos_rel_y, params[4]); + SETINT(img->image.fill.pos_abs_x, params[5]); + SETINT(img->image.fill.pos_abs_y, params[6]); + + break; + } + case EDJE_STATE_PARAM_FILL_SIZE: + { + Edje_Part_Description_Image *img; + + if ( (rp->part->type != EDJE_PART_TYPE_IMAGE) ) return 0; + CHKPARAM(6); + + img = (Edje_Part_Description_Image*) rp->custom->description; + + SETFLOAT_T(img->image.fill.rel_x, params[3]); + SETFLOAT_T(img->image.fill.rel_y, params[4]); + SETINT(img->image.fill.abs_x, params[5]); + SETINT(img->image.fill.abs_y, params[6]); + + break; + } + case EDJE_STATE_PARAM_TEXT: + { + Edje_Part_Description_Text *text; + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = (char *)text->text.text.str; + SETSTRALLOCATE(s); + + break; + } + case EDJE_STATE_PARAM_TEXT_CLASS: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = text->text.text_class; + SETSTRALLOCATE(s); + + break; + } + case EDJE_STATE_PARAM_TEXT_FONT: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = (char *)text->text.font.str; + SETSTRALLOCATE(s); + + break; + } + case EDJE_STATE_PARAM_TEXT_STYLE: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + s = (char *)text->text.style.str; + SETSTRALLOCATE(s); + + break; + } + case EDJE_STATE_PARAM_TEXT_SIZE: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + + CHKPARAM(3); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.size, params[3]); + + break; + } + case EDJE_STATE_PARAM_TEXT_FIT: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.fit_x, params[3]); + SETINT(text->text.fit_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_MIN: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.min_x, params[3]); + SETINT(text->text.min_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_MAX: + { + Edje_Part_Description_Text *text; + + if ( (rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETINT(text->text.max_x, params[3]); + SETINT(text->text.max_y, params[4]); + + break; + } + case EDJE_STATE_PARAM_TEXT_ALIGN: + { + Edje_Part_Description_Text *text; + + if ((rp->part->type != EDJE_PART_TYPE_TEXT)) return 0; + + CHKPARAM(4); + + text = (Edje_Part_Description_Text*) rp->custom->description; + + SETFLOAT_T(text->text.align.x, params[3]); + SETFLOAT_T(text->text.align.y, params[4]); + + break; + } + case EDJE_STATE_PARAM_VISIBLE: + CHKPARAM(3); + + SETINT(rp->custom->description->visible, params[3]); + + break; + default: + break; + } + + return 0; +} + +/* part_swallow(part_id, group_name) */ +static Embryo_Cell +_edje_embryo_fn_part_swallow(Embryo_Program *ep, Embryo_Cell *params) +{ + int part_id = 0; + char* group_name = 0; + Edje *ed; + Edje_Real_Part *rp; + Evas_Object *new_obj; + + CHKPARAM(2); + + part_id = params[1]; + if (part_id < 0) return 0; + + GETSTR(group_name, params[2]); + if (!group_name) return 0; + + ed = embryo_program_data_get(ep); + + rp = ed->table_parts[part_id % ed->table_parts_size]; + if (!rp) return 0; + + new_obj = edje_object_add(ed->base.evas); + if (!new_obj) return 0; + + if (!edje_object_file_set(new_obj, ed->file->path, group_name)) + { + evas_object_del(new_obj); + return 0; + } + edje_object_part_swallow(ed->obj, rp->part->name, new_obj); + _edje_subobj_register(ed, new_obj); + + return 0; +} + +/* external_param_get_int(id, param_name[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT; + eep.i = 0; + _edje_external_param_get(NULL, rp, &eep); + return eep.i; +} + +/* external_param_set_int(id, param_name[], val) */ +static Embryo_Cell +_edje_embryo_fn_external_param_set_int(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT; + eep.i = params[3]; + return _edje_external_param_set(NULL, rp, &eep); +} + +/* Float:external_param_get_float(id, param_name[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + float v; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + eep.d = 0.0; + _edje_external_param_get(NULL, rp, &eep); + v = eep.d; + return EMBRYO_FLOAT_TO_CELL(v); +} + +/* external_param_set_float(id, param_name[], Float:val) */ +static Embryo_Cell +_edje_embryo_fn_external_param_set_float(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + eep.d = EMBRYO_CELL_TO_FLOAT(params[3]); + return _edje_external_param_set(NULL, rp, &eep); +} + +/* external_param_get_strlen(id, param_name[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_strlen(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + eep.s = NULL; + _edje_external_param_get(NULL, rp, &eep); + if (!eep.s) return 0; + return strlen(eep.s); +} + +/* external_param_get_str(id, param_name[], val[], val_maxlen) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + size_t src_len, dst_len; + + CHKPARAM(4); + dst_len = params[4]; + if (dst_len < 1) goto error; + + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) goto error; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + eep.s = NULL; + _edje_external_param_get(NULL, rp, &eep); + if (!eep.s) goto error; + src_len = strlen(eep.s); + if (src_len < dst_len) + { + SETSTR(eep.s, params[3]); + } + else + { + char *tmp = alloca(dst_len); + memcpy(tmp, eep.s, dst_len - 1); + tmp[dst_len] = '\0'; + SETSTR(tmp, params[3]); + } + return 1; + + error: + SETSTR("", params[3]); + return 0; +} + +/* external_param_set_str(id, param_name[], val[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_set_str(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name, *val; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + GETSTR(val, params[3]); + if (!val) return 0; + eep.s = val; + return _edje_external_param_set(NULL, rp, &eep); +} + +/* external_param_get_choice_len(id, param_name[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_choice_len(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE; + eep.s = NULL; + _edje_external_param_get(NULL, rp, &eep); + if (!eep.s) return 0; + return strlen(eep.s); +} + +/* external_param_get_choice(id, param_name[], val[], val_maxlen) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_choice(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + size_t src_len, dst_len; + + CHKPARAM(4); + dst_len = params[4]; + if (dst_len < 1) goto error; + + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) goto error; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE; + eep.s = NULL; + _edje_external_param_get(NULL, rp, &eep); + if (!eep.s) goto error; + src_len = strlen(eep.s); + if (src_len < dst_len) + { + SETSTR(eep.s, params[3]); + } + else + { + char *tmp = alloca(dst_len); + memcpy(tmp, eep.s, dst_len - 1); + tmp[dst_len] = '\0'; + SETSTR(tmp, params[3]); + } + return 1; + + error: + SETSTR("", params[3]); + return 0; +} + +/* external_param_set_choice(id, param_name[], val[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_set_choice(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name, *val; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_CHOICE; + GETSTR(val, params[3]); + if (!val) return 0; + eep.s = val; + return _edje_external_param_set(NULL, rp, &eep); +} + +/* external_param_get_bool(id, param_name[]) */ +static Embryo_Cell +_edje_embryo_fn_external_param_get_bool(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(2); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL; + eep.i = 0; + _edje_external_param_get(NULL, rp, &eep); + return eep.i; +} + +/* external_param_set_bool(id, param_name[], val) */ +static Embryo_Cell +_edje_embryo_fn_external_param_set_bool(Embryo_Program *ep, Embryo_Cell *params) +{ + Edje *ed; + int part_id; + Edje_Real_Part *rp; + Edje_External_Param eep; + char *param_name; + + CHKPARAM(3); + ed = embryo_program_data_get(ep); + + part_id = params[1]; + if (part_id < 0) return 0; + rp = ed->table_parts[part_id % ed->table_parts_size]; + + GETSTR(param_name, params[2]); + if (!param_name) return 0; + eep.name = param_name; + eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL; + eep.i = params[3]; + return _edje_external_param_set(NULL, rp, &eep); +} + +void +_edje_embryo_script_init(Edje_Part_Collection *edc) +{ + Embryo_Program *ep; + + if (!edc) return; + if (!edc->script) return; + + ep = edc->script; + /* first advertise all the edje "script" calls */ + embryo_program_native_call_add(ep, "get_int", _edje_embryo_fn_get_int); + embryo_program_native_call_add(ep, "set_int", _edje_embryo_fn_set_int); + embryo_program_native_call_add(ep, "get_float", _edje_embryo_fn_get_float); + embryo_program_native_call_add(ep, "set_float", _edje_embryo_fn_set_float); + embryo_program_native_call_add(ep, "get_str", _edje_embryo_fn_get_str); + embryo_program_native_call_add(ep, "get_strlen", _edje_embryo_fn_get_strlen); + embryo_program_native_call_add(ep, "set_str", _edje_embryo_fn_set_str); + embryo_program_native_call_add(ep, "count", _edje_embryo_fn_count); + embryo_program_native_call_add(ep, "remove", _edje_embryo_fn_remove); + embryo_program_native_call_add(ep, "append_int", _edje_embryo_fn_append_int); + embryo_program_native_call_add(ep, "prepend_int", _edje_embryo_fn_prepend_int); + embryo_program_native_call_add(ep, "insert_int", _edje_embryo_fn_insert_int); + embryo_program_native_call_add(ep, "replace_int", _edje_embryo_fn_replace_int); + embryo_program_native_call_add(ep, "fetch_int", _edje_embryo_fn_fetch_int); + embryo_program_native_call_add(ep, "append_str", _edje_embryo_fn_append_str); + embryo_program_native_call_add(ep, "prepend_str", _edje_embryo_fn_prepend_str); + embryo_program_native_call_add(ep, "insert_str", _edje_embryo_fn_insert_str); + embryo_program_native_call_add(ep, "replace_str", _edje_embryo_fn_replace_str); + embryo_program_native_call_add(ep, "fetch_str", _edje_embryo_fn_fetch_str); + embryo_program_native_call_add(ep, "append_float", _edje_embryo_fn_append_float); + embryo_program_native_call_add(ep, "prepend_float", _edje_embryo_fn_prepend_float); + embryo_program_native_call_add(ep, "insert_float", _edje_embryo_fn_insert_float); + embryo_program_native_call_add(ep, "replace_float", _edje_embryo_fn_replace_float); + embryo_program_native_call_add(ep, "fetch_float", _edje_embryo_fn_fetch_float); + + embryo_program_native_call_add(ep, "timer", _edje_embryo_fn_timer); + embryo_program_native_call_add(ep, "cancel_timer", _edje_embryo_fn_cancel_timer); + + embryo_program_native_call_add(ep, "anim", _edje_embryo_fn_anim); + embryo_program_native_call_add(ep, "cancel_anim", _edje_embryo_fn_cancel_anim); + + embryo_program_native_call_add(ep, "emit", _edje_embryo_fn_emit); + embryo_program_native_call_add(ep, "get_part_id", _edje_embryo_fn_get_part_id); + embryo_program_native_call_add(ep, "set_state", _edje_embryo_fn_set_state); + embryo_program_native_call_add(ep, "get_state", _edje_embryo_fn_get_state); + embryo_program_native_call_add(ep, "set_tween_state", _edje_embryo_fn_set_tween_state); + embryo_program_native_call_add(ep, "run_program", _edje_embryo_fn_run_program); + embryo_program_native_call_add(ep, "get_drag_dir", _edje_embryo_fn_get_drag_dir); + embryo_program_native_call_add(ep, "get_drag", _edje_embryo_fn_get_drag); + embryo_program_native_call_add(ep, "set_drag", _edje_embryo_fn_set_drag); + embryo_program_native_call_add(ep, "get_drag_size", _edje_embryo_fn_get_drag_size); + embryo_program_native_call_add(ep, "set_drag_size", _edje_embryo_fn_set_drag_size); + embryo_program_native_call_add(ep, "set_text", _edje_embryo_fn_set_text); + embryo_program_native_call_add(ep, "get_text", _edje_embryo_fn_get_text); + embryo_program_native_call_add(ep, "get_min_size", _edje_embryo_fn_get_min_size); + embryo_program_native_call_add(ep, "get_max_size", _edje_embryo_fn_get_max_size); + embryo_program_native_call_add(ep, "get_color_class", _edje_embryo_fn_get_color_class); + embryo_program_native_call_add(ep, "set_color_class", _edje_embryo_fn_set_color_class); + embryo_program_native_call_add(ep, "set_text_class", _edje_embryo_fn_set_text_class); + embryo_program_native_call_add(ep, "get_text_class", _edje_embryo_fn_get_text_class); + embryo_program_native_call_add(ep, "get_drag_step", _edje_embryo_fn_get_drag_step); + embryo_program_native_call_add(ep, "set_drag_step", _edje_embryo_fn_set_drag_step); + embryo_program_native_call_add(ep, "get_drag_page", _edje_embryo_fn_get_drag_page); + embryo_program_native_call_add(ep, "set_drag_page", _edje_embryo_fn_set_drag_page); + embryo_program_native_call_add(ep, "get_mouse", _edje_embryo_fn_get_mouse); + embryo_program_native_call_add(ep, "get_mouse_buttons", _edje_embryo_fn_get_mouse_buttons); + embryo_program_native_call_add(ep, "stop_program", _edje_embryo_fn_stop_program); + embryo_program_native_call_add(ep, "stop_programs_on", _edje_embryo_fn_stop_programs_on); + embryo_program_native_call_add(ep, "set_min_size", _edje_embryo_fn_set_min_size); + embryo_program_native_call_add(ep, "set_max_size", _edje_embryo_fn_set_max_size); + embryo_program_native_call_add(ep, "play_sample", _edje_embryo_fn_play_sample); + embryo_program_native_call_add(ep, "play_tone", _edje_embryo_fn_play_tone); + embryo_program_native_call_add(ep, "send_message", _edje_embryo_fn_send_message); + embryo_program_native_call_add(ep, "get_geometry", _edje_embryo_fn_get_geometry); + embryo_program_native_call_add(ep, "custom_state", _edje_embryo_fn_custom_state); + embryo_program_native_call_add(ep, "set_state_val", _edje_embryo_fn_set_state_val); + embryo_program_native_call_add(ep, "get_state_val", _edje_embryo_fn_get_state_val); + + embryo_program_native_call_add(ep, "part_swallow", _edje_embryo_fn_part_swallow); + + embryo_program_native_call_add(ep, "external_param_get_int", _edje_embryo_fn_external_param_get_int); + embryo_program_native_call_add(ep, "external_param_set_int", _edje_embryo_fn_external_param_set_int); + embryo_program_native_call_add(ep, "external_param_get_float", _edje_embryo_fn_external_param_get_float); + embryo_program_native_call_add(ep, "external_param_set_float", _edje_embryo_fn_external_param_set_float); + embryo_program_native_call_add(ep, "external_param_get_strlen", _edje_embryo_fn_external_param_get_strlen); + embryo_program_native_call_add(ep, "external_param_get_str", _edje_embryo_fn_external_param_get_str); + embryo_program_native_call_add(ep, "external_param_set_str", _edje_embryo_fn_external_param_set_str); + embryo_program_native_call_add(ep, "external_param_get_choice_len", _edje_embryo_fn_external_param_get_choice_len); + embryo_program_native_call_add(ep, "external_param_get_choice", _edje_embryo_fn_external_param_get_choice); + embryo_program_native_call_add(ep, "external_param_set_choice", _edje_embryo_fn_external_param_set_choice); + embryo_program_native_call_add(ep, "external_param_get_bool", _edje_embryo_fn_external_param_get_bool); + embryo_program_native_call_add(ep, "external_param_set_bool", _edje_embryo_fn_external_param_set_bool); +} + +void +_edje_embryo_script_shutdown(Edje_Part_Collection *edc) +{ + if (!edc) return; + if (!edc->script) return; + if (embryo_program_recursion_get(edc->script) > 0) return; + embryo_program_free(edc->script); + edc->script = NULL; +} + +void +_edje_embryo_script_reset(Edje *ed) +{ + if (!ed) return; + if (!ed->collection) return; + if (!ed->collection->script) return; + if (embryo_program_recursion_get(ed->collection->script) > 0) return; + embryo_program_vm_reset(ed->collection->script); + _edje_embryo_globals_init(ed); +} + +/* this may change in future - thus "test_run" is its name */ +void +_edje_embryo_test_run(Edje *ed, const char *fname, const char *sig, const char *src) +{ + Embryo_Function fn; + + if (!ed) return; + if (!ed->collection) return; + if (!ed->collection->script) return; + embryo_program_vm_push(ed->collection->script); + _edje_embryo_globals_init(ed); + + // _edje_embryo_script_reset(ed); + fn = embryo_program_function_find(ed->collection->script, (char *)fname); + if (fn != EMBRYO_FUNCTION_NONE) + { + void *pdata; + int ret; + + embryo_parameter_string_push(ed->collection->script, (char *)sig); + embryo_parameter_string_push(ed->collection->script, (char *)src); + pdata = embryo_program_data_get(ed->collection->script); + embryo_program_data_set(ed->collection->script, ed); + /* 5 million instructions is an arbitrary number. on my p4-2.6 here */ + /* IF embryo is ONLY running embryo stuff and NO native calls thats */ + /* about 0.016 seconds, and longer on slower cpu's. if a simple */ + /* embryo script snippet hasn't managed to do its work in 5 MILLION */ + /* embryo virtual machine instructions - something is wrong, or */ + /* embryo is simply being mis-used. Embryo is meant to be minimal */ + /* logic enhancment - not entire applications. this cycle count */ + /* does NOT include time spent in native function calls, that the */ + /* script may call to do the REAL work, so in terms of time this */ + /* will likely end up being much longer than 0.016 seconds - more */ + /* like 0.03 - 0.05 seconds or even more */ + embryo_program_max_cycle_run_set(ed->collection->script, 5000000); + ret = embryo_program_run(ed->collection->script, fn); + if (ret == EMBRYO_PROGRAM_FAIL) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "SIGNAL: '%s', " + "SOURCE: '%s', " + "ERROR: '%s'", + ed->collection->part, + ed->file->path, + fname, + sig, src, + embryo_error_string_get(embryo_program_error_get(ed->collection->script))); + } + else if (ret == EMBRYO_PROGRAM_TOOLONG) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "SIGNAL: '%s', " + "SOURCE: '%s', " + "ERROR: 'Script exceeded maximum allowed cycle count of %i'", + ed->collection->part, + ed->file->path, + fname, + sig, src, + embryo_program_max_cycle_run_get(ed->collection->script)); + } + embryo_program_data_set(ed->collection->script, pdata); + } + embryo_program_vm_pop(ed->collection->script); +} + +void +_edje_embryo_globals_init(Edje *ed) +{ + int n, i; + Embryo_Program *ep; + + ep = ed->collection->script; + n = embryo_program_variable_count_get(ep); + for (i = 0; i < n; i++) + { + Embryo_Cell cell, *cptr; + + cell = embryo_program_variable_get(ep, i); + if (cell != EMBRYO_CELL_NONE) + { + cptr = embryo_data_address_get(ep, cell); + if (cptr) *cptr = EDJE_VAR_MAGIC_BASE + i; + } + } +} diff --git a/src/lib/edje_entry.c b/src/lib/edje_entry.c new file mode 100644 index 0000000..3307e34 --- /dev/null +++ b/src/lib/edje_entry.c @@ -0,0 +1,3599 @@ +#include "edje_private.h" + +#ifdef HAVE_ECORE_IMF +static Eina_Bool _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos); +static void _edje_entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx, void *event_info); +static void _edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx, void *event_info); +static void _edje_entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx, void *event); +#endif + +typedef struct _Entry Entry; +typedef struct _Sel Sel; +typedef struct _Anchor Anchor; + +static void _edje_entry_imf_cursor_info_set(Entry *en); + +struct _Entry +{ + Edje_Real_Part *rp; + Evas_Object *cursor_bg; + Evas_Object *cursor_fg; + Evas_Textblock_Cursor *cursor; + Evas_Textblock_Cursor *sel_start, *sel_end; + Evas_Textblock_Cursor *cursor_user, *cursor_user_extra; + Evas_Textblock_Cursor *preedit_start, *preedit_end; + Ecore_Timer *pw_timer; + Eina_List *sel; + Eina_List *anchors; + Eina_List *anchorlist; + Eina_List *itemlist; + Eina_List *seq; + char *selection; + Edje_Input_Panel_Lang input_panel_lang; + Eina_Bool composing : 1; + Eina_Bool selecting : 1; + Eina_Bool have_selection : 1; + Eina_Bool select_allow : 1; + Eina_Bool select_mod_start : 1; + Eina_Bool select_mod_end : 1; + Eina_Bool had_sel : 1; + Eina_Bool input_panel_enable : 1; + Eina_Bool prediction_allow : 1; + +#ifdef HAVE_ECORE_IMF + Eina_Bool have_preedit : 1; + Ecore_IMF_Context *imf_context; +#endif +}; + +struct _Sel +{ + Evas_Textblock_Rectangle rect; + Evas_Object *obj_fg, *obj_bg, *obj, *sobj; +}; + +struct _Anchor +{ + Entry *en; + char *name; + Evas_Textblock_Cursor *start, *end; + Eina_List *sel; + Eina_Bool item : 1; +}; + +#ifdef HAVE_ECORE_IMF +static void +_preedit_clear(Entry *en) +{ + if (en->preedit_start) + { + evas_textblock_cursor_free(en->preedit_start); + en->preedit_start = NULL; + } + + if (en->preedit_end) + { + evas_textblock_cursor_free(en->preedit_end); + en->preedit_end = NULL; + } + + en->have_preedit = EINA_FALSE; +} + +static void +_preedit_del(Entry *en) +{ + if (!en || !en->have_preedit) return; + if (!en->preedit_start || !en->preedit_end) return; + if (!evas_textblock_cursor_compare(en->preedit_start, en->preedit_end)) return; + + /* delete the preedit characters */ + evas_textblock_cursor_range_delete(en->preedit_start, en->preedit_end); +} + +static void +_edje_entry_focus_in_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Edje_Real_Part *rp; + Entry *en; + + rp = data; + if (!rp || !rp->entry_data || !rp->edje || !rp->edje->obj) return; + + en = rp->entry_data; + if (!en || !en->imf_context) return; + + if (evas_object_focus_get(rp->edje->obj)) + { + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_focus_in(en->imf_context); + _edje_entry_imf_cursor_info_set(en); + } +} + +static void +_edje_entry_focus_out_cb(void *data, Evas_Object *o __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__) +{ + Edje_Real_Part *rp; + Entry *en; + + rp = data; + if (!rp || !rp->entry_data) return; + + en = rp->entry_data; + if (!en || !en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); + _edje_entry_imf_cursor_info_set(en); + ecore_imf_context_focus_out(en->imf_context); +} +#endif + +static void +_edje_focus_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Edje *ed = data; +#ifdef HAVE_ECORE_IMF + Edje_Real_Part *rp; + Entry *en; +#endif + + _edje_emit(ed, "focus,in", ""); +#ifdef HAVE_ECORE_IMF + rp = ed->focused_part; + if (!rp) return; + + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + return; + + if (!en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); + ecore_imf_context_focus_in(en->imf_context); + _edje_entry_imf_cursor_info_set(en); +#endif +} + +static void +_edje_focus_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Edje *ed = data; +#ifdef HAVE_ECORE_IMF + Edje_Real_Part *rp = ed->focused_part; + Entry *en; +#endif + + _edje_emit(ed, "focus,out", ""); + +#ifdef HAVE_ECORE_IMF + if (!rp) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + return; + + if (!en->imf_context) return; + + ecore_imf_context_reset(en->imf_context); + _edje_entry_imf_cursor_info_set(en); + ecore_imf_context_focus_out(en->imf_context); +#endif +} + +static void +_text_filter_markup_prepend_internal(Entry *en, Evas_Textblock_Cursor *c, char *text) +{ + Edje_Markup_Filter_Callback *cb; + Eina_List *l; + + EINA_LIST_FOREACH(en->rp->edje->markup_filter_callbacks, l, cb) + { + if (!strcmp(cb->part, en->rp->part->name)) + { + cb->func(cb->data, en->rp->edje->obj, cb->part, &text); + if (!text) break; + } + } + if (text) + { + evas_object_textblock_text_markup_prepend(c, text); + free(text); + } +} + +static void +_text_filter_text_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) +{ + char *text2; + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + + text2 = strdup(text); + EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) + { + if (!strcmp(cb->part, en->rp->part->name)) + { + cb->func(cb->data, en->rp->edje->obj, cb->part, EDJE_TEXT_FILTER_TEXT, &text2); + if (!text2) break; + } + } + if (text2) + { + char *markup_text; + markup_text = evas_textblock_text_utf8_to_markup(NULL, text2); + free(text2); + if (markup_text) + _text_filter_markup_prepend_internal(en, c, markup_text); + } +} + +static void +_text_filter_format_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) +{ + char *text2; + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + + text2 = strdup(text); + EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) + { + if (!strcmp(cb->part, en->rp->part->name)) + { + cb->func(cb->data, en->rp->edje->obj, cb->part, EDJE_TEXT_FILTER_FORMAT, &text2); + if (!text2) break; + } + } + if (text2) + { + char *s, *markup_text; + + s = text2; + if (*s == '+') + { + s++; + while (*s == ' ') s++; + if (!s) + { + free(text2); + return; + } + markup_text = (char*) malloc(strlen(s) + 3); + if (markup_text) + { + *(markup_text) = '<'; + strncpy((markup_text + 1), s, strlen(s)); + *(markup_text + strlen(s) + 1) = '>'; + *(markup_text + strlen(s) + 2) = '\0'; + } + } + else if (s[0] == '-') + { + s++; + while (*s == ' ') s++; + if (!s) + { + free(text2); + return; + } + markup_text = (char*) malloc(strlen(s) + 4); + if (markup_text) + { + *(markup_text) = '<'; + *(markup_text + 1) = '/'; + strncpy((markup_text + 2), s, strlen(s)); + *(markup_text + strlen(s) + 2) = '>'; + *(markup_text + strlen(s) + 3) = '\0'; + } + } + else + { + markup_text = (char*) malloc(strlen(s) + 4); + if (markup_text) + { + *(markup_text) = '<'; + strncpy((markup_text + 1), s, strlen(s)); + *(markup_text + strlen(s) + 1) = '/'; + *(markup_text + strlen(s) + 2) = '>'; + *(markup_text + strlen(s) + 3) = '\0'; + } + } + free(text2); + if (markup_text) + _text_filter_markup_prepend_internal(en, c, markup_text); + } +} + +static void +_text_filter_markup_prepend(Entry *en, Evas_Textblock_Cursor *c, const char *text) +{ + char *text2; + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + + text2 = strdup(text); + EINA_LIST_FOREACH(en->rp->edje->text_insert_filter_callbacks, l, cb) + { + if (!strcmp(cb->part, en->rp->part->name)) + { + cb->func(cb->data, en->rp->edje->obj, cb->part, EDJE_TEXT_FILTER_MARKUP, &text2); + if (!text2) break; + } + } + if (text2) + _text_filter_markup_prepend_internal(en, c, text2); +} + +static void +_curs_update_from_curs(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entry *en, Evas_Coord *cx, Evas_Coord *cy) +{ + Evas_Coord cw, ch; + Evas_Textblock_Cursor_Type cur_type; + if (c != en->cursor) return; + switch (en->rp->part->cursor_mode) + { + case EDJE_ENTRY_CURSOR_MODE_BEFORE: + cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; + break; + case EDJE_ENTRY_CURSOR_MODE_UNDER: + /* no break for a resaon */ + default: + cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; + } + evas_textblock_cursor_geometry_get(c, cx, cy, &cw, &ch, NULL, cur_type); + *cx += (cw / 2); + *cy += (ch / 2); +} + +static int +_curs_line_last_get(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *en __UNUSED__) +{ + Evas_Textblock_Cursor *cc; + int ln; + + cc = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_paragraph_last(cc); + ln = evas_textblock_cursor_line_geometry_get(cc, NULL, NULL, NULL, NULL); + evas_textblock_cursor_free(cc); + return ln; +} + +static void +_curs_lin_start(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, + Entry *en __UNUSED__) +{ + evas_textblock_cursor_line_char_first(c); +} + +static void +_curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, + Entry *en __UNUSED__) +{ + evas_textblock_cursor_line_char_last(c); +} + +static void +_curs_start(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, + Entry *en __UNUSED__) +{ + evas_textblock_cursor_paragraph_first(c); +} + +static void +_curs_end(Evas_Textblock_Cursor *c, Evas_Object *o __UNUSED__, Entry *en __UNUSED__) +{ + evas_textblock_cursor_paragraph_last(c); +} + +static void +_curs_jump_line(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en, int ln) +{ + Evas_Coord cx, cy; + Evas_Coord lx, ly, lw, lh; + int last = _curs_line_last_get(c, o, en); + + if (ln < 0) ln = 0; + else + { + if (ln > last) ln = last; + } + + _curs_update_from_curs(c, o, en, &cx, &cy); + + if (!evas_object_textblock_line_number_geometry_get(o, ln, &lx, &ly, &lw, &lh)) + return; + if (evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) + return; + evas_textblock_cursor_line_set(c, ln); + if (cx < (lx + (lw / 2))) + { + if (ln == last) _curs_end(c, o, en); + _curs_lin_start(c, o, en); + } + else + { + if (ln == last) + _curs_end(c, o, en); + else + _curs_lin_end(c, o, en); + } +} + +static void +_curs_jump_line_by(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en, int by) +{ + int ln; + + ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL) + by; + _curs_jump_line(c, o, en, ln); +} + +static void +_curs_up(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + _curs_jump_line_by(c, o, en, -1); +} + +static void +_curs_down(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + _curs_jump_line_by(c, o, en, 1); +} + +static void +_sel_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + if (en->sel_start) return; + en->sel_start = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_copy(c, en->sel_start); + en->sel_end = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_copy(c, en->sel_end); + + en->have_selection = EINA_FALSE; + if (en->selection) + { + free(en->selection); + en->selection = NULL; + } +} + +static void +_sel_enable(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry *en) +{ + if (en->have_selection) return; + en->have_selection = EINA_TRUE; + if (en->selection) + { + free(en->selection); + en->selection = NULL; + } + _edje_emit(en->rp->edje, "selection,start", en->rp->part->name); +} + +static void +_sel_extend(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + if (!en->sel_end) return; + _edje_entry_imf_context_reset(en->rp); + _sel_enable(c, o, en); + if (!evas_textblock_cursor_compare(c, en->sel_end)) return; + evas_textblock_cursor_copy(c, en->sel_end); + if (en->selection) + { + free(en->selection); + en->selection = NULL; + } + _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); +} + +static void +_sel_preextend(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + if (!en->sel_end) return; + _edje_entry_imf_context_reset(en->rp); + _sel_enable(c, o, en); + if (!evas_textblock_cursor_compare(c, en->sel_start)) return; + evas_textblock_cursor_copy(c, en->sel_start); + if (en->selection) + { + free(en->selection); + en->selection = NULL; + } + _edje_emit(en->rp->edje, "selection,changed", en->rp->part->name); +} + +static void +_sel_clear(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry *en) +{ + en->had_sel = EINA_FALSE; + if (en->sel_start) + { + evas_textblock_cursor_free(en->sel_start); + evas_textblock_cursor_free(en->sel_end); + en->sel_start = NULL; + en->sel_end = NULL; + } + if (en->selection) + { + free(en->selection); + en->selection = NULL; + } + while (en->sel) + { + Sel *sel; + + sel = en->sel->data; + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + free(sel); + en->sel = eina_list_remove_list(en->sel, en->sel); + } + if (en->have_selection) + { + en->have_selection = EINA_FALSE; + _edje_emit(en->rp->edje, "selection,cleared", en->rp->part->name); + } +} + +static void +_sel_update(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *en) +{ + Eina_List *range = NULL, *l; + Sel *sel; + Evas_Coord x, y, w, h; + Evas_Object *smart, *clip; + + smart = evas_object_smart_parent_get(o); + clip = evas_object_clip_get(o); + if (en->sel_start) + range = evas_textblock_cursor_range_geometry_get(en->sel_start, en->sel_end); + else + return; + if (eina_list_count(range) != eina_list_count(en->sel)) + { + while (en->sel) + { + sel = en->sel->data; + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + free(sel); + en->sel = eina_list_remove_list(en->sel, en->sel); + } + if (en->have_selection) + { + for (l = range; l; l = eina_list_next(l)) + { + Evas_Object *ob; + + sel = calloc(1, sizeof(Sel)); + en->sel = eina_list_append(en->sel, sel); + ob = edje_object_add(en->rp->edje->base.evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source); + evas_object_smart_member_add(ob, smart); + evas_object_stack_below(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_bg = ob; + _edje_subobj_register(en->rp->edje, sel->obj_bg); + + ob = edje_object_add(en->rp->edje->base.evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source2); + evas_object_smart_member_add(ob, smart); + evas_object_stack_above(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_fg = ob; + _edje_subobj_register(en->rp->edje, sel->obj_fg); + } + } + } + x = y = w = h = -1; + evas_object_geometry_get(o, &x, &y, &w, &h); + if (en->have_selection) + { + EINA_LIST_FOREACH(en->sel, l, sel) + { + Evas_Textblock_Rectangle *r; + + r = range->data; + if (sel->obj_bg) + { + evas_object_move(sel->obj_bg, x + r->x, y + r->y); + evas_object_resize(sel->obj_bg, r->w, r->h); + } + if (sel->obj_fg) + { + evas_object_move(sel->obj_fg, x + r->x, y + r->y); + evas_object_resize(sel->obj_fg, r->w, r->h); + } + *(&(sel->rect)) = *r; + range = eina_list_remove_list(range, range); + free(r); + } + } + else + { + while (range) + { + free(range->data); + range = eina_list_remove_list(range, range); + } + } +} + +static void +_edje_anchor_mouse_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Anchor *an = data; + Evas_Event_Mouse_Down *ev = event_info; + Edje_Real_Part *rp = an->en->rp; + char *buf, *n; + size_t len; + int ignored; + Entry *en; + + en = rp->entry_data; + if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && + (en->select_allow)) + return; + ignored = rp->part->ignore_flags & ev->event_flags; + if ((!ev->event_flags) || (!ignored)) + { + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) + snprintf(buf, len, "anchor,mouse,down,%i,%s,triple", ev->button, n); + else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) + snprintf(buf, len, "anchor,mouse,down,%i,%s,double", ev->button, n); + else + snprintf(buf, len, "anchor,mouse,down,%i,%s", ev->button, n); + _edje_emit(rp->edje, buf, rp->part->name); + } +} + +static void +_edje_anchor_mouse_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Anchor *an = data; + Evas_Event_Mouse_Up *ev = event_info; + Edje_Real_Part *rp = an->en->rp; + char *buf, *n; + size_t len; + int ignored; + Entry *en; + + en = rp->entry_data; + ignored = rp->part->ignore_flags & ev->event_flags; + if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && + (en->select_allow)) + return; + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + if ((!ev->event_flags) || (!ignored)) + { + snprintf(buf, len, "anchor,mouse,up,%i,%s", ev->button, n); + _edje_emit(rp->edje, buf, rp->part->name); + } + if ((rp->still_in) && (rp->clicked_button == ev->button) && (!ignored)) + { + snprintf(buf, len, "anchor,mouse,clicked,%i,%s", ev->button, n); + _edje_emit(rp->edje, buf, rp->part->name); + } +} + +static void +_edje_anchor_mouse_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Anchor *an = data; + Evas_Event_Mouse_Move *ev = event_info; + Edje_Real_Part *rp = an->en->rp; + char *buf, *n; + size_t len; + int ignored; + Entry *en; + + en = rp->entry_data; + if ((rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) && + (en->select_allow)) + return; + ignored = rp->part->ignore_flags & ev->event_flags; + if ((!ev->event_flags) || (!ignored)) + { + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,move,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); + } +} + +static void +_edje_anchor_mouse_in_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Anchor *an = data; + Evas_Event_Mouse_In *ev = event_info; + Edje_Real_Part *rp = an->en->rp; + char *buf, *n; + size_t len; + int ignored; + + ignored = rp->part->ignore_flags & ev->event_flags; + if ((!ev->event_flags) || (!ignored)) + { + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,in,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); + } +} + +static void +_edje_anchor_mouse_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Anchor *an = data; + Evas_Event_Mouse_Out *ev = event_info; + Edje_Real_Part *rp = an->en->rp; + char *buf, *n; + size_t len; + int ignored; + + ignored = rp->part->ignore_flags & ev->event_flags; + if ((!ev->event_flags) || (!ignored)) + { + n = an->name; + if (!n) n = ""; + len = 200 + strlen(n); + buf = alloca(len); + snprintf(buf, len, "anchor,mouse,out,%s", n); + _edje_emit(rp->edje, buf, rp->part->name); + } +} + +static void +_anchors_update(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o, Entry *en) +{ + Eina_List *l, *ll, *range = NULL; + Evas_Coord x, y, w, h; + Evas_Object *smart, *clip; + Sel *sel; + Anchor *an; + + smart = evas_object_smart_parent_get(o); + clip = evas_object_clip_get(o); + x = y = w = h = -1; + evas_object_geometry_get(o, &x, &y, &w, &h); + EINA_LIST_FOREACH(en->anchors, l, an) + { + // for item anchors + if (an->item) + { + Evas_Object *ob; + + if (!an->sel) + { + while (an->sel) + { + sel = an->sel->data; + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + if (sel->obj) evas_object_del(sel->obj); + free(sel); + an->sel = eina_list_remove_list(an->sel, an->sel); + } + + sel = calloc(1, sizeof(Sel)); + an->sel = eina_list_append(an->sel, sel); + + if (en->rp->edje->item_provider.func) + { + ob = en->rp->edje->item_provider.func + (en->rp->edje->item_provider.data, smart, + en->rp->part->name, an->name); + evas_object_smart_member_add(ob, smart); + evas_object_stack_above(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj = ob; + } + } + } + // for link anchors + else + { + range = + evas_textblock_cursor_range_geometry_get(an->start, an->end); + if (eina_list_count(range) != eina_list_count(an->sel)) + { + while (an->sel) + { + sel = an->sel->data; + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + if (sel->obj) evas_object_del(sel->obj); + free(sel); + an->sel = eina_list_remove_list(an->sel, an->sel); + } + for (ll = range; ll; ll = eina_list_next(ll)) + { + Evas_Object *ob; + + sel = calloc(1, sizeof(Sel)); + an->sel = eina_list_append(an->sel, sel); + ob = edje_object_add(en->rp->edje->base.evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source5); + evas_object_smart_member_add(ob, smart); + evas_object_stack_below(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_bg = ob; + _edje_subobj_register(en->rp->edje, sel->obj_bg); + + ob = edje_object_add(en->rp->edje->base.evas); + edje_object_file_set(ob, en->rp->edje->path, en->rp->part->source6); + evas_object_smart_member_add(ob, smart); + evas_object_stack_above(ob, o); + evas_object_clip_set(ob, clip); + evas_object_pass_events_set(ob, EINA_TRUE); + evas_object_show(ob); + sel->obj_fg = ob; + _edje_subobj_register(en->rp->edje, sel->obj_fg); + + ob = evas_object_rectangle_add(en->rp->edje->base.evas); + evas_object_color_set(ob, 0, 0, 0, 0); + evas_object_smart_member_add(ob, smart); + evas_object_stack_above(ob, o); + evas_object_clip_set(ob, clip); + evas_object_repeat_events_set(ob, EINA_TRUE); + evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_DOWN, _edje_anchor_mouse_down_cb, an); + evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_UP, _edje_anchor_mouse_up_cb, an); + evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_MOVE, _edje_anchor_mouse_move_cb, an); + evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_IN, _edje_anchor_mouse_in_cb, an); + evas_object_event_callback_add(ob, EVAS_CALLBACK_MOUSE_OUT, _edje_anchor_mouse_out_cb, an); + evas_object_show(ob); + sel->obj = ob; + } + } + } + EINA_LIST_FOREACH(an->sel, ll, sel) + { + if (an->item) + { + Evas_Coord cx, cy, cw, ch; + + if (!evas_textblock_cursor_format_item_geometry_get + (an->start, &cx, &cy, &cw, &ch)) + continue; + evas_object_move(sel->obj, x + cx, y + cy); + evas_object_resize(sel->obj, cw, ch); + } + else + { + Evas_Textblock_Rectangle *r; + + r = range->data; + *(&(sel->rect)) = *r; + if (sel->obj_bg) + { + evas_object_move(sel->obj_bg, x + r->x, y + r->y); + evas_object_resize(sel->obj_bg, r->w, r->h); + } + if (sel->obj_fg) + { + evas_object_move(sel->obj_fg, x + r->x, y + r->y); + evas_object_resize(sel->obj_fg, r->w, r->h); + } + if (sel->obj) + { + evas_object_move(sel->obj, x + r->x, y + r->y); + evas_object_resize(sel->obj, r->w, r->h); + } + range = eina_list_remove_list(range, range); + free(r); + } + } + } +} + +static void +_anchors_clear(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry *en) +{ + while (en->anchorlist) + { + free(en->anchorlist->data); + en->anchorlist = eina_list_remove_list(en->anchorlist, en->anchorlist); + } + while (en->itemlist) + { + free(en->itemlist->data); + en->itemlist = eina_list_remove_list(en->itemlist, en->itemlist); + } + while (en->anchors) + { + Anchor *an = en->anchors->data; + + evas_textblock_cursor_free(an->start); + evas_textblock_cursor_free(an->end); + while (an->sel) + { + Sel *sel = an->sel->data; + if (sel->obj_bg) evas_object_del(sel->obj_bg); + if (sel->obj_fg) evas_object_del(sel->obj_fg); + if (sel->obj) evas_object_del(sel->obj); + free(sel); + an->sel = eina_list_remove_list(an->sel, an->sel); + } + free(an->name); + free(an); + en->anchors = eina_list_remove_list(en->anchors, en->anchors); + } +} + +static void +_anchors_get(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en) +{ + const Eina_List *anchors_a, *anchors_item; + Anchor *an = NULL; + _anchors_clear(c, o, en); + + anchors_a = evas_textblock_node_format_list_get(o, "a"); + anchors_item = evas_textblock_node_format_list_get(o, "item"); + + if (anchors_a) + { + const Evas_Object_Textblock_Node_Format *node; + const Eina_List *itr; + EINA_LIST_FOREACH(anchors_a, itr, node) + { + const char *s = evas_textblock_node_format_text_get(node); + char *p; + an = calloc(1, sizeof(Anchor)); + if (!an) + break; + + an->en = en; + p = strstr(s, "href="); + if (p) + { + an->name = strdup(p + 5); + } + en->anchors = eina_list_append(en->anchors, an); + an->start = evas_object_textblock_cursor_new(o); + an->end = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_at_format_set(an->start, node); + evas_textblock_cursor_copy(an->start, an->end); + + /* Close the anchor, if the anchor was without text, + * free it as well */ + node = evas_textblock_node_format_next_get(node); + for (; node; node = evas_textblock_node_format_next_get(node)) + { + s = evas_textblock_node_format_text_get(node); + if ((!strcmp(s, "- a")) || (!strcmp(s, "-a"))) + break; + } + + if (node) + { + evas_textblock_cursor_at_format_set(an->end, node); + } + else if (!evas_textblock_cursor_compare(an->start, an->end)) + { + if (an->name) free(an->name); + evas_textblock_cursor_free(an->start); + evas_textblock_cursor_free(an->end); + en->anchors = eina_list_remove(en->anchors, an); + free(an); + } + an = NULL; + } + } + + if (anchors_item) + { + const Evas_Object_Textblock_Node_Format *node; + const Eina_List *itr; + EINA_LIST_FOREACH(anchors_item, itr, node) + { + const char *s = evas_textblock_node_format_text_get(node); + char *p; + an = calloc(1, sizeof(Anchor)); + if (!an) + break; + + an->en = en; + an->item = 1; + p = strstr(s, "href="); + if (p) + { + an->name = strdup(p + 5); + } + en->anchors = eina_list_append(en->anchors, an); + an->start = evas_object_textblock_cursor_new(o); + an->end = evas_object_textblock_cursor_new(o); + evas_textblock_cursor_at_format_set(an->start, node); + evas_textblock_cursor_copy(an->start, an->end); + /* Although needed in textblock, don't bother with finding the end + * here cause it doesn't really matter. */ + } + } +} + +static void +_free_entry_change_info(void *_info) +{ + Edje_Entry_Change_Info *info = (Edje_Entry_Change_Info *) _info; + if (info->insert) + { + eina_stringshare_del(info->change.insert.content); + } + else + { + eina_stringshare_del(info->change.del.content); + } + free(info); +} + +static void +_range_del_emit(Edje *ed, Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry *en) +{ + size_t start, end; + char *tmp; + Edje_Entry_Change_Info *info; + + start = evas_textblock_cursor_pos_get(en->sel_start); + end = evas_textblock_cursor_pos_get(en->sel_end); + if (start == end) + goto noop; + + info = calloc(1, sizeof(*info)); + info->insert = EINA_FALSE; + info->change.del.start = start; + info->change.del.end = end; + + tmp = evas_textblock_cursor_range_text_get(en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP); + info->change.del.content = eina_stringshare_add(tmp); + if (tmp) free(tmp); + evas_textblock_cursor_range_delete(en->sel_start, en->sel_end); + _edje_emit(ed, "entry,changed", en->rp->part->name); + _edje_emit_full(ed, "entry,changed,user", en->rp->part->name, info, + _free_entry_change_info); +noop: + _sel_clear(en->cursor, en->rp->object, en); +} + +static void +_range_del(Evas_Textblock_Cursor *c __UNUSED__, Evas_Object *o __UNUSED__, Entry *en) +{ + evas_textblock_cursor_range_delete(en->sel_start, en->sel_end); + _sel_clear(en->cursor, en->rp->object, en); +} + +static void +_delete_emit(Edje *ed, Evas_Textblock_Cursor *c, Entry *en, size_t pos, + Eina_Bool backspace) +{ + if (!evas_textblock_cursor_char_next(c)) + { + return; + } + evas_textblock_cursor_char_prev(c); + + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + char *tmp = evas_textblock_cursor_content_get(c); + + info->insert = EINA_FALSE; + if (backspace) + { + info->change.del.start = pos - 1; + info->change.del.end = pos; + } + else + { + info->change.del.start = pos + 1; + info->change.del.end = pos; + } + + info->change.del.content = eina_stringshare_add(tmp); + if (tmp) free(tmp); + + evas_textblock_cursor_char_delete(c); + _edje_emit(ed, "entry,changed", en->rp->part->name); + _edje_emit_full(ed, "entry,changed,user", en->rp->part->name, + info, _free_entry_change_info); +} + +static void +_edje_entry_hide_visible_password(Edje_Real_Part *rp) +{ + const Evas_Object_Textblock_Node_Format *node; + node = evas_textblock_node_format_first_get(rp->object); + for (; node; node = evas_textblock_node_format_next_get(node)) + { + const char *text = evas_textblock_node_format_text_get(node); + if (text) + { + if (!strcmp(text, "+ password=off")) + { + evas_textblock_node_format_remove_pair(rp->object, + (Evas_Object_Textblock_Node_Format *) node); + break; + } + } + } + _edje_entry_real_part_configure(rp); + _edje_emit(rp->edje, "entry,changed", rp->part->name); +} + +static Eina_Bool +_password_timer_cb(void *data) +{ + Entry *en = (Entry *)data; + _edje_entry_hide_visible_password(en->rp); + en->pw_timer = NULL; + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool +_is_modifier(const char *key) +{ + if ((!strncmp(key, "Shift", 5)) || + (!strncmp(key, "Control", 7)) || + (!strncmp(key, "Alt", 3)) || + (!strncmp(key, "Meta", 4)) || + (!strncmp(key, "Super", 5)) || + (!strncmp(key, "Hyper", 5)) || + (!strcmp(key, "Scroll_Lock")) || + (!strcmp(key, "Num_Lock")) || + (!strcmp(key, "Caps_Lock"))) + return EINA_TRUE; + return EINA_FALSE; +} + +static void +_compose_seq_reset(Entry *en) +{ + char *str; + + EINA_LIST_FREE(en->seq, str) eina_stringshare_del(str); + en->composing = EINA_FALSE; +} + +static void +_edje_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Edje *ed = data; + Evas_Event_Key_Down *ev = event_info; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + Eina_Bool control, alt, shift; + Eina_Bool multiline; + Eina_Bool cursor_changed; + int old_cur_pos; + if (!rp) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + return; + if (!ev->keyname) return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Key_Down ecore_ev; + ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev); + if (!en->composing) + { + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_KEY_DOWN, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } + } +#endif + + if ((!strcmp(ev->keyname, "Escape")) || + (!strcmp(ev->keyname, "Return")) || (!strcmp(ev->keyname, "KP_Enter"))) + _edje_entry_imf_context_reset(rp); + + old_cur_pos = evas_textblock_cursor_pos_get(en->cursor); + + control = evas_key_modifier_is_set(ev->modifiers, "Control"); + alt = evas_key_modifier_is_set(ev->modifiers, "Alt"); + shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); + multiline = rp->part->multiline; + cursor_changed = EINA_FALSE; + if (!strcmp(ev->keyname, "Escape")) + { + _compose_seq_reset(en); + // dead keys here. Escape for now (should emit these) + _edje_emit(ed, "entry,key,escape", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Up") || + (!strcmp(ev->keyname, "KP_Up") && !ev->string)) + { + _compose_seq_reset(en); + if (multiline) + { + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _curs_up(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + _edje_emit(ed, "entry,key,up", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + } + else if (!strcmp(ev->keyname, "Down") || + (!strcmp(ev->keyname, "KP_Down") && !ev->string)) + { + _compose_seq_reset(en); + if (multiline) + { + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _curs_down(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + _edje_emit(ed, "entry,key,down", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + } + else if (!strcmp(ev->keyname, "Left") || + (!strcmp(ev->keyname, "KP_Left") && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + evas_textblock_cursor_char_prev(en->cursor); + /* If control is pressed, go to the start of the word */ + if (control) evas_textblock_cursor_word_start(en->cursor); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,left", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Right") || + (!strcmp(ev->keyname, "KP_Right") && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + /* If control is pressed, go to the end of the word */ + if (control) evas_textblock_cursor_word_end(en->cursor); + evas_textblock_cursor_char_next(en->cursor); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,right", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "BackSpace")) + { + _compose_seq_reset(en); + if (control && !en->have_selection) + { + // del to start of previous word + _sel_start(en->cursor, rp->object, en); + + evas_textblock_cursor_char_prev(en->cursor); + evas_textblock_cursor_word_start(en->cursor); + + _sel_preextend(en->cursor, rp->object, en); + + _range_del_emit(ed, en->cursor, rp->object, en); + } + else if ((alt) && (shift)) + { + // undo last action + } + else + { + if (en->have_selection) + { + _range_del_emit(ed, en->cursor, rp->object, en); + } + else + { + if (evas_textblock_cursor_char_prev(en->cursor)) + { + _delete_emit(ed, en->cursor, en, old_cur_pos, EINA_TRUE); + } + } + } + _sel_clear(en->cursor, rp->object, en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,key,backspace", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Delete") || + (!strcmp(ev->keyname, "KP_Delete") && !ev->string)) + { + _compose_seq_reset(en); + if (control) + { + // del to end of next word + _sel_start(en->cursor, rp->object, en); + + evas_textblock_cursor_word_end(en->cursor); + evas_textblock_cursor_char_next(en->cursor); + + _sel_extend(en->cursor, rp->object, en); + + _range_del_emit(ed, en->cursor, rp->object, en); + } + else if (shift) + { + // cut + } + else + { + if (en->have_selection) + { + _range_del_emit(ed, en->cursor, rp->object, en); + } + else + { + _delete_emit(ed, en->cursor, en, old_cur_pos, EINA_FALSE); + } + } + _sel_clear(en->cursor, rp->object, en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,key,delete", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Home") || + ((!strcmp(ev->keyname, "KP_Home")) && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + if ((control) && (multiline)) + _curs_start(en->cursor, rp->object, en); + else + _curs_lin_start(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,home", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "End") || + ((!strcmp(ev->keyname, "KP_End")) && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + if ((control) && (multiline)) + _curs_end(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,end", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!shift) && (!strcmp(ev->keyname, "v"))) + { + _compose_seq_reset(en); + _edje_emit(ed, "entry,paste,request", rp->part->name); + _edje_emit(ed, "entry,paste,request,3", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!strcmp(ev->keyname, "a"))) + { + _compose_seq_reset(en); + if (shift) + { + _edje_emit(ed, "entry,selection,none,request", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else + { + _edje_emit(ed, "entry,selection,all,request", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + } + else if ((control) && (((!shift) && !strcmp(ev->keyname, "c")) || !strcmp(ev->keyname, "Insert"))) + { + _compose_seq_reset(en); + _edje_emit(ed, "entry,copy,notify", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!shift) && ((!strcmp(ev->keyname, "x") || (!strcmp(ev->keyname, "m"))))) + { + _compose_seq_reset(en); + _edje_emit(ed, "entry,cut,notify", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!strcmp(ev->keyname, "z"))) + { + _compose_seq_reset(en); + if (shift) + { + // redo + _edje_emit(ed, "entry,redo,request", rp->part->name); + } + else + { + // undo + _edje_emit(ed, "entry,undo,request", rp->part->name); + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!shift) && (!strcmp(ev->keyname, "y"))) + { + _compose_seq_reset(en); + // redo + _edje_emit(ed, "entry,redo,request", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((control) && (!shift) && (!strcmp(ev->keyname, "w"))) + { + _compose_seq_reset(en); + _sel_clear(en->cursor, rp->object, en); + // select current word? + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Tab")) + { + _compose_seq_reset(en); + if (multiline) + { + if (shift) + { + // remove a tab + } + else + { + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + info->insert = EINA_TRUE; + info->change.insert.plain_length = 1; + + if (en->have_selection) + { + _range_del_emit(ed, en->cursor, rp->object, en); + info->merge = EINA_TRUE; + } + info->change.insert.pos = + evas_textblock_cursor_pos_get(en->cursor); + info->change.insert.content = eina_stringshare_add(""); + //yy +// evas_textblock_cursor_format_prepend(en->cursor, "tab"); + _text_filter_format_prepend(en, en->cursor, "tab"); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit_full(ed, "entry,changed,user", rp->part->name, + info, _free_entry_change_info); + } + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + _edje_emit(ed, "entry,key,tab", rp->part->name); + } + else if ((!strcmp(ev->keyname, "ISO_Left_Tab")) && (multiline)) + { + _compose_seq_reset(en); + // remove a tab + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Prior") || + (!strcmp(ev->keyname, "KP_Prior") && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _curs_jump_line_by(en->cursor, rp->object, en, -10); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,pgup", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if (!strcmp(ev->keyname, "Next") || + (!strcmp(ev->keyname, "KP_Next") && !ev->string)) + { + _compose_seq_reset(en); + if (en->select_allow) + { + if (shift) _sel_start(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _curs_jump_line_by(en->cursor, rp->object, en, 10); + if (en->select_allow) + { + if (shift) _sel_extend(en->cursor, rp->object, en); + else _sel_clear(en->cursor, rp->object, en); + } + _edje_emit(ed, "entry,key,pgdn", rp->part->name); + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + else if ((!strcmp(ev->keyname, "Return")) || (!strcmp(ev->keyname, "KP_Enter"))) + { + _compose_seq_reset(en); + if (multiline) + { + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + info->insert = EINA_TRUE; + info->change.insert.plain_length = 1; + if (en->have_selection) + { + _range_del_emit(ed, en->cursor, rp->object, en); + info->merge = EINA_TRUE; + } + + info->change.insert.pos = + evas_textblock_cursor_pos_get(en->cursor); + if (shift || + evas_object_textblock_legacy_newline_get(rp->object)) + { + //yy +// evas_textblock_cursor_format_prepend(en->cursor, "br"); + _text_filter_format_prepend(en, en->cursor, "br"); + info->change.insert.content = eina_stringshare_add("
"); + } + else + { + //yy +// evas_textblock_cursor_format_prepend(en->cursor, "ps"); + _text_filter_format_prepend(en, en->cursor, "ps"); + info->change.insert.content = eina_stringshare_add(""); + } + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit_full(ed, "entry,changed,user", rp->part->name, + info, _free_entry_change_info); + _edje_emit(ed, "cursor,changed", rp->part->name); + cursor_changed = EINA_TRUE; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + _edje_emit(ed, "entry,key,enter", rp->part->name); + } + else + { + char *compres = NULL, *string = (char *)ev->string; + Eina_Bool free_string = EINA_FALSE; + Ecore_Compose_State state; + + if (!en->composing) + { + _compose_seq_reset(en); + en->seq = eina_list_append(en->seq, eina_stringshare_add(ev->key)); + state = ecore_compose_get(en->seq, &compres); + if (state == ECORE_COMPOSE_MIDDLE) en->composing = EINA_TRUE; + else en->composing = EINA_FALSE; + if (!en->composing) _compose_seq_reset(en); + else goto end; + } + else + { + if (_is_modifier(ev->key)) goto end; + en->seq = eina_list_append(en->seq, eina_stringshare_add(ev->key)); + state = ecore_compose_get(en->seq, &compres); + if (state == ECORE_COMPOSE_NONE) _compose_seq_reset(en); + else if (state == ECORE_COMPOSE_DONE) + { + _compose_seq_reset(en); + if (compres) + { + string = compres; + free_string = EINA_TRUE; + } + } + else goto end; + } + if (string) + { + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + info->insert = EINA_TRUE; + info->change.insert.plain_length = 1; + info->change.insert.content = eina_stringshare_add(string); + + if (en->have_selection) + { + _range_del_emit(ed, en->cursor, rp->object, en); + info->merge = EINA_TRUE; + } + + info->change.insert.pos = + evas_textblock_cursor_pos_get(en->cursor); + // if PASSWORD_SHOW_LAST mode, appending text with password=off tag + if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) && + _edje_password_show_last) + { + _edje_entry_hide_visible_password(en->rp); + _text_filter_format_prepend(en, en->cursor, "+ password=off"); + _text_filter_text_prepend(en, en->cursor, string); + _text_filter_format_prepend(en, en->cursor, "- password"); + if (en->pw_timer) + { + ecore_timer_del(en->pw_timer); + en->pw_timer = NULL; + } + en->pw_timer = ecore_timer_add(TO_DOUBLE(_edje_password_show_last_timeout), + _password_timer_cb, en); + } + else + _text_filter_text_prepend(en, en->cursor, string); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(ed, "entry,changed", rp->part->name); + _edje_emit_full(ed, "entry,changed,user", rp->part->name, + info, _free_entry_change_info); + _edje_emit(ed, "cursor,changed", rp->part->name); + cursor_changed = EINA_TRUE; + ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD; + } + if (free_string) free(string); + } +end: + if (!cursor_changed && (old_cur_pos != evas_textblock_cursor_pos_get(en->cursor))) + _edje_emit(ed, "cursor,changed", rp->part->name); + + _edje_entry_imf_cursor_info_set(en); + _edje_entry_real_part_configure(rp); +} + +static void +_edje_key_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + + if (!rp) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE)) + return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Evas_Event_Key_Up *ev = event_info; + Ecore_IMF_Event_Key_Up ecore_ev; + + ecore_imf_evas_event_key_up_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_KEY_UP, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#else + (void) event_info; +#endif +} + +static void +_edje_part_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Edje_Real_Part *rp = data; + Entry *en; + if (!rp) return; + en = rp->entry_data; + if (!en) return; + _edje_entry_imf_cursor_info_set(en); +} + +static void +_edje_part_mouse_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Coord cx, cy; + Edje_Real_Part *rp = data; + Evas_Event_Mouse_Down *ev = event_info; + Entry *en; + Evas_Coord x, y, w, h; + // Eina_Bool multiline; + Evas_Textblock_Cursor *tc = NULL; + Eina_Bool dosel = EINA_FALSE; + Eina_Bool shift; + if (!rp) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + if ((ev->button != 1) && (ev->button != 2)) return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Down ecore_ev; + ecore_imf_evas_event_mouse_down_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_DOWN, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + + shift = evas_key_modifier_is_set(ev->modifiers, "Shift"); + en->select_mod_start = EINA_FALSE; + en->select_mod_end = EINA_FALSE; + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) + dosel = EINA_TRUE; + else if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) + { + if (en->select_allow) dosel = EINA_TRUE; + } + if (ev->button == 2) dosel = EINA_FALSE; + if (dosel) + { + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + cx = ev->canvas.x - x; + cy = ev->canvas.y - y; + if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) + { + if (shift) + { + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + if (evas_textblock_cursor_compare(en->cursor, en->sel_start) < 0) + evas_textblock_cursor_line_char_first(en->cursor); + else + evas_textblock_cursor_line_char_last(en->cursor); + _sel_extend(en->cursor, rp->object, en); + } + else + { + en->have_selection = EINA_FALSE; + en->selecting = EINA_FALSE; + _sel_clear(en->cursor, rp->object, en); + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + evas_textblock_cursor_line_char_first(en->cursor); + _sel_start(en->cursor, rp->object, en); + evas_textblock_cursor_line_char_last(en->cursor); + _sel_extend(en->cursor, rp->object, en); + } + goto end; + } + else if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) + { + if (shift) + { + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + if (evas_textblock_cursor_compare(en->cursor, en->sel_start) < 0) + evas_textblock_cursor_word_start(en->cursor); + else + { + evas_textblock_cursor_word_end(en->cursor); + evas_textblock_cursor_char_next(en->cursor); + } + _sel_extend(en->cursor, rp->object, en); + } + else + { + en->have_selection = EINA_FALSE; + en->selecting = EINA_FALSE; + _sel_clear(en->cursor, rp->object, en); + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + evas_textblock_cursor_word_start(en->cursor); + _sel_start(en->cursor, rp->object, en); + evas_textblock_cursor_word_end(en->cursor); + evas_textblock_cursor_char_next(en->cursor); + _sel_extend(en->cursor, rp->object, en); + } + goto end; + } + } + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + // multiline = rp->part->multiline; + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + cx = ev->canvas.x - x; + cy = ev->canvas.y - y; + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, cy)) + { + Evas_Coord lx, ly, lw, lh; + int line; + + line = evas_textblock_cursor_line_coord_set(en->cursor, cy); + if (line == -1) + { + if (rp->part->multiline) + _curs_end(en->cursor, rp->object, en); + else + { + evas_textblock_cursor_paragraph_first(en->cursor); + evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, ly + (lh / 2))) + _curs_end(en->cursor, rp->object, en); + } + } + else + { + int lnum; + + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (lnum < 0) + { + _curs_lin_start(en->cursor, rp->object, en); + } + else + { + if (cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } + } + } + if (dosel) + { + if ((en->have_selection) && + (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT)) + { + if (shift) + _sel_extend(en->cursor, rp->object, en); + else + { + Eina_List *first, *last; + FLOAT_T sc; + + first = en->sel; + last = eina_list_last(en->sel); + if (first && last) + { + Evas_Textblock_Rectangle *r1, *r2; + Evas_Coord d, d1, d2; + + r1 = first->data; + r2 = last->data; + d = r1->x - cx; + d1 = d * d; + d = (r1->y + (r1->h / 2)) - cy; + d1 += d * d; + d = r2->x + r2->w - 1 - cx; + d2 = d * d; + d = (r2->y + (r2->h / 2)) - cy; + d2 += d * d; + sc = rp->edje->scale; + if (sc == ZERO) sc = _edje_scale; + d = (Evas_Coord)MUL(FROM_INT(20), sc); // FIXME: maxing number! + d = d * d; + if (d1 < d2) + { + if (d1 <= d) + { + en->select_mod_start = EINA_TRUE; + en->selecting = EINA_TRUE; + } + } + else + { + if (d2 <= d) + { + en->select_mod_end = EINA_TRUE; + en->selecting = EINA_TRUE; + } + } + } + } + } + else + { + if ((en->have_selection) && (shift)) + _sel_extend(en->cursor, rp->object, en); + else + { + en->selecting = EINA_TRUE; + _sel_clear(en->cursor, rp->object, en); + if (en->select_allow) + { + _sel_start(en->cursor, rp->object, en); + } + } + } + } + end: + if (evas_textblock_cursor_compare(tc, en->cursor)) + { + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + } + evas_textblock_cursor_free(tc); + + _edje_entry_imf_cursor_info_set(en); + + _edje_entry_real_part_configure(rp); + if (ev->button == 2) + { + _edje_emit(rp->edje, "entry,paste,request", rp->part->name); + _edje_emit(rp->edje, "entry,paste,request,1", rp->part->name); + } +} + +static void +_edje_part_mouse_up_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Coord cx, cy; + Edje_Real_Part *rp = data; + Evas_Event_Mouse_Up *ev = event_info; + Entry *en; + Evas_Coord x, y, w, h; + Evas_Textblock_Cursor *tc; + if (ev->button != 1) return; + if (!rp) return; + if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return; + if (ev->flags & EVAS_BUTTON_TRIPLE_CLICK) return; + if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Up ecore_ev; + ecore_imf_evas_event_mouse_up_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_UP, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + + _edje_entry_imf_context_reset(rp); + + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + cx = ev->canvas.x - x; + cy = ev->canvas.y - y; + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, cy)) + { + Evas_Coord lx, ly, lw, lh; + int line; + + line = evas_textblock_cursor_line_coord_set(en->cursor, cy); + if (line == -1) + { + if (rp->part->multiline) + _curs_end(en->cursor, rp->object, en); + else + { + evas_textblock_cursor_paragraph_first(en->cursor); + evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, ly + (lh / 2))) + _curs_end(en->cursor, rp->object, en); + } + } + else + { + int lnum; + + lnum = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (lnum < 0) + { + _curs_lin_start(en->cursor, rp->object, en); + } + else + { + if (cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } + } + } + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) + { + if (en->select_allow) + { + if (en->had_sel) + { + if (en->select_mod_end) + _sel_extend(en->cursor, rp->object, en); + else if (en->select_mod_start) + _sel_preextend(en->cursor, rp->object, en); + } + else + _sel_extend(en->cursor, rp->object, en); + //evas_textblock_cursor_copy(en->cursor, en->sel_end); + } + } + else + evas_textblock_cursor_copy(en->cursor, en->sel_end); + if (en->selecting) + { + if (en->have_selection) + en->had_sel = EINA_TRUE; + en->selecting = EINA_FALSE; + } + if (evas_textblock_cursor_compare(tc, en->cursor)) + { + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + } + evas_textblock_cursor_free(tc); + + _edje_entry_imf_cursor_info_set(en); + _edje_entry_real_part_configure(rp); +} + +static void +_edje_part_mouse_move_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info) +{ + Evas_Coord cx, cy; + Edje_Real_Part *rp = data; + Evas_Event_Mouse_Move *ev = event_info; + Entry *en; + Evas_Coord x, y, w, h; + Evas_Textblock_Cursor *tc; + if (!rp) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + { + Ecore_IMF_Event_Mouse_Move ecore_ev; + ecore_imf_evas_event_mouse_move_wrap(ev, &ecore_ev); + if (ecore_imf_context_filter_event(en->imf_context, + ECORE_IMF_EVENT_MOUSE_MOVE, + (Ecore_IMF_Event *)&ecore_ev)) + return; + } +#endif + + if (en->selecting) + { + tc = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, tc); + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + cx = ev->cur.canvas.x - x; + cy = ev->cur.canvas.y - y; + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, cy)) + { + Evas_Coord lx, ly, lw, lh; + + if (evas_textblock_cursor_line_coord_set(en->cursor, cy) < 0) + { + if (rp->part->multiline) + _curs_end(en->cursor, rp->object, en); + else + { + evas_textblock_cursor_paragraph_first(en->cursor); + evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (!evas_textblock_cursor_char_coord_set(en->cursor, cx, ly + (lh / 2))) + _curs_end(en->cursor, rp->object, en); + } + } + else + { + evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh); + if (cx <= lx) + _curs_lin_start(en->cursor, rp->object, en); + else + _curs_lin_end(en->cursor, rp->object, en); + } + } + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_EXPLICIT) + { + if (en->select_allow) + { + if (en->had_sel) + { + if (en->select_mod_end) + _sel_extend(en->cursor, rp->object, en); + else if (en->select_mod_start) + _sel_preextend(en->cursor, rp->object, en); + } + else + _sel_extend(en->cursor, rp->object, en); + } + } + else + { + _sel_extend(en->cursor, rp->object, en); + } + if (en->select_allow) + { + if (evas_textblock_cursor_compare(en->sel_start, en->sel_end) != 0) + _sel_enable(en->cursor, rp->object, en); + if (en->have_selection) + _sel_update(en->cursor, rp->object, en); + } + if (evas_textblock_cursor_compare(tc, en->cursor)) + { + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed,manual", rp->part->name); + } + evas_textblock_cursor_free(tc); + + _edje_entry_imf_context_reset(rp); + _edje_entry_imf_cursor_info_set(en); + + _edje_entry_real_part_configure(rp); + } +} + +static void +_evas_focus_in_cb(void *data, Evas *e, __UNUSED__ void *event_info) +{ + Edje *ed = (Edje *)data; + + if (evas_focus_get(e) == ed->obj) + { + _edje_focus_in_cb(data, NULL, NULL, NULL); + } +} + +static void +_evas_focus_out_cb(void *data, Evas *e, __UNUSED__ void *event_info) +{ + Edje *ed = (Edje *)data; + + if (evas_focus_get(e) == ed->obj) + { + _edje_focus_out_cb(data, NULL, NULL, NULL); + } +} + +/***************************************************************/ +void +_edje_entry_init(Edje *ed) +{ + if (!ed->has_entries) + return; + if (ed->entries_inited) + return; + ed->entries_inited = EINA_TRUE; + + evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_FOCUS_IN, _edje_focus_in_cb, ed); + evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_FOCUS_OUT, _edje_focus_out_cb, ed); + evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_KEY_DOWN, _edje_key_down_cb, ed); + evas_object_event_callback_add(ed->obj, EVAS_CALLBACK_KEY_UP, _edje_key_up_cb, ed); + evas_event_callback_add(ed->base.evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _evas_focus_in_cb, ed); + evas_event_callback_add(ed->base.evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _evas_focus_out_cb, ed); +} + +void +_edje_entry_shutdown(Edje *ed) +{ + if (!ed->has_entries) + return; + if (!ed->entries_inited) + return; + ed->entries_inited = EINA_FALSE; + + evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_FOCUS_IN, _edje_focus_in_cb); + evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_FOCUS_OUT, _edje_focus_out_cb); + evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_KEY_DOWN, _edje_key_down_cb); + evas_object_event_callback_del(ed->obj, EVAS_CALLBACK_KEY_UP, _edje_key_up_cb); + if (evas_event_callback_del_full(ed->base.evas, EVAS_CALLBACK_CANVAS_FOCUS_IN, _evas_focus_in_cb, ed) != ed) + ERR("could not unregister EVAS_CALLBACK_FOCUS_IN"); + if (evas_event_callback_del_full(ed->base.evas, EVAS_CALLBACK_CANVAS_FOCUS_OUT, _evas_focus_out_cb, ed) != ed) + ERR("could not unregister EVAS_CALLBACK_FOCUS_OUT"); +} + +void +_edje_entry_real_part_init(Edje_Real_Part *rp) +{ + Entry *en; +#ifdef HAVE_ECORE_IMF + const char *ctx_id; + const Ecore_IMF_Context_Info *ctx_info; +#endif + + en = calloc(1, sizeof(Entry)); + if (!en) return; + rp->entry_data = en; + en->rp = rp; + + evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOVE, _edje_part_move_cb, rp); + + evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_DOWN, _edje_part_mouse_down_cb, rp); + evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_UP, _edje_part_mouse_up_cb, rp); + evas_object_event_callback_add(rp->object, EVAS_CALLBACK_MOUSE_MOVE, _edje_part_mouse_move_cb, rp); + + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) + en->select_allow = EINA_TRUE; + + if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) + { + Edje_Part_Description_Text *txt; + + txt = (Edje_Part_Description_Text *)rp->chosen_description; + + en->select_allow = EINA_FALSE; + if (txt && edje_string_get(&txt->text.repch)) + evas_object_textblock_replace_char_set(rp->object, edje_string_get(&txt->text.repch)); + else + evas_object_textblock_replace_char_set(rp->object, "*"); + } + + en->cursor_bg = edje_object_add(rp->edje->base.evas); + edje_object_file_set(en->cursor_bg, rp->edje->path, rp->part->source3); + evas_object_smart_member_add(en->cursor_bg, rp->edje->obj); + evas_object_stack_below(en->cursor_bg, rp->object); + evas_object_clip_set(en->cursor_bg, evas_object_clip_get(rp->object)); + evas_object_pass_events_set(en->cursor_bg, EINA_TRUE); + _edje_subobj_register(en->rp->edje, en->cursor_bg); + + en->cursor_fg = edje_object_add(rp->edje->base.evas); + edje_object_file_set(en->cursor_fg, rp->edje->path, rp->part->source4); + evas_object_smart_member_add(en->cursor_fg, rp->edje->obj); + evas_object_stack_above(en->cursor_fg, rp->object); + evas_object_clip_set(en->cursor_fg, evas_object_clip_get(rp->object)); + evas_object_pass_events_set(en->cursor_fg, EINA_TRUE); + _edje_subobj_register(en->rp->edje, en->cursor_fg); + + evas_object_textblock_legacy_newline_set(rp->object, EINA_TRUE); + + if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE) + { + evas_object_show(en->cursor_bg); + evas_object_show(en->cursor_fg); + en->input_panel_enable = EINA_TRUE; + +#ifdef HAVE_ECORE_IMF + ecore_imf_init(); + + edje_object_signal_callback_add(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb, rp); + edje_object_signal_callback_add(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb, rp); + + ctx_id = ecore_imf_context_default_id_get(); + if (ctx_id) + { + ctx_info = ecore_imf_context_info_by_id_get(ctx_id); + if (!ctx_info->canvas_type || + strcmp(ctx_info->canvas_type, "evas") == 0) + { + en->imf_context = ecore_imf_context_add(ctx_id); + } + else + { + ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas"); + if (ctx_id) + { + en->imf_context = ecore_imf_context_add(ctx_id); + } + } + } + else + en->imf_context = NULL; + + if (!en->imf_context) goto done; + + ecore_imf_context_client_window_set + (en->imf_context, + (void *)ecore_evas_window_get + (ecore_evas_ecore_evas_get(rp->edje->base.evas))); + ecore_imf_context_client_canvas_set(en->imf_context, rp->edje->base.evas); + + ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, + _edje_entry_imf_retrieve_surrounding_cb, rp->edje); + ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje); + ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp->edje); + ecore_imf_context_event_callback_add(en->imf_context, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb, rp->edje); + ecore_imf_context_input_mode_set(en->imf_context, + rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ? + ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL); + + if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) + ecore_imf_context_input_panel_language_set(en->imf_context, ECORE_IMF_INPUT_PANEL_LANG_ALPHABET); +#endif + } +#ifdef HAVE_ECORE_IMF +done: +#endif + en->cursor = (Evas_Textblock_Cursor *)evas_object_textblock_cursor_get(rp->object); +} + +void +_edje_entry_real_part_shutdown(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + rp->entry_data = NULL; + _sel_clear(en->cursor, rp->object, en); + _anchors_clear(en->cursor, rp->object, en); +#ifdef HAVE_ECORE_IMF + _preedit_clear(en); +#endif + evas_object_del(en->cursor_bg); + evas_object_del(en->cursor_fg); + + if (en->pw_timer) + { + ecore_timer_del(en->pw_timer); + en->pw_timer = NULL; + } + +#ifdef HAVE_ECORE_IMF + if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE) + { + if (en->imf_context) + { + ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_COMMIT, _edje_entry_imf_event_commit_cb); + ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb); + ecore_imf_context_event_callback_del(en->imf_context, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _edje_entry_imf_event_preedit_changed_cb); + + ecore_imf_context_del(en->imf_context); + en->imf_context = NULL; + } + + edje_object_signal_callback_del(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb); + edje_object_signal_callback_del(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb); + ecore_imf_shutdown(); + } +#endif + _compose_seq_reset(en); + + free(en); +} + +void +_edje_entry_real_part_configure(Edje_Real_Part *rp) +{ + Evas_Coord x, y, w, h, xx, yy, ww, hh; + Entry *en = rp->entry_data; + Evas_Textblock_Cursor_Type cur_type; + if (!en) return; + switch (rp->part->cursor_mode) + { + case EDJE_ENTRY_CURSOR_MODE_BEFORE: + cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; + break; + case EDJE_ENTRY_CURSOR_MODE_UNDER: + /* no break for a resaon */ + default: + cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; + } + + _sel_update(en->cursor, rp->object, en); + _anchors_update(en->cursor, rp->object, en); + x = y = w = h = -1; + xx = yy = ww = hh = -1; + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, NULL, cur_type); + if (ww < 1) ww = 1; + if (hh < 1) hh = 1; + if (en->cursor_bg) + { + evas_object_move(en->cursor_bg, x + xx, y + yy); + evas_object_resize(en->cursor_bg, ww, hh); + } + if (en->cursor_fg) + { + evas_object_move(en->cursor_fg, x + xx, y + yy); + evas_object_resize(en->cursor_fg, ww, hh); + } +} + +const char * +_edje_entry_selection_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + // get selection - convert to markup + if ((!en->selection) && (en->have_selection)) + en->selection = evas_textblock_cursor_range_text_get + (en->sel_start, en->sel_end, EVAS_TEXTBLOCK_TEXT_MARKUP); + return en->selection; +} + +const char * +_edje_entry_text_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + // get text - convert to markup + return evas_object_textblock_text_markup_get(rp->object); +} + +void +_edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text) +{ + Entry *en = rp->entry_data; + if (!en) return; + _edje_entry_imf_context_reset(rp); + // set text as markup + _sel_clear(en->cursor, rp->object, en); + evas_object_textblock_text_markup_set(rp->object, text); + _edje_entry_set_cursor_start(rp); + + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "entry,changed", rp->part->name); + _edje_entry_imf_cursor_info_set(en); + + _edje_entry_real_part_configure(rp); +#if 0 + /* Don't emit cursor changed cause it didn't. It's just init to 0. */ + _edje_emit(rp->edje, "cursor,changed", rp->part->name); +#endif +} + +void +_edje_entry_text_markup_append(Edje_Real_Part *rp, const char *text) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *end_cur; + if (!en) return; + end_cur = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_paragraph_last(end_cur); + + _text_filter_markup_prepend(en, end_cur, text); + evas_textblock_cursor_free(end_cur); + + /* We are updating according to the real cursor on purpose */ + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "entry,changed", rp->part->name); + + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text) +{ + Entry *en = rp->entry_data; + if (!en) return; + _edje_entry_imf_context_reset(rp); + + // prepend markup @ cursor pos + if (en->have_selection) + _range_del(en->cursor, rp->object, en); + //xx +// evas_object_textblock_text_markup_prepend(en->cursor, text); + _text_filter_markup_prepend(en, en->cursor, text); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "entry,changed", rp->part->name); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + + _edje_entry_imf_cursor_info_set(en); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_set_cursor_start(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _curs_start(en->cursor, rp->object, en); + + _edje_entry_imf_cursor_info_set(en); +} + +void +_edje_entry_set_cursor_end(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _curs_end(en->cursor, rp->object, en); + + _edje_entry_imf_cursor_info_set(en); +} + +void +_edje_entry_select_none(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _sel_clear(en->cursor, rp->object, en); +} + +void +_edje_entry_select_all(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + + _edje_entry_imf_context_reset(rp); + + _sel_clear(en->cursor, rp->object, en); + _curs_start(en->cursor, rp->object, en); + _sel_enable(en->cursor, rp->object, en); + _sel_start(en->cursor, rp->object, en); + _curs_end(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); + + _edje_entry_imf_cursor_info_set(en); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_select_begin(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + + _edje_entry_imf_context_reset(rp); + + _sel_clear(en->cursor, rp->object, en); + _sel_enable(en->cursor, rp->object, en); + _sel_start(en->cursor, rp->object, en); + _sel_extend(en->cursor, rp->object, en); + + _edje_entry_imf_cursor_info_set(en); + + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_select_extend(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; + _edje_entry_imf_context_reset(rp); + _sel_extend(en->cursor, rp->object, en); + + _edje_entry_imf_cursor_info_set(en); + + _edje_entry_real_part_configure(rp); +} + +const Eina_List * +_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor) +{ + Entry *en = rp->entry_data; + Eina_List *l; + Anchor *an; + + if (!en) return NULL; + EINA_LIST_FOREACH(en->anchors, l, an) + { + if (an->item) continue; + if (!strcmp(anchor, an->name)) + return an->sel; + } + return NULL; +} + +const Eina_List * +_edje_entry_anchors_list(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + Eina_List *l, *anchors = NULL; + Anchor *an; + + if (!en) return NULL; + if (!en->anchorlist) + { + EINA_LIST_FOREACH(en->anchors, l, an) + { + const char *n = an->name; + if (an->item) continue; + if (!n) n = ""; + anchors = eina_list_append(anchors, strdup(n)); + } + en->anchorlist = anchors; + } + return en->anchorlist; +} + +Eina_Bool +_edje_entry_item_geometry_get(Edje_Real_Part *rp, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) +{ + Entry *en = rp->entry_data; + Eina_List *l; + Anchor *an; + + if (!en) return EINA_FALSE; + EINA_LIST_FOREACH(en->anchors, l, an) + { + if (an->item) continue; + if (!strcmp(item, an->name)) + { + evas_textblock_cursor_format_item_geometry_get(an->start, cx, cy, cw, ch); + return EINA_TRUE; + } + } + return EINA_FALSE; +} + +const Eina_List * +_edje_entry_items_list(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + Eina_List *l, *items = NULL; + Anchor *an; + + if (!en) return NULL; + if (!en->itemlist) + { + EINA_LIST_FOREACH(en->anchors, l, an) + { + const char *n = an->name; + if (an->item) continue; + if (!n) n = ""; + items = eina_list_append(items, strdup(n)); + } + en->itemlist = items; + } + return en->itemlist; +} + +void +_edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) +{ + Evas_Coord x, y, w, h, xx, yy, ww, hh; + Entry *en = rp->entry_data; + Evas_Textblock_Cursor_Type cur_type; + if (!en) return; + switch (rp->part->cursor_mode) + { + case EDJE_ENTRY_CURSOR_MODE_BEFORE: + cur_type = EVAS_TEXTBLOCK_CURSOR_BEFORE; + break; + case EDJE_ENTRY_CURSOR_MODE_UNDER: + /* no break for a resaon */ + default: + cur_type = EVAS_TEXTBLOCK_CURSOR_UNDER; + } + + x = y = w = h = -1; + xx = yy = ww = hh = -1; + evas_object_geometry_get(rp->object, &x, &y, &w, &h); + evas_textblock_cursor_geometry_get(en->cursor, &xx, &yy, &ww, &hh, NULL, cur_type); + if (ww < 1) ww = 1; + if (rp->part->cursor_mode == EDJE_ENTRY_CURSOR_MODE_BEFORE) + edje_object_size_min_restricted_calc(en->cursor_fg, &ww, NULL, ww, 0); + if (hh < 1) hh = 1; + if (cx) *cx = x + xx; + if (cy) *cy = y + yy; + if (cw) *cw = ww; + if (ch) *ch = hh; +} + +void +_edje_entry_user_insert(Edje_Real_Part *rp, const char *text) +{ + Entry *en = rp->entry_data; + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + info->insert = EINA_TRUE; + info->change.insert.plain_length = 1; + info->change.insert.content = eina_stringshare_add(text); + { + char *tmp; + tmp = evas_textblock_text_markup_to_utf8(rp->object, + info->change.insert.content); + info->change.insert.plain_length = eina_unicode_utf8_get_len(tmp); + free(tmp); + } + + if (en->have_selection) + { + _range_del_emit(rp->edje, en->cursor, rp->object, en); + info->merge = EINA_TRUE; + } + info->change.insert.pos = evas_textblock_cursor_pos_get(en->cursor); + _text_filter_markup_prepend(en, en->cursor, text); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "entry,changed", rp->part->name); + _edje_emit_full(rp->edje, "entry,changed,user", rp->part->name, + info, _free_entry_change_info); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); +} + +void +_edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow) +{ + Entry *en = rp->entry_data; + if (rp->part->select_mode == EDJE_ENTRY_SELECTION_MODE_DEFAULT) + return; + en->select_allow = allow; +} + +Eina_Bool +_edje_entry_select_allow_get(const Edje_Real_Part *rp) +{ + const Entry *en = rp->entry_data; + return en->select_allow; +} + +void +_edje_entry_select_abort(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (en->selecting) + { + en->selecting = EINA_FALSE; + + _edje_entry_imf_context_reset(rp); + _edje_entry_imf_cursor_info_set(en); + _edje_entry_real_part_configure(rp); + } +} + +void * +_edje_entry_imf_context_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + +#ifdef HAVE_ECORE_IMF + return en->imf_context; +#else + return NULL; +#endif +} + +void +_edje_entry_autocapital_type_set(Edje_Real_Part *rp, Edje_Text_Autocapital_Type autocapital_type) +{ + Entry *en = rp->entry_data; + if (!en) return; + + if (rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) + autocapital_type = EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_autocapital_type_set(en->imf_context, autocapital_type); +#endif +} + +Edje_Text_Autocapital_Type +_edje_entry_autocapital_type_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; + +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + return ecore_imf_context_autocapital_type_get(en->imf_context); +#endif + + return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; +} + +void +_edje_entry_prediction_allow_set(Edje_Real_Part *rp, Eina_Bool prediction) +{ + Entry *en = rp->entry_data; + + if (!en) return; + en->prediction_allow = prediction; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_prediction_allow_set(en->imf_context, prediction); +#endif +} + +Eina_Bool +_edje_entry_prediction_allow_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EINA_FALSE; + + return en->prediction_allow; +} + +void +_edje_entry_input_panel_enabled_set(Edje_Real_Part *rp, Eina_Bool enabled) +{ + Entry *en = rp->entry_data; + + if (!en) return; + en->input_panel_enable = enabled; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_enabled_set(en->imf_context, enabled); +#endif +} + +Eina_Bool +_edje_entry_input_panel_enabled_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EINA_FALSE; + + return en->input_panel_enable; +} + +void +_edje_entry_input_panel_show(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_show(en->imf_context); +#endif +} + +void +_edje_entry_input_panel_hide(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_hide(en->imf_context); +#endif +} + +void +_edje_entry_input_panel_language_set(Edje_Real_Part *rp, Edje_Input_Panel_Lang lang) +{ + Entry *en = rp->entry_data; + + if (!en) return; + en->input_panel_lang = lang; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_language_set(en->imf_context, lang); +#endif +} + +Edje_Input_Panel_Lang +_edje_entry_input_panel_language_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EDJE_INPUT_PANEL_LANG_AUTOMATIC; + + return en->input_panel_lang; +} + +#ifdef HAVE_ECORE_IMF +void +_edje_entry_input_panel_imdata_set(Edje_Real_Part *rp, const void *data, int len) +#else +void +_edje_entry_input_panel_imdata_set(Edje_Real_Part *rp, const void *data __UNUSED__, int len __UNUSED__) +#endif +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_imdata_set(en->imf_context, data, len); +#endif +} + +#ifdef HAVE_ECORE_IMF +void +_edje_entry_input_panel_imdata_get(Edje_Real_Part *rp, void *data, int *len) +#else +void +_edje_entry_input_panel_imdata_get(Edje_Real_Part *rp, void *data __UNUSED__, int *len __UNUSED__) +#endif +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_imdata_get(en->imf_context, data, len); +#endif +} + +#ifdef HAVE_ECORE_IMF +void +_edje_entry_input_panel_return_key_type_set(Edje_Real_Part *rp, Edje_Input_Panel_Return_Key_Type return_key_type) +#else +void +_edje_entry_input_panel_return_key_type_set(Edje_Real_Part *rp, Edje_Input_Panel_Return_Key_Type return_key_type __UNUSED__) +#endif +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_return_key_type_set(en->imf_context, return_key_type); +#endif +} + +Edje_Input_Panel_Return_Key_Type +_edje_entry_input_panel_return_key_type_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + return ecore_imf_context_input_panel_return_key_type_get(en->imf_context); +#endif + return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT; +} + +#ifdef HAVE_ECORE_IMF +void +_edje_entry_input_panel_return_key_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled) +#else +void +_edje_entry_input_panel_return_key_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled __UNUSED__) +#endif +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_return_key_disabled_set(en->imf_context, disabled); +#endif +} + +Eina_Bool +_edje_entry_input_panel_return_key_disabled_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EINA_FALSE; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + return ecore_imf_context_input_panel_return_key_disabled_get(en->imf_context); +#endif + return EINA_FALSE; +} + +static Evas_Textblock_Cursor * +_cursor_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + if (!en) return NULL; + + switch (cur) + { + case EDJE_CURSOR_MAIN: + return en->cursor; + case EDJE_CURSOR_SELECTION_BEGIN: + return en->sel_start; + case EDJE_CURSOR_SELECTION_END: + return en->sel_end; + case EDJE_CURSOR_PREEDIT_START: + if (!en->preedit_start) + en->preedit_start = evas_object_textblock_cursor_new(rp->object); + return en->preedit_start; + case EDJE_CURSOR_PREEDIT_END: + if (!en->preedit_end) + en->preedit_end = evas_object_textblock_cursor_new(rp->object); + return en->preedit_end; + case EDJE_CURSOR_USER: + if (!en->cursor_user) + en->cursor_user = evas_object_textblock_cursor_new(rp->object); + return en->cursor_user; + case EDJE_CURSOR_USER_EXTRA: + if (!en->cursor_user_extra) + en->cursor_user_extra = evas_object_textblock_cursor_new(rp->object); + return en->cursor_user_extra; + default: + break; + } + return NULL; +} + +Eina_Bool +_edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + + _edje_entry_imf_context_reset(rp); + + if (!evas_textblock_cursor_char_next(c)) + { + return EINA_FALSE; + } + _sel_update(c, rp->object, rp->entry_data); + _edje_entry_imf_cursor_info_set(en); + + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); + return EINA_TRUE; +} + +Eina_Bool +_edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + + _edje_entry_imf_context_reset(rp); + + if (!evas_textblock_cursor_char_prev(c)) + { + if (evas_textblock_cursor_paragraph_prev(c)) goto ok; + else return EINA_FALSE; + } +ok: + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); + return EINA_TRUE; +} + +Eina_Bool +_edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; + int ln; + if (!c) return EINA_FALSE; + + _edje_entry_imf_context_reset(rp); + + ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); + ln--; + if (ln < 0) return EINA_FALSE; + if (!evas_object_textblock_line_number_geometry_get(rp->object, ln, + &lx, &ly, &lw, &lh)) + return EINA_FALSE; + evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); + if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) + { + if (cx < (lx + (lw / 2))) + evas_textblock_cursor_line_char_last(c); + else + evas_textblock_cursor_line_char_last(c); + } + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); + return EINA_TRUE; +} + +Eina_Bool +_edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + Evas_Coord lx, ly, lw, lh, cx, cy, cw, ch; + int ln; + if (!c) return EINA_FALSE; + + _edje_entry_imf_context_reset(rp); + + ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL); + ln++; + if (!evas_object_textblock_line_number_geometry_get(rp->object, ln, + &lx, &ly, &lw, &lh)) + return EINA_FALSE; + evas_textblock_cursor_char_geometry_get(c, &cx, &cy, &cw, &ch); + if (!evas_textblock_cursor_char_coord_set(c, cx, ly + (lh / 2))) + { + if (cx < (lx + (lw / 2))) + evas_textblock_cursor_line_char_last(c); + else + evas_textblock_cursor_line_char_last(c); + } + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); + return EINA_TRUE; +} + +void +_edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + + _edje_entry_imf_context_reset(rp); + + evas_textblock_cursor_paragraph_first(c); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + + _edje_entry_imf_context_reset(rp); + + _curs_end(c, rp->object, rp->entry_data); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c; + Evas_Textblock_Cursor *d; + + c = _cursor_get(rp, cur); + if (!c) return; + d = _cursor_get(rp, dst); + if (!d) return; + evas_textblock_cursor_copy(c, d); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_context_reset(rp); + _edje_entry_imf_cursor_info_set(en); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + _edje_entry_imf_context_reset(rp); + + evas_textblock_cursor_line_char_first(c); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +void +_edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + _edje_entry_imf_context_reset(rp); + evas_textblock_cursor_line_char_last(c); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +Eina_Bool +_edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, + Evas_Coord x, Evas_Coord y) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + return evas_textblock_cursor_char_coord_set(c, x, y); +} + +Eina_Bool +_edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + if (evas_textblock_cursor_is_format(c)) return EINA_TRUE; + return EINA_FALSE; +} + +Eina_Bool +_edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return EINA_FALSE; + return evas_textblock_cursor_format_is_visible_get(c); +} + +char * +_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + static char *s = NULL; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + + if (!c) return NULL; + if (s) + { + free(s); + s = NULL; + } + + s = evas_textblock_cursor_content_get(c); + return s; +} + +void +_edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos) +{ + Entry *en = rp->entry_data; + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return; + /* Abort if cursor position didn't really change */ + if (evas_textblock_cursor_pos_get(c) == pos) + return; + + _edje_entry_imf_context_reset(rp); + evas_textblock_cursor_pos_set(c, pos); + _sel_update(c, rp->object, rp->entry_data); + + _edje_entry_imf_cursor_info_set(en); + _edje_emit(rp->edje, "cursor,changed", rp->part->name); + _edje_entry_real_part_configure(rp); +} + +int +_edje_entry_cursor_pos_get(Edje_Real_Part *rp, Edje_Cursor cur) +{ + Evas_Textblock_Cursor *c = _cursor_get(rp, cur); + if (!c) return 0; + return evas_textblock_cursor_pos_get(c); +} + +void +_edje_entry_input_panel_layout_set(Edje_Real_Part *rp, Edje_Input_Panel_Layout layout) +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_input_panel_layout_set(en->imf_context, layout); +#else + (void) layout; +#endif +} + +Edje_Input_Panel_Layout +_edje_entry_input_panel_layout_get(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return EDJE_INPUT_PANEL_LAYOUT_INVALID; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + return ecore_imf_context_input_panel_layout_get(en->imf_context); +#endif + + return EDJE_INPUT_PANEL_LAYOUT_INVALID; +} + +void +_edje_entry_imf_context_reset(Edje_Real_Part *rp) +{ + Entry *en = rp->entry_data; + if (!en) return; +#ifdef HAVE_ECORE_IMF + if (en->imf_context) + ecore_imf_context_reset(en->imf_context); +#endif +} + +static void +_edje_entry_imf_cursor_info_set(Entry *en) +{ +#ifdef HAVE_ECORE_IMF + Evas_Coord cx, cy, cw, ch; + if (!en || !en->rp || !en->imf_context) return; + + _edje_entry_cursor_geometry_get(en->rp, &cx, &cy, &cw, &ch); + + ecore_imf_context_cursor_position_set(en->imf_context, + evas_textblock_cursor_pos_get(en->cursor)); + ecore_imf_context_cursor_location_set(en->imf_context, cx, cy, cw, ch); +#else + (void) en; +#endif +} + +#ifdef HAVE_ECORE_IMF +static Eina_Bool +_edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, char **text, int *cursor_pos) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + const char *str; + + if (!rp) return EINA_FALSE; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return EINA_FALSE; + + if (text) + { + str = _edje_entry_text_get(rp); + *text = str ? strdup(str) : strdup(""); + } + + if (cursor_pos) + *cursor_pos = evas_textblock_cursor_pos_get(en->cursor); + + return EINA_TRUE; +} + +static void +_edje_entry_imf_event_commit_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, void *event_info) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + char *commit_str = event_info; + int start_pos; + + if ((!rp)) return; + + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + + if (en->have_selection) + { + if (strcmp(commit_str, "")) + { + /* delete selected characters */ + _range_del_emit(ed, en->cursor, rp->object, en); + _sel_clear(en->cursor, rp->object, en); + } + } + + start_pos = evas_textblock_cursor_pos_get(en->cursor); + +#ifdef HAVE_ECORE_IMF + /* delete preedit characters */ + _preedit_del(en); + _preedit_clear(en); +#endif + + if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) && + _edje_password_show_last) + _edje_entry_hide_visible_password(en->rp); + if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) && + _edje_password_show_last && (!en->preedit_start)) + { + _text_filter_format_prepend(en, en->cursor, "+ password=off"); + _text_filter_text_prepend(en, en->cursor, commit_str); + _text_filter_format_prepend(en, en->cursor, "- password"); + + if (en->pw_timer) + { + ecore_timer_del(en->pw_timer); + en->pw_timer = NULL; + } + en->pw_timer = ecore_timer_add(TO_DOUBLE(_edje_password_show_last_timeout), + _password_timer_cb, en); + } + else + _text_filter_text_prepend(en, en->cursor, commit_str); + + + _edje_entry_imf_cursor_info_set(en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "entry,changed", rp->part->name); + + { + Edje_Entry_Change_Info *info = calloc(1, sizeof(*info)); + info->insert = EINA_TRUE; + info->change.insert.pos = start_pos; + info->change.insert.content = eina_stringshare_add(commit_str); + info->change.insert.plain_length = + eina_unicode_utf8_get_len(info->change.insert.content); + _edje_emit_full(ed, "entry,changed,user", rp->part->name, + info, _free_entry_change_info); + _edje_emit(ed, "cursor,changed", rp->part->name); + } +} + +static void +_edje_entry_imf_event_preedit_changed_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, void *event_info __UNUSED__) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + int cursor_pos; + int preedit_start_pos, preedit_end_pos; + char *preedit_string; + int i; + Eina_Bool preedit_end_state = EINA_FALSE; + Eina_List *attrs = NULL, *l = NULL; + Ecore_IMF_Preedit_Attr *attr; + Eina_Strbuf *buf; + + if ((!rp)) return; + + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + + if (!en->imf_context) return; + + ecore_imf_context_preedit_string_with_attributes_get(en->imf_context, + &preedit_string, + &attrs, &cursor_pos); + if (!preedit_string) return; + + if (!strcmp(preedit_string, "")) + preedit_end_state = EINA_TRUE; + + if (en->have_selection && !preedit_end_state) + { + /* delete selected characters */ + _range_del_emit(ed, en->cursor, rp->object, en); + } + + /* delete preedit characters */ + _preedit_del(en); + + preedit_start_pos = evas_textblock_cursor_pos_get(en->cursor); + + /* insert preedit character(s) */ + if (strlen(preedit_string) > 0) + { + buf = eina_strbuf_new(); + if (attrs) + { + EINA_LIST_FOREACH(attrs, l, attr) + { + if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB1) + { + eina_strbuf_append(buf, ""); + eina_strbuf_append_n(buf, preedit_string + attr->start_index, + attr->end_index - attr->start_index); + eina_strbuf_append(buf, ""); + } + + else if (attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB2 || + attr->preedit_type == ECORE_IMF_PREEDIT_TYPE_SUB3) + { + eina_strbuf_append(buf, ""); + eina_strbuf_append_n(buf, preedit_string + attr->start_index, + attr->end_index - attr->start_index); + eina_strbuf_append(buf, ""); + } + } + } + else + { + eina_strbuf_append(buf, preedit_string); + } + if ((rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD) && + _edje_password_show_last) + { + _edje_entry_hide_visible_password(en->rp); + _text_filter_format_prepend(en, en->cursor, "+ password=off"); + _text_filter_markup_prepend(en, en->cursor, eina_strbuf_string_get(buf)); + _text_filter_format_prepend(en, en->cursor, "- password"); + if (en->pw_timer) + { + ecore_timer_del(en->pw_timer); + en->pw_timer = NULL; + } + en->pw_timer = ecore_timer_add(TO_DOUBLE(_edje_password_show_last_timeout), + _password_timer_cb, en); + } + else + { + _text_filter_markup_prepend(en, en->cursor, eina_strbuf_string_get(buf)); + } + eina_strbuf_free(buf); + } + + if (!preedit_end_state) + { + /* set preedit start cursor */ + if (!en->preedit_start) + en->preedit_start = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, en->preedit_start); + + /* set preedit end cursor */ + if (!en->preedit_end) + en->preedit_end = evas_object_textblock_cursor_new(rp->object); + evas_textblock_cursor_copy(en->cursor, en->preedit_end); + + preedit_end_pos = evas_textblock_cursor_pos_get(en->cursor); + + for (i = 0; i < (preedit_end_pos - preedit_start_pos); i++) + { + evas_textblock_cursor_char_prev(en->preedit_start); + } + + en->have_preedit = EINA_TRUE; + + /* set cursor position */ + evas_textblock_cursor_pos_set(en->cursor, preedit_start_pos + cursor_pos); + } + + _edje_entry_imf_cursor_info_set(en); + _anchors_get(en->cursor, rp->object, en); + _edje_emit(rp->edje, "preedit,changed", rp->part->name); + _edje_emit(ed, "cursor,changed", rp->part->name); + + /* delete attribute list */ + if (attrs) + { + EINA_LIST_FREE(attrs, attr) free(attr); + } + + free(preedit_string); +} + +static void +_edje_entry_imf_event_delete_surrounding_cb(void *data, Ecore_IMF_Context *ctx __UNUSED__, void *event_info) +{ + Edje *ed = data; + Edje_Real_Part *rp = ed->focused_part; + Entry *en; + Ecore_IMF_Event_Delete_Surrounding *ev = event_info; + Evas_Textblock_Cursor *del_start, *del_end; + int cursor_pos; + + if ((!rp) || (!ev)) return; + en = rp->entry_data; + if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) || + (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE)) + return; + + cursor_pos = evas_textblock_cursor_pos_get(en->cursor); + + del_start = evas_object_textblock_cursor_new(en->rp->object); + evas_textblock_cursor_pos_set(del_start, cursor_pos + ev->offset); + + del_end = evas_object_textblock_cursor_new(en->rp->object); + evas_textblock_cursor_pos_set(del_end, cursor_pos + ev->offset + ev->n_chars); + + evas_textblock_cursor_range_delete(del_start, del_end); + + evas_textblock_cursor_free(del_start); + evas_textblock_cursor_free(del_end); +} +#endif + +/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/edje_external.c b/src/lib/edje_external.c new file mode 100644 index 0000000..8bf6256 --- /dev/null +++ b/src/lib/edje_external.c @@ -0,0 +1,559 @@ +#include "edje_private.h" + +static Eina_Hash *type_registry = NULL; +static int init_count = 0; + +EAPI const char * +edje_external_param_type_str(Edje_External_Param_Type type) +{ + switch (type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + return "INT"; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + return "DOUBLE"; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + return "STRING"; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + return "BOOL"; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + return "CHOICE"; + default: + return "(unknown)"; + } +} + +EAPI Evas_Object * +edje_object_part_external_object_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return NULL; + } + if (rp->part->type != EDJE_PART_TYPE_EXTERNAL) + { + ERR("cannot get external object of a part '%s' that is not EXTERNAL", + rp->part->name); + return NULL; + } + return rp->swallowed_object; +} + +EAPI Eina_Bool +edje_object_part_external_param_set(Evas_Object *obj, const char *part, const Edje_External_Param *param) +{ + Edje *ed; + Edje_Real_Part *rp; + + if ((!param) || (!param->name)) return EINA_FALSE; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return EINA_FALSE; + } + + return _edje_external_param_set(obj, rp, param); +} + +EAPI Eina_Bool +edje_object_part_external_param_get(const Evas_Object *obj, const char *part, Edje_External_Param *param) +{ + Edje *ed; + Edje_Real_Part *rp; + + if ((!param) || (!param->name)) return EINA_FALSE; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return EINA_FALSE; + } + + return _edje_external_param_get(obj, rp, param); +} + + + +EAPI Evas_Object * +edje_object_part_external_content_get(const Evas_Object *obj, const char *part, const char *content) +{ + Edje *ed; + Edje_Real_Part *rp; + + if (!content) return EINA_FALSE; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return EINA_FALSE; + } + + return _edje_external_content_get(rp->swallowed_object, content); +} + +EAPI Edje_External_Param_Type +edje_object_part_external_param_type_get(const Evas_Object *obj, const char *part, const char *param) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_External_Type *type; + Edje_External_Param_Info *info; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_EXTERNAL_PARAM_TYPE_MAX; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) + { + ERR("no part '%s'", part); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + type = evas_object_data_get(rp->swallowed_object, "Edje_External_Type"); + if (!type) + { + ERR("no external type for object %p", obj); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + if (!type->parameters_info) + { + ERR("no parameters information for external type '%s'", + type->module_name); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; + } + for (info = type->parameters_info; info->name; info++) + if (strcmp(info->name, param) == 0) + return info->type; + + ERR("no parameter '%s' external type '%s'", param, type->module_name); + return EDJE_EXTERNAL_PARAM_TYPE_MAX; +} + + +EAPI Eina_Bool +edje_external_type_register(const char *type_name, const Edje_External_Type *type_info) +{ + if (!type_name) + return EINA_FALSE; + if (!type_info) + return EINA_FALSE; + + if (type_info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION) + { + ERR("external type '%s' (%p) has incorrect abi version. " + "got %#x where %#x was expected.", + type_name, type_info, + type_info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION); + return EINA_FALSE; + } + + if (eina_hash_find(type_registry, type_name)) + { + ERR("External type '%s' already registered", type_name); + return EINA_FALSE; + } + return eina_hash_add(type_registry, type_name, type_info); +} + +EAPI Eina_Bool +edje_external_type_unregister(const char *type_name) +{ + if (!type_name) + return EINA_FALSE; + return eina_hash_del_by_key(type_registry, type_name); +} + +EAPI void +edje_external_type_array_register(const Edje_External_Type_Info *array) +{ + const Edje_External_Type_Info *itr; + + if (!array) + return; + + for (itr = array; itr->name; itr++) + { + if (itr->info->abi_version != EDJE_EXTERNAL_TYPE_ABI_VERSION) + { + ERR("external type '%s' (%p) has incorrect abi " + "version. got %#x where %#x was expected.", + itr->name, itr->info, + itr->info->abi_version, EDJE_EXTERNAL_TYPE_ABI_VERSION); + continue; + } + + eina_hash_direct_add(type_registry, itr->name, itr->info); + } +} + +EAPI void +edje_external_type_array_unregister(const Edje_External_Type_Info *array) +{ + const Edje_External_Type_Info *itr; + + if (!array) + return; + + for (itr = array; itr->name; itr++) + eina_hash_del(type_registry, itr->name, itr->info); +} + +EAPI unsigned int +edje_external_type_abi_version_get(void) +{ + return EDJE_EXTERNAL_TYPE_ABI_VERSION; +} + +EAPI Eina_Iterator * +edje_external_iterator_get(void) +{ + return eina_hash_iterator_tuple_new(type_registry); +} + +EAPI Edje_External_Param * +edje_external_param_find(const Eina_List *params, const char *key) +{ + const Eina_List *l; + Edje_External_Param *param; + + EINA_LIST_FOREACH(params, l, param) + if (!strcmp(param->name, key)) return param; + + return NULL; +} + +EAPI Eina_Bool +edje_external_param_int_get(const Eina_List *params, const char *key, int *ret) +{ + Edje_External_Param *param; + + if (!params) return EINA_FALSE; + param = edje_external_param_find(params, key); + + if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_INT && ret) + { + *ret = param->i; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_external_param_double_get(const Eina_List *params, const char *key, double *ret) +{ + Edje_External_Param *param; + + if (!params) return EINA_FALSE; + param = edje_external_param_find(params, key); + + if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_DOUBLE && ret) + { + *ret = param->d; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_external_param_string_get(const Eina_List *params, const char *key, const char **ret) +{ + Edje_External_Param *param; + + if (!params) return EINA_FALSE; + param = edje_external_param_find(params, key); + + if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING && ret) + { + *ret = param->s; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_external_param_bool_get(const Eina_List *params, const char *key, Eina_Bool *ret) +{ + Edje_External_Param *param; + + if (!params) return EINA_FALSE; + param = edje_external_param_find(params, key); + + if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL && ret) + { + *ret = param->i; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_external_param_choice_get(const Eina_List *params, const char *key, const char **ret) +{ + Edje_External_Param *param; + + if (!params) return EINA_FALSE; + param = edje_external_param_find(params, key); + + if (param && param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE && ret) + { + *ret = param->s; + return EINA_TRUE; + } + + return EINA_FALSE; +} + +EAPI const Edje_External_Param_Info * +edje_external_param_info_get(const char *type_name) +{ + Edje_External_Type *type; + + type = eina_hash_find(type_registry, type_name); + if (!type) + return NULL; + return type->parameters_info; +} + +EAPI const Edje_External_Type * +edje_external_type_get(const char *type_name) +{ + return eina_hash_find(type_registry, type_name); +} + +void +_edje_external_init() +{ + if (!type_registry) + type_registry = eina_hash_string_superfast_new(NULL); + + init_count++; +} + +void +_edje_external_shutdown() +{ + if (--init_count == 0) + { + eina_hash_free(type_registry); + type_registry = NULL; + } +} + +Evas_Object * +_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name) +{ + Edje_External_Type *type; + Evas_Object *obj; + + type = eina_hash_find(type_registry, type_name); + if (!type) + { + ERR("external type '%s' not registered", type_name); + return NULL; + } + + obj = type->add(type->data, evas, parent, params, part_name); + if (!obj) + { + ERR("External type '%s' returned NULL from constructor", type_name); + return NULL; + } + + evas_object_data_set(obj, "Edje_External_Type", type); + + return obj; +} + +void +_edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + Edje_External_Type *type; + + type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) + { + ERR("External type data not found."); + return; + } + + type->signal_emit(type->data, obj, emission, source); +} + +Eina_Bool +_edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) +{ + Evas_Object *swallowed_object = rp->swallowed_object; + Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type"); + if (!type) + { + if ((rp->part->type == EDJE_PART_TYPE_TEXT) || + (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + if ((param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) && + (!strcmp (param->name, "text")) && (obj)) + { + return edje_object_part_text_set(obj, rp->part->name, param->s); + } + } + + ERR("no external type for object %p", swallowed_object); + return EINA_FALSE; + } + if (!type->param_set) + { + ERR("external type '%s' from module '%s' does not provide param_set()", + type->module_name, type->module); + return EINA_FALSE; + } + return type->param_set(type->data, swallowed_object, param); +} + +Eina_Bool +_edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) +{ + Evas_Object *swallowed_object = rp->swallowed_object; + Edje_External_Type *type = evas_object_data_get(swallowed_object, "Edje_External_Type"); + if (!type) + { + if ((rp->part->type == EDJE_PART_TYPE_TEXT) || + (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + const char *text; + param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + param->name = "text"; + text = edje_object_part_text_get(obj, rp->part->name); + param->s = text; + return EINA_TRUE; + } + + ERR("no external type for object %p", swallowed_object); + return EINA_FALSE; + } + if (!type->param_get) + { + ERR("external type '%s' from module '%s' does not provide param_get()", + type->module_name, type->module); + return EINA_FALSE; + } + return type->param_get(type->data, swallowed_object, param); +} + +Evas_Object* +_edje_external_content_get(const Evas_Object *obj, const char *content) +{ + Edje_External_Type *type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) + { + ERR("no external type for object %p", obj); + return EINA_FALSE; + } + if (!type->content_get) + { + ERR("external type '%s' from module '%s' does not provide content_get()", + type->module_name, type->module); + return EINA_FALSE; + } + return type->content_get(type->data, obj, content); +} + +void +_edje_external_params_free(Eina_List *external_params, Eina_Bool free_strings) +{ + Edje_External_Param *param; + + EINA_LIST_FREE(external_params, param) + { + if (free_strings) + { + if (param->name) eina_stringshare_del(param->name); + if (param->s) eina_stringshare_del(param->s); + } + free(param); + } +} + +void +_edje_external_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, + Edje_Calc_Params *params __UNUSED__, + Edje_Part_Description_Common *chosen_desc __UNUSED__) +{ + Edje_External_Type *type; + Edje_Part_Description_External *ext; + void *params1, *params2 = NULL; + + if (!ep->swallowed_object) return; + type = evas_object_data_get(ep->swallowed_object, "Edje_External_Type"); + + if ((!type) || (!type->state_set)) return; + + ext = (Edje_Part_Description_External*) ep->param1.description; + + params1 = ep->param1.external_params ? + ep->param1.external_params : ext->external_params; + + if (ep->param2 && ep->param2->description) + { + ext = (Edje_Part_Description_External*) ep->param2->description; + + params2 = ep->param2->external_params ? + ep->param2->external_params : ext->external_params; + } + + type->state_set(type->data, ep->swallowed_object, + params1, params2, ep->description_pos); +} + +void * +_edje_external_params_parse(Evas_Object *obj, const Eina_List *params) +{ + Edje_External_Type *type; + + type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) return NULL; + + if (!type->params_parse) return NULL; + + return type->params_parse(type->data, obj, params); +} + +void +_edje_external_parsed_params_free(Evas_Object *obj, void *params) +{ + Edje_External_Type *type; + + if (!params) return; + + type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) return; + + if (!type->params_free) return; + + type->params_free(params); +} diff --git a/src/lib/edje_load.c b/src/lib/edje_load.c new file mode 100644 index 0000000..d3f9fd2 --- /dev/null +++ b/src/lib/edje_load.c @@ -0,0 +1,1746 @@ +#include "edje_private.h" + +typedef struct _Edje_Table_Items Edje_Table_Items; +struct _Edje_Table_Items +{ + Evas_Object *child; + const char *part; + unsigned short col; + unsigned short row; + unsigned short colspan; + unsigned short rowspan; +}; + +typedef struct _Edje_Drag_Items Edje_Drag_Items; +struct _Edje_Drag_Items +{ + const char *part; + FLOAT_T x, y, w, h; + struct { + FLOAT_T x, y; + } step; + struct { + FLOAT_T x, y; + } page; +}; + +#ifdef EDJE_PROGRAM_CACHE +static Eina_Bool _edje_collection_free_prog_cache_matches_free_cb(const Eina_Hash *hash, const void *key, void *data, void *fdata); +#endif +static void _edje_object_pack_item_hints_set(Evas_Object *obj, Edje_Pack_Element *it); +static void _cb_signal_repeat(void *data, Evas_Object *obj, const char *signal, const char *source); + +static Eina_List *_edje_object_collect(Edje *ed); + +static int _sort_defined_boxes(const void *a, const void *b); + +/************************** API Routines **************************/ + +EAPI Eina_Bool +edje_object_file_set(Evas_Object *obj, const char *file, const char *group) +{ + Eina_Bool ret; + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) + return EINA_FALSE; + ret = ed->api->file_set(obj, file, group); + _edje_object_orientation_inform(obj); + return ret; +} + +EAPI void +edje_object_file_get(const Evas_Object *obj, const char **file, const char **group) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) + { + if (file) *file = NULL; + if (group) *group = NULL; + return; + } + if (file) *file = ed->path; + if (group) *group = ed->group; +} + +EAPI Edje_Load_Error +edje_object_load_error_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EDJE_LOAD_ERROR_NONE; + return ed->load_error; +} + +EAPI const char * +edje_load_error_str(Edje_Load_Error error) +{ + switch (error) + { + case EDJE_LOAD_ERROR_NONE: + return "No Error"; + case EDJE_LOAD_ERROR_GENERIC: + return "Generic Error"; + case EDJE_LOAD_ERROR_DOES_NOT_EXIST: + return "File Does Not Exist"; + case EDJE_LOAD_ERROR_PERMISSION_DENIED: + return "Permission Denied"; + case EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: + return "Resource Allocation Failed"; + case EDJE_LOAD_ERROR_CORRUPT_FILE: + return "Corrupt File"; + case EDJE_LOAD_ERROR_UNKNOWN_FORMAT: + return "Unknown Format"; + case EDJE_LOAD_ERROR_INCOMPATIBLE_FILE: + return "Incompatible File"; + case EDJE_LOAD_ERROR_UNKNOWN_COLLECTION: + return "Unknown Collection"; + case EDJE_LOAD_ERROR_RECURSIVE_REFERENCE: + return "Recursive Reference"; + default: + return "Unknown Error"; + } +} + + +EAPI Eina_List * +edje_file_collection_list(const char *file) +{ + Eina_List *lst = NULL; + Edje_File *edf; + int error_ret = 0; + + if ((!file) || (!*file)) return NULL; + edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL, NULL); + if (edf) + { + Eina_Iterator *i; + const char *key; + + i = eina_hash_iterator_key_new(edf->collection); + + EINA_ITERATOR_FOREACH(i, key) + lst = eina_list_append(lst, eina_stringshare_add(key)); + + eina_iterator_free(i); + + _edje_cache_file_unref(edf); + } + return lst; +} + +EAPI void +edje_file_collection_list_free(Eina_List *lst) +{ + while (lst) + { + if (eina_list_data_get(lst)) eina_stringshare_del(eina_list_data_get(lst)); + lst = eina_list_remove(lst, eina_list_data_get(lst)); + } +} + +EAPI Eina_Bool +edje_file_group_exists(const char *file, const char *glob) +{ + Edje_File *edf; + int error_ret = 0; + Eina_Bool succeed = EINA_FALSE; + Eina_Bool is_glob = EINA_FALSE; + const char *p; + + if ((!file) || (!*file) || (!glob)) + return EINA_FALSE; + + edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL, NULL); + if (!edf) + return EINA_FALSE; + + for (p = glob; *p; p++) + { + if ((*p == '*') || (*p == '?') || (*p == '[')) + { + is_glob = EINA_TRUE; + break; + } + } + + if (is_glob) + { + if (!edf->collection_patterns) + { + Edje_Part_Collection_Directory_Entry *ce; + Eina_Iterator *i; + Eina_List *l = NULL; + + i = eina_hash_iterator_data_new(edf->collection); + + EINA_ITERATOR_FOREACH(i, ce) + l = eina_list_append(l, ce); + + eina_iterator_free(i); + + edf->collection_patterns = edje_match_collection_dir_init(l); + eina_list_free(l); + } + + succeed = edje_match_collection_dir_exec(edf->collection_patterns, glob); + if (edf->collection_patterns) + { + edje_match_patterns_free(edf->collection_patterns); + edf->collection_patterns = NULL; + } + } + else + { + if (eina_hash_find(edf->collection, glob)) succeed = EINA_TRUE; + } + _edje_cache_file_unref(edf); + + INF("edje_file_group_exists: '%s', '%s': %i\n", file, glob, succeed); + + return succeed; +} + + +EAPI char * +edje_file_data_get(const char *file, const char *key) +{ + Edje_File *edf; + char *str = NULL; + int error_ret = 0; + + if (key) + { + edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL, NULL); + if (edf) + { + str = (char*) edje_string_get(eina_hash_find(edf->data, key)); + + if (str) str = strdup(str); + + _edje_cache_file_unref(edf); + } + } + return str; +} + +void +_edje_programs_patterns_clean(Edje *ed) +{ + _edje_signals_sources_patterns_clean(&ed->patterns.programs); + + eina_rbtree_delete(ed->patterns.programs.exact_match, + EINA_RBTREE_FREE_CB(edje_match_signal_source_free), + NULL); + ed->patterns.programs.exact_match = NULL; + + free(ed->patterns.programs.u.programs.globing); + ed->patterns.programs.u.programs.globing = NULL; +} + +void +_edje_programs_patterns_init(Edje *ed) +{ + Edje_Signals_Sources_Patterns *ssp = &ed->patterns.programs; + Edje_Program **all; + unsigned int i, j; + + if (ssp->signals_patterns) + return; + + if (getenv("EDJE_DUMP_PROGRAMS")) + { + INF("Group '%s' programs:", ed->group); +#define EDJE_DUMP_PROGRAM(Section) \ + for (i = 0; i < ed->collection->programs.Section##_count; i++) \ + INF(#Section" for ('%s', '%s')", ed->collection->programs.Section[i]->signal, ed->collection->programs.Section[i]->source); + + EDJE_DUMP_PROGRAM(strcmp); + EDJE_DUMP_PROGRAM(strncmp); + EDJE_DUMP_PROGRAM(strrncmp); + EDJE_DUMP_PROGRAM(fnmatch); + EDJE_DUMP_PROGRAM(nocmp); + } + + edje_match_program_hash_build(ed->collection->programs.strcmp, + ed->collection->programs.strcmp_count, + &ssp->exact_match); + + j = ed->collection->programs.strncmp_count + + ed->collection->programs.strrncmp_count + + ed->collection->programs.fnmatch_count + + ed->collection->programs.nocmp_count; + if (j == 0) return ; + + all = malloc(sizeof (Edje_Program *) * j); + if (!all) return ; + j = 0; + + /* FIXME: Build specialized data type for each case */ +#define EDJE_LOAD_PROGRAMS_ADD(Array, Ed, It, Git, All) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It, ++Git) \ + All[Git] = Ed->collection->programs.Array[It]; + + EDJE_LOAD_PROGRAMS_ADD(fnmatch, ed, i, j, all); + EDJE_LOAD_PROGRAMS_ADD(strncmp, ed, i, j, all); + EDJE_LOAD_PROGRAMS_ADD(strrncmp, ed, i, j, all); + /* FIXME: Do a special pass for that one */ + EDJE_LOAD_PROGRAMS_ADD(nocmp, ed, i, j, all); + + ssp->u.programs.globing = all; + ssp->u.programs.count = j; + ssp->signals_patterns = edje_match_programs_signal_init(all, j); + ssp->sources_patterns = edje_match_programs_source_init(all, j); +} + +int +_edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, const char *parent, Eina_List *group_path) +{ + Edje *ed; + Evas *tev; + Edje_Real_Part *rp; + Eina_List *textblocks = NULL; + Eina_List *sources = NULL; + Eina_List *externals = NULL; + Eina_List *collect = NULL; + unsigned int n; + Eina_List *parts = NULL; + int group_path_started = 0; + + ed = _edje_fetch(obj); + if (!ed) return 0; + if (!file) file = ""; + if (!group) group = ""; + if (((ed->path) && (!strcmp(file, ed->path))) && + (ed->group) && (!strcmp(group, ed->group)) && + ed->file) + { + struct stat st; + + if (stat(file, &st) != 0) + return 1; + if (st.st_mtime == ed->file->mtime) + return 1; + } + + tev = evas_object_evas_get(obj); + evas_event_freeze(tev); + + collect = _edje_object_collect(ed); + + if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); + if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed); + + _edje_file_del(ed); + + eina_stringshare_replace(&ed->path, file); + eina_stringshare_replace(&ed->group, group); + + ed->parent = eina_stringshare_add(parent); + + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_file_add(ed); + ed->block_break = 0; + + if (ed->file && ed->file->external_dir) + { + unsigned int i; + + for (i = 0; i < ed->file->external_dir->entries_count; ++i) + edje_module_load(ed->file->external_dir->entries[i].entry); + } + + _edje_textblock_styles_add(ed); + _edje_textblock_style_all_update(ed); + + ed->has_entries = EINA_FALSE; + + if (ed->collection) + { + if (ed->collection->prop.orientation != EDJE_ORIENTATION_AUTO) + ed->is_rtl = (ed->collection->prop.orientation == + EDJE_ORIENTATION_RTL); + + ed->groups = eina_list_append(ed->groups, ed); + + if (ed->collection->script_only) + { + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_script_only_init(ed); + } + else if (ed->collection->lua_script_only) + { + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_lua_script_only_init(ed); + } + else + { + unsigned int i; + + /* colorclass stuff */ + for (i = 0; i < ed->collection->parts_count; ++i) + { + Edje_Part *ep; + unsigned int k; + + ep = ed->collection->parts[i]; + + /* Register any color classes in this parts descriptions. */ + if ((ep->default_desc) && (ep->default_desc->color_class)) + _edje_color_class_member_add(ed, ep->default_desc->color_class); + + for (k = 0; k < ep->other.desc_count; k++) + { + Edje_Part_Description_Common *desc; + + desc = ep->other.desc[k]; + + if (desc->color_class) + _edje_color_class_member_add(ed, desc->color_class); + } + } + /* build real parts */ + for (n = 0; n < ed->collection->parts_count; n++) + { + Edje_Part *ep; + + ep = ed->collection->parts[n]; + rp = eina_mempool_malloc(_edje_real_part_mp, sizeof(Edje_Real_Part)); + if (!rp) + { + /* FIXME: destroy all allocated ressource, need to have a common exit point */ + ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 0; + } + + memset(rp, 0, sizeof (Edje_Real_Part)); + + if ((ep->dragable.x != 0) || (ep->dragable.y != 0)) + { + rp->drag = calloc(1, sizeof (Edje_Real_Part_Drag)); + if (!rp->drag) + { + ed->load_error = EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + eina_mempool_free(_edje_real_part_mp, rp); + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 0; + } + + rp->drag->step.x = FROM_INT(ep->dragable.step_x); + rp->drag->step.y = FROM_INT(ep->dragable.step_y); + } + + rp->edje = ed; + _edje_ref(rp->edje); + rp->part = ep; + parts = eina_list_append(parts, rp); + rp->param1.description = + _edje_part_description_find(ed, rp, "default", 0.0); + rp->chosen_description = rp->param1.description; + if (!rp->param1.description) + ERR("no default part description for '%s'!", + rp->part->name); + + switch (ep->type) + { + case EDJE_PART_TYPE_RECTANGLE: + rp->object = evas_object_rectangle_add(ed->base.evas); + break; + case EDJE_PART_TYPE_PROXY: + case EDJE_PART_TYPE_IMAGE: + rp->object = evas_object_image_add(ed->base.evas); + break; + case EDJE_PART_TYPE_TEXT: + _edje_text_part_on_add(ed, rp); + rp->object = evas_object_text_add(ed->base.evas); + evas_object_text_font_source_set(rp->object, ed->path); + break; + case EDJE_PART_TYPE_GROUP: + sources = eina_list_append(sources, rp); + case EDJE_PART_TYPE_SWALLOW: + case EDJE_PART_TYPE_EXTERNAL: + if (ep->type == EDJE_PART_TYPE_EXTERNAL) + externals = eina_list_append(externals, rp); + rp->object = evas_object_rectangle_add(ed->base.evas); + evas_object_color_set(rp->object, 0, 0, 0, 0); + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + _edje_callbacks_focus_add(rp->object, ed, rp); + break; + case EDJE_PART_TYPE_TEXTBLOCK: + textblocks = eina_list_append(textblocks, rp); + rp->object = evas_object_textblock_add(ed->base.evas); + break; + case EDJE_PART_TYPE_BOX: + sources = eina_list_append(sources, rp); + rp->object = evas_object_box_add(ed->base.evas); + rp->anim = _edje_box_layout_anim_new(rp->object); + break; + case EDJE_PART_TYPE_TABLE: + sources = eina_list_append(sources, rp); + rp->object = evas_object_table_add(ed->base.evas); + break; + case EDJE_PART_TYPE_GRADIENT: + ERR("SPANK ! SPANK ! SPANK ! YOU ARE USING GRADIENT IN PART %s FROM GROUP %s INSIDE FILE %s !! THEY ARE NOW REMOVED !", + ep->name, group, file); + break; + case EDJE_PART_TYPE_SPACER: + rp->object = NULL; + break; + default: + ERR("wrong part type %i!", ep->type); + break; + } + + if (rp->object) + { + evas_object_smart_member_add(rp->object, ed->obj); +// evas_object_layer_set(rp->object, evas_object_layer_get(ed->obj)); + if (ep->type != EDJE_PART_TYPE_SWALLOW && ep->type != EDJE_PART_TYPE_GROUP && ep->type != EDJE_PART_TYPE_EXTERNAL) + { + if (ep->mouse_events) + { + _edje_callbacks_add(rp->object, ed, rp); + if (ep->repeat_events) + evas_object_repeat_events_set(rp->object, 1); + + if (ep->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) + evas_object_pointer_mode_set(rp->object, ep->pointer_mode); + } + else + { + evas_object_pass_events_set(rp->object, 1); + evas_object_pointer_mode_set(rp->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + } + if (ep->precise_is_inside) + evas_object_precise_is_inside_set(rp->object, 1); + } + if (rp->part->clip_to_id < 0) + evas_object_clip_set(rp->object, ed->base.clipper); + } + } + if (n > 0) + { + Eina_List *l; + + ed->table_parts = malloc(sizeof(Edje_Real_Part *) * n); + ed->table_parts_size = n; + /* FIXME: check malloc return */ + n = 0; + EINA_LIST_FOREACH(parts, l, rp) + { + ed->table_parts[n] = rp; + n++; + } + eina_list_free(parts); + for (i = 0; i < ed->table_parts_size; i++) + { + rp = ed->table_parts[i]; + if (rp->param1.description) /* FIXME: prevent rel to gone radient part to go wrong. You may + be able to remove this when all theme are correctly rewritten. */ + { + if (rp->param1.description->rel1.id_x >= 0) + rp->param1.rel1_to_x = ed->table_parts[rp->param1.description->rel1.id_x % ed->table_parts_size]; + if (rp->param1.description->rel1.id_y >= 0) + rp->param1.rel1_to_y = ed->table_parts[rp->param1.description->rel1.id_y % ed->table_parts_size]; + if (rp->param1.description->rel2.id_x >= 0) + rp->param1.rel2_to_x = ed->table_parts[rp->param1.description->rel2.id_x % ed->table_parts_size]; + if (rp->param1.description->rel2.id_y >= 0) + rp->param1.rel2_to_y = ed->table_parts[rp->param1.description->rel2.id_y % ed->table_parts_size]; + } + if (rp->part->clip_to_id >= 0) + { + rp->clip_to = ed->table_parts[rp->part->clip_to_id % ed->table_parts_size]; + if (rp->clip_to && + rp->clip_to->object && + rp->object) + { + evas_object_pass_events_set(rp->clip_to->object, 1); + evas_object_pointer_mode_set(rp->clip_to->object, EVAS_OBJECT_POINTER_MODE_NOGRAB); + evas_object_clip_set(rp->object, rp->clip_to->object); + } + } + if (rp->drag) + { + if (rp->part->dragable.confine_id >= 0) + rp->drag->confine_to = ed->table_parts[rp->part->dragable.confine_id % ed->table_parts_size]; + } + + /* replay events for dragable */ + if (rp->part->dragable.event_id >= 0) + { + rp->events_to = + ed->table_parts[rp->part->dragable.event_id % ed->table_parts_size]; + /* events_to may be used only with dragable */ + if (!rp->events_to->part->dragable.x && + !rp->events_to->part->dragable.y) + rp->events_to = NULL; + } + + rp->swallow_params.min.w = 0; + rp->swallow_params.min.h = 0; + rp->swallow_params.max.w = -1; + rp->swallow_params.max.h = -1; + + if (rp->part->type == EDJE_PART_TYPE_TEXT + || rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text *) rp->param1.description; + + if (ed->file->feature_ver < 1) + { + text->text.id_source = -1; + text->text.id_text_source = -1; + } + + if (text->text.id_source >= 0) + rp->text.source = ed->table_parts[text->text.id_source % ed->table_parts_size]; + if (text->text.id_text_source >= 0) + rp->text.text_source = ed->table_parts[text->text.id_text_source % ed->table_parts_size]; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_real_part_init(rp); + if (!ed->has_entries) + ed->has_entries = EINA_TRUE; + } + } + } + } + + _edje_programs_patterns_init(ed); + + n = ed->collection->programs.fnmatch_count + + ed->collection->programs.strcmp_count + + ed->collection->programs.strncmp_count + + ed->collection->programs.strrncmp_count + + ed->collection->programs.nocmp_count; + if (n > 0) + { + Edje_Program *pr; + + ed->table_programs = malloc(sizeof(Edje_Program *) * n); + if (ed->table_programs) + { + ed->table_programs_size = n; + +#define EDJE_LOAD_BUILD_TABLE(Array, Ed, It, Tmp) \ + for (It = 0; It < Ed->collection->programs.Array##_count; ++It) \ + { \ + Tmp = Ed->collection->programs.Array[It]; \ + Ed->table_programs[Tmp->id] = Tmp; \ + } + + EDJE_LOAD_BUILD_TABLE(fnmatch, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strcmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strncmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(strrncmp, ed, i, pr); + EDJE_LOAD_BUILD_TABLE(nocmp, ed, i, pr); + } + } + _edje_ref(ed); + _edje_block(ed); + _edje_freeze(ed); +// if (ed->collection->script) _edje_embryo_script_init(ed); + _edje_var_init(ed); + for (i = 0; i < ed->table_parts_size; i++) + { + rp = ed->table_parts[i]; + evas_object_show(rp->object); + if (_edje_block_break(ed)) break; + if (rp->drag) + { + if (rp->part->dragable.x < 0) rp->drag->val.x = FROM_DOUBLE(1.0); + if (rp->part->dragable.y < 0) rp->drag->val.x = FROM_DOUBLE(1.0); + _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); + } + } + ed->recalc_call = 1; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + if ((evas_object_clipees_get(ed->base.clipper)) && + (evas_object_visible_get(obj))) + evas_object_show(ed->base.clipper); + + /* instantiate 'internal swallows' */ + EINA_LIST_FREE(externals, rp) + { + Edje_Part_Description_External *external; + Evas_Object *child_obj; + + external = (Edje_Part_Description_External *) rp->part->default_desc; + child_obj = _edje_external_type_add(rp->part->source, + evas_object_evas_get(ed->obj), ed->obj, + external->external_params, rp->part->name); + if (child_obj) + { + _edje_real_part_swallow(rp, child_obj, EINA_TRUE); + rp->param1.external_params = _edje_external_params_parse(child_obj, + external->external_params); + _edje_external_recalc_apply(ed, rp, NULL, rp->chosen_description); + } + } + + EINA_LIST_FREE(sources, rp) + { + /* XXX: curr_item and pack_it don't require to be NULL since + * XXX: they are just used when source != NULL and type == BOX, + * XXX: and they're always set in this case, but GCC fails to + * XXX: notice that, so let's shut it up + */ + Edje_Pack_Element **curr_item = NULL; + unsigned int item_count = 0; + Edje_Pack_Element *pack_it = NULL; + const char *source = NULL; + + switch (rp->part->type) + { + case EDJE_PART_TYPE_GROUP: + source = rp->part->source; + break; + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + if (rp->part->items) + { + curr_item = rp->part->items; + item_count = rp->part->items_count; + if (item_count > 0) + { + pack_it = *curr_item; + source = pack_it->source; + item_count--; + curr_item++; + } + } + break; + default: + /* This list should only be filled by group, box or table, nothing else. */ + abort(); + continue; + } + + while (source) + { + Eina_List *l; + Evas_Object *child_obj; + const char *group_path_entry = eina_stringshare_add(source); + const char *data; + + if (!group_path) + { + group_path = eina_list_append(NULL, eina_stringshare_add(group)); + group_path_started = 1; + } + /* make sure that this group isn't already in the tree of parents */ + EINA_LIST_FOREACH(group_path, l, data) + { + if (data == group_path_entry) + { + ERR("recursive loop group '%s' already included inside part '%s' of group '%s' from file '%s'", + group_path_entry, rp->part->name, group, file); + textblocks = eina_list_free(textblocks); + externals = eina_list_free(externals); + sources = eina_list_free(sources); + _edje_thaw(ed); + _edje_unblock(ed); + _edje_unref(ed); + _edje_file_del(ed); + eina_stringshare_del(group_path_entry); + if (group_path_started) + { + eina_stringshare_del(eina_list_data_get(group_path)); + eina_list_free(group_path); + } + ed->load_error = EDJE_LOAD_ERROR_RECURSIVE_REFERENCE; + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 0; + } + } + + child_obj = edje_object_add(ed->base.evas); + group_path = eina_list_append(group_path, group_path_entry); + if (rp->part->type == EDJE_PART_TYPE_GROUP) + { + _edje_real_part_swallow(rp, child_obj, EINA_FALSE); + } + + if (!_edje_object_file_set_internal(child_obj, file, source, rp->part->name, group_path)) + { + ERR("impossible to set part '%s' of group '%s' from file '%s' to '%s'", + rp->part->name, group_path_entry, file, source); + textblocks = eina_list_free(textblocks); + externals = eina_list_free(externals); + sources = eina_list_free(sources); + _edje_thaw(ed); + _edje_unblock(ed); + _edje_unref(ed); + _edje_file_del(ed); + + if (group_path_started) + { + while (group_path) + { + eina_stringshare_del(eina_list_data_get(group_path)); + group_path = eina_list_remove_list(group_path, group_path); + } + } + ed->load_error = edje_object_load_error_get(child_obj); + evas_object_del(child_obj); + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 0; + } + + group_path = eina_list_remove(group_path, group_path_entry); + eina_stringshare_del(group_path_entry); + + edje_object_propagate_callback_add(child_obj, + _cb_signal_repeat, + obj); + if (rp->part->type == EDJE_PART_TYPE_GROUP) + { + ed->groups = eina_list_append(ed->groups, _edje_fetch(child_obj)); + _edje_real_part_swallow(rp, child_obj, EINA_TRUE); + _edje_subobj_register(ed, child_obj); + source = NULL; + } + else + { + pack_it->parent = rp; + + _edje_object_pack_item_hints_set(child_obj, pack_it); + if (pack_it->name) + evas_object_name_set(child_obj, pack_it->name); + + if (rp->part->type == EDJE_PART_TYPE_BOX) + { + _edje_real_part_box_append(rp, child_obj); + evas_object_data_set(child_obj, "\377 edje.box_item", pack_it); + } + else if (rp->part->type == EDJE_PART_TYPE_TABLE) + { + _edje_real_part_table_pack(rp, child_obj, pack_it->col, pack_it->row, pack_it->colspan, pack_it->rowspan); + evas_object_data_set(child_obj, "\377 edje.table_item", pack_it); + } + _edje_subobj_register(ed, child_obj); + evas_object_show(child_obj); + rp->items = eina_list_append(rp->items, child_obj); + + if (item_count > 0) + { + pack_it = *curr_item; + source = pack_it->source; + curr_item++; + item_count--; + } + else + { + source = NULL; + curr_item = NULL; + pack_it = NULL; + } + } + } + } + + if (group_path_started) + { + const char *str; + + EINA_LIST_FREE(group_path, str) + eina_stringshare_del(str); + } + + /* reswallow any swallows that existed before setting the file */ + if (collect) + { + Edje_User_Defined *eud; + Eina_List *boxes = NULL; + + EINA_LIST_FREE(collect, eud) + { + Evas_Object *child = NULL; + + switch (eud->type) + { + case EDJE_USER_SWALLOW: + edje_object_part_swallow(obj, eud->part, eud->u.swallow.child); + child = eud->u.swallow.child; + break; + case EDJE_USER_BOX_PACK: + boxes = eina_list_append(boxes, eud); + eud = NULL; + break; + case EDJE_USER_TABLE_PACK: + edje_object_part_table_pack(obj, eud->part, eud->u.table.child, + eud->u.table.col, eud->u.table.row, + eud->u.table.colspan, eud->u.table.rowspan); + child = eud->u.table.child; + break; + case EDJE_USER_DRAG_STEP: + edje_object_part_drag_step_set(obj, eud->part, + eud->u.drag_position.x, + eud->u.drag_position.y); + break; + case EDJE_USER_DRAG_PAGE: + edje_object_part_drag_page_set(obj, eud->part, + eud->u.drag_position.x, + eud->u.drag_position.y); + break; + case EDJE_USER_DRAG_VALUE: + edje_object_part_drag_value_set(obj, eud->part, + eud->u.drag_position.x, + eud->u.drag_position.y); + break; + case EDJE_USER_DRAG_SIZE: + edje_object_part_drag_size_set(obj, eud->part, + eud->u.drag_size.w, + eud->u.drag_size.h); + break; + case EDJE_USER_STRING: + edje_object_part_text_set(obj, eud->part, eud->u.string.text); + eina_stringshare_del(eud->u.string.text); + break; + } + if (eud) _edje_user_definition_remove(eud, child); + } + + boxes = eina_list_sort(boxes, -1, _sort_defined_boxes); + EINA_LIST_FREE(boxes, eud) + { + edje_object_part_box_append(obj, eud->part, eud->u.box.child); + _edje_user_definition_remove(eud, eud->u.box.child); + } + } + + if (edje_object_mirrored_get(obj)) + edje_object_signal_emit(obj, "edje,state,rtl", "edje"); + else + edje_object_signal_emit(obj, "edje,state,ltr", "edje"); + + _edje_recalc(ed); + _edje_thaw(ed); + _edje_unblock(ed); + _edje_unref(ed); + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_emit(ed, "load", NULL); + + /* instantiate 'internal textblock style' */ + EINA_LIST_FREE(textblocks, rp) + if (rp->part->default_desc) + { + Edje_Part_Description_Text *text; + Edje_Style *stl = NULL; + const char *style; + + text = (Edje_Part_Description_Text *) rp->part->default_desc; + style = edje_string_get(&text->text.style); + if (style) + { + Eina_List *l; + + EINA_LIST_FOREACH(ed->file->styles, l, stl) + { + if ((stl->name) && (!strcmp(stl->name, style))) break; + stl = NULL; + } + } + if (stl) + { + if (evas_object_textblock_style_get(rp->object) != stl->style) + evas_object_textblock_style_set(rp->object, stl->style); + } + } + } + _edje_entry_init(ed); + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 1; + } + else + { + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 0; + } + ed->load_error = EDJE_LOAD_ERROR_NONE; + _edje_entry_init(ed); + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + return 1; +} + +void +_edje_file_add(Edje *ed) +{ + if (!_edje_edd_edje_file) return; + ed->file = _edje_cache_file_coll_open(ed->path, ed->group, + &(ed->load_error), + &(ed->collection), + ed); + + if (!ed->collection) + { + if (ed->file) + { + _edje_cache_file_unref(ed->file); + ed->file = NULL; + } + } +} + +static int +_sort_defined_boxes(const void *a, const void *b) +{ + const Edje_User_Defined *euda = a; + const Edje_User_Defined *eudb = b; + + if (euda->part - eudb->part != 0) + return euda->part - eudb->part; + return euda->u.box.index - eudb->u.box.index; +} + +static Eina_List * +_edje_object_collect(Edje *ed) +{ + Edje_User_Defined *eud; + Eina_List *collect; + Eina_List *l; + + collect = ed->user_defined; + ed->user_defined = NULL; + + EINA_LIST_FOREACH(collect, l, eud) + { + switch (eud->type) + { + case EDJE_USER_STRING: + eud->u.string.text = eina_stringshare_ref(eud->u.string.text); + break; + case EDJE_USER_BOX_PACK: + if (eud->u.box.index == -1) + { + Edje_User_Defined *search; + Edje_Real_Part *rp; + Eina_List *children; + Eina_List *ls; + Evas_Object *child; + int idx = 0; + + rp = _edje_real_part_recursive_get(ed, eud->part); + if (rp->part->type != EDJE_PART_TYPE_BOX) continue ; + + children = evas_object_box_children_get(rp->object); + EINA_LIST_FREE(children, child) + if (!evas_object_data_get(child, "\377 edje.box_item")) + { + EINA_LIST_FOREACH(l, ls, search) + { + if (search->type == EDJE_USER_BOX_PACK && + search->u.box.child == child && + search->part == eud->part /* beauty of stringshare ! */) + { + search->u.box.index = idx++; + break; + } + } + _edje_real_part_box_remove(rp, child); + } + } + break; + case EDJE_USER_TABLE_PACK: + { + Edje_Real_Part *rp; + + rp = _edje_real_part_recursive_get(ed, eud->part); + if (rp->part->type != EDJE_PART_TYPE_TABLE) continue ; + + _edje_real_part_table_unpack(rp, eud->u.table.child); + break; + } + case EDJE_USER_SWALLOW: + edje_object_part_unswallow(NULL, eud->u.swallow.child); + break; + case EDJE_USER_DRAG_STEP: + case EDJE_USER_DRAG_PAGE: + case EDJE_USER_DRAG_VALUE: + case EDJE_USER_DRAG_SIZE: + break; + } + } + + return collect; +} + +void +_edje_file_del(Edje *ed) +{ + Edje_User_Defined *eud; + Evas *tev = NULL; + + if (ed->obj) tev = evas_object_evas_get(ed->obj); + + ed->groups = eina_list_free(ed->groups); + + if (tev) evas_event_freeze(tev); + if (ed->freeze_calc) + { + _edje_freeze_calc_list = eina_list_remove(_edje_freeze_calc_list, ed); + ed->freeze_calc = 0; + _edje_freeze_calc_count--; + } + _edje_entry_shutdown(ed); + _edje_message_del(ed); + _edje_block_violate(ed); + _edje_var_shutdown(ed); + _edje_programs_patterns_clean(ed); +// if (ed->collection) +// { +// if (ed->collection->script) _edje_embryo_script_shutdown(ed); +// } + + if (!((ed->file) && (ed->collection))) + { + if (tev) + { + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + } + return; + } + + while (ed->user_defined) + { + eud = eina_list_data_get(ed->user_defined); + _edje_user_definition_free(eud); + } + + if (ed->table_parts) + { + unsigned int i; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_real_part_shutdown(rp); + if (rp->object) + { + _edje_callbacks_del(rp->object, ed); + _edje_callbacks_focus_del(rp->object, ed); + evas_object_del(rp->object); + } + if (rp->swallowed_object) + { + /* Objects swallowed by the app do not get deleted, + but those internally swallowed (GROUP type) do. */ + switch (rp->part->type) + { + case EDJE_PART_TYPE_EXTERNAL: + _edje_external_parsed_params_free(rp->swallowed_object, rp->param1.external_params); + if (rp->param2) + _edje_external_parsed_params_free(rp->swallowed_object, rp->param2->external_params); + case EDJE_PART_TYPE_GROUP: + evas_object_del(rp->swallowed_object); + default: + break; + } + _edje_real_part_swallow_clear(rp); + rp->swallowed_object = NULL; + } + if (rp->items) + { + /* evas_box/table handles deletion of objects */ + rp->items = eina_list_free(rp->items); + } + if (rp->anim) + { + _edje_box_layout_free_data(rp->anim); + rp->anim = NULL; + } + if (rp->text.text) eina_stringshare_del(rp->text.text); + if (rp->text.font) eina_stringshare_del(rp->text.font); + if (rp->text.cache.in_str) eina_stringshare_del(rp->text.cache.in_str); + if (rp->text.cache.out_str) eina_stringshare_del(rp->text.cache.out_str); + + if (rp->custom) + { + // xxx: lua2 + _edje_collection_free_part_description_clean(rp->part->type, + rp->custom->description, + ed->file->free_strings); + free(rp->custom->description); + rp->custom->description = NULL; + } + + /* Cleanup optional part. */ + free(rp->drag); + free(rp->param1.set); + + if (rp->param2) + free(rp->param2->set); + eina_mempool_free(_edje_real_part_state_mp, rp->param2); + + if (rp->custom) + free(rp->custom->set); + eina_mempool_free(_edje_real_part_state_mp, rp->custom); + + _edje_unref(rp->edje); + eina_mempool_free(_edje_real_part_mp, rp); + } + } + if ((ed->file) && (ed->collection)) + { + Edje_Part *ep; + unsigned int i; + + _edje_textblock_styles_del(ed); + for (i = 0; i < ed->collection->parts_count; ++i) + { + ep = ed->collection->parts[i]; + + _edje_text_part_on_del(ed, ep); + _edje_color_class_on_del(ed, ep); + } + + _edje_cache_coll_unref(ed->file, ed->collection); + ed->collection = NULL; + } + if (ed->file) + { +#ifdef HAVE_EIO + ed->file->edjes = eina_list_remove(ed->file->edjes, ed); +#endif + _edje_cache_file_unref(ed->file); + ed->file = NULL; + } + if (ed->actions) + { + Edje_Running_Program *runp; + + EINA_LIST_FREE(ed->actions, runp) + { + _edje_anim_count--; + free(runp); + } + } + _edje_animators = eina_list_remove(_edje_animators, ed); + if (ed->pending_actions) + { + Edje_Pending_Program *pp; + + EINA_LIST_FREE(ed->pending_actions, pp) + { + ecore_timer_del(pp->timer); + free(pp); + } + } + + if (ed->L) _edje_lua2_script_shutdown(ed); + while (ed->subobjs) _edje_subobj_unregister(ed, ed->subobjs->data); + if (ed->table_parts) free(ed->table_parts); + ed->table_parts = NULL; + ed->table_parts_size = 0; + if (ed->table_programs) free(ed->table_programs); + ed->table_programs = NULL; + ed->table_programs_size = 0; + ed->focused_part = NULL; + if (tev) + { + evas_event_thaw(tev); + evas_event_thaw_eval(tev); + } +} + +void +_edje_file_free(Edje_File *edf) +{ + Edje_Color_Class *ecc; +#ifdef HAVE_EIO + Ecore_Event_Handler *event; +#endif + +#define HASH_FREE(Hash) \ + if (Hash) eina_hash_free(Hash); \ + Hash = NULL; + + /* Clean cache before cleaning memory pool */ + if (edf->collection_cache) _edje_cache_coll_flush(edf); + + HASH_FREE(edf->fonts); + HASH_FREE(edf->collection); + HASH_FREE(edf->data); + + if (edf->image_dir) + { + unsigned int i; + + if (edf->free_strings) + { + for (i = 0; i < edf->image_dir->entries_count; ++i) + eina_stringshare_del(edf->image_dir->entries[i].entry); + } + + /* Sets have been added after edje received eet dictionnary support */ + for (i = 0; i < edf->image_dir->sets_count; ++i) + { + Edje_Image_Directory_Set_Entry *se; + + EINA_LIST_FREE(edf->image_dir->sets[i].entries, se) + free(se); + + } + + free(edf->image_dir->entries); + free(edf->image_dir->sets); + free(edf->image_dir); + } + if (edf->sound_dir) + { + unsigned int i; + + if (edf->free_strings) + { + for (i = 0; i < edf->sound_dir->samples_count; ++i) + { + eina_stringshare_del(edf->sound_dir->samples[i].name); + eina_stringshare_del(edf->sound_dir->samples[i].snd_src); + } + + for (i = 0; i < edf->sound_dir->tones_count; ++i) + eina_stringshare_del(edf->sound_dir->tones[i].name); + } + free(edf->sound_dir->samples); + free(edf->sound_dir->tones); + free(edf->sound_dir); + } + + if (edf->external_dir) + { + if (edf->external_dir->entries) free(edf->external_dir->entries); + free(edf->external_dir); + } + + eina_hash_free(edf->color_hash); + EINA_LIST_FREE(edf->color_classes, ecc) + { + if (edf->free_strings && ecc->name) eina_stringshare_del(ecc->name); + free(ecc); + } + + if (edf->collection_patterns) edje_match_patterns_free(edf->collection_patterns); +#ifdef HAVE_EIO + if (edf->timeout) ecore_timer_del(edf->timeout); + EINA_LIST_FREE(edf->handlers, event) + ecore_event_handler_del(event); + eio_monitor_del(edf->monitor); +#endif + if (edf->path) eina_stringshare_del(edf->path); + if (edf->free_strings && edf->compiler) eina_stringshare_del(edf->compiler); + _edje_textblock_style_cleanup(edf); + if (edf->ef) eet_close(edf->ef); + free(edf); +} + +static void +_edje_program_free(Edje_Program *pr, Eina_Bool free_strings) +{ + Edje_Program_Target *prt; + Edje_Program_After *pa; + + if (free_strings) + { + if (pr->name) eina_stringshare_del(pr->name); + if (pr->signal) eina_stringshare_del(pr->signal); + if (pr->source) eina_stringshare_del(pr->source); + if (pr->filter.part) eina_stringshare_del(pr->filter.part); + if (pr->filter.state) eina_stringshare_del(pr->filter.state); + if (pr->state) eina_stringshare_del(pr->state); + if (pr->state2) eina_stringshare_del(pr->state2); + if (pr->sample_name) eina_stringshare_del(pr->sample_name); + if (pr->tone_name) eina_stringshare_del(pr->tone_name); + } + EINA_LIST_FREE(pr->targets, prt) + free(prt); + EINA_LIST_FREE(pr->after, pa) + free(pa); + free(pr); +} + +void +_edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collection_Directory_Entry *ce) +{ + unsigned int i; + + _edje_embryo_script_shutdown(ec); + +#define EDJE_LOAD_PROGRAM_FREE(Array, Ec, It, FreeStrings) \ + for (It = 0; It < Ec->programs.Array##_count; ++It) \ + _edje_program_free(Ec->programs.Array[It], FreeStrings); \ + free(Ec->programs.Array); + + EDJE_LOAD_PROGRAM_FREE(fnmatch, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strcmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strncmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(strrncmp, ec, i, edf->free_strings); + EDJE_LOAD_PROGRAM_FREE(nocmp, ec, i, edf->free_strings); + + for (i = 0; i < ec->parts_count; ++i) + { + Edje_Part *ep; + unsigned int j; + + ep = ec->parts[i]; + + if (edf->free_strings && ep->name) eina_stringshare_del(ep->name); + if (ep->default_desc) + { + _edje_collection_free_part_description_clean(ep->type, ep->default_desc, edf->free_strings); + ep->default_desc = NULL; + } + for (j = 0; j < ep->other.desc_count; ++j) + _edje_collection_free_part_description_clean(ep->type, ep->other.desc[j], edf->free_strings); + + free(ep->other.desc); + /* Alloc for RTL objects in edje_calc.c:_edje_part_description_find() */ + if(ep->other.desc_rtl) + free(ep->other.desc_rtl); + + free(ep->items); +// technically need this - but we ASSUME we use "one_big" so everything gets +// freed in one go lower down when we del the mempool... but what if pool goes +// "over"? + eina_mempool_free(ce->mp.part, ep); + } + free(ec->parts); + ec->parts = NULL; + + if (ec->data) + { + Eina_Iterator *it; + Edje_String *es; + + it = eina_hash_iterator_data_new(ec->data); + EINA_ITERATOR_FOREACH(it, es) + free(es); + eina_iterator_free(it); + + eina_hash_free(ec->data); + } +#ifdef EDJE_PROGRAM_CACHE + if (ec->prog_cache.no_matches) eina_hash_free(ec->prog_cache.no_matches); + if (ec->prog_cache.matches) + { + eina_hash_foreach(ec->prog_cache.matches, + _edje_collection_free_prog_cache_matches_free_cb, + NULL); + eina_hash_free(ec->prog_cache.matches); + } +#endif + if (ec->script) embryo_program_free(ec->script); + _edje_lua2_script_unload(ec); + + eina_hash_free(ec->alias); + eina_hash_free(ec->aliased); + + /* Destroy all part and description. */ + eina_mempool_del(ce->mp.RECTANGLE); + eina_mempool_del(ce->mp.TEXT); + eina_mempool_del(ce->mp.IMAGE); + eina_mempool_del(ce->mp.PROXY); + eina_mempool_del(ce->mp.SWALLOW); + eina_mempool_del(ce->mp.TEXTBLOCK); + eina_mempool_del(ce->mp.GROUP); + eina_mempool_del(ce->mp.BOX); + eina_mempool_del(ce->mp.TABLE); + eina_mempool_del(ce->mp.EXTERNAL); + eina_mempool_del(ce->mp.SPACER); + eina_mempool_del(ce->mp.part); + memset(&ce->mp, 0, sizeof (ce->mp)); + + eina_mempool_del(ce->mp_rtl.RECTANGLE); + eina_mempool_del(ce->mp_rtl.TEXT); + eina_mempool_del(ce->mp_rtl.IMAGE); + eina_mempool_del(ce->mp_rtl.PROXY); + eina_mempool_del(ce->mp_rtl.SWALLOW); + eina_mempool_del(ce->mp_rtl.TEXTBLOCK); + eina_mempool_del(ce->mp_rtl.GROUP); + eina_mempool_del(ce->mp_rtl.BOX); + eina_mempool_del(ce->mp_rtl.TABLE); + eina_mempool_del(ce->mp_rtl.EXTERNAL); + eina_mempool_del(ce->mp_rtl.SPACER); + memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl)); + free(ec); + ce->ref = NULL; +} + +void +_edje_collection_free_part_description_clean(int type, Edje_Part_Description_Common *desc, Eina_Bool free_strings) +{ + if (free_strings && desc->color_class) eina_stringshare_del(desc->color_class); + + switch (type) + { + case EDJE_PART_TYPE_IMAGE: + { + Edje_Part_Description_Image *img; + unsigned int i; + + img = (Edje_Part_Description_Image *) desc; + + for (i = 0; i < img->image.tweens_count; ++i) + free(img->image.tweens[i]); + free(img->image.tweens); + break; + } + case EDJE_PART_TYPE_EXTERNAL: + { + Edje_Part_Description_External *external; + + external = (Edje_Part_Description_External *) desc; + + if (external->external_params) + _edje_external_params_free(external->external_params, free_strings); + break; + } + case EDJE_PART_TYPE_TEXT: + case EDJE_PART_TYPE_TEXTBLOCK: + if (free_strings) + { + Edje_Part_Description_Text *text; + + text = (Edje_Part_Description_Text *) desc; + + if (text->text.text.str) eina_stringshare_del(text->text.text.str); + if (text->text.text_class) eina_stringshare_del(text->text.text_class); + if (text->text.style.str) eina_stringshare_del(text->text.style.str); + if (text->text.font.str) eina_stringshare_del(text->text.font.str); + } + break; + } +} + +void +_edje_collection_free_part_description_free(int type, + Edje_Part_Description_Common *desc, + Edje_Part_Collection_Directory_Entry *ce, + Eina_Bool free_strings) +{ +#define FREE_POOL(Type, Ce, Desc) \ + case EDJE_PART_TYPE_##Type: eina_mempool_free(Ce->mp.Type, Desc); \ + ce->count.Type--; \ + break; + + _edje_collection_free_part_description_clean(type, desc, free_strings); + + switch (type) + { + FREE_POOL(RECTANGLE, ce, desc); + FREE_POOL(TEXT, ce, desc); + FREE_POOL(IMAGE, ce, desc); + FREE_POOL(PROXY, ce, desc); + FREE_POOL(SWALLOW, ce, desc); + FREE_POOL(TEXTBLOCK, ce, desc); + FREE_POOL(GROUP, ce, desc); + FREE_POOL(BOX, ce, desc); + FREE_POOL(TABLE, ce, desc); + FREE_POOL(EXTERNAL, ce, desc); + } +} + +#ifdef EDJE_PROGRAM_CACHE +static Eina_Bool +_edje_collection_free_prog_cache_matches_free_cb(const Eina_Hash *hash, const void *key, void *data, void *fdata) +{ + eina_list_free((Eina_List *)data); + return EINA_TRUE; + key = NULL; + hash = NULL; + fdata = NULL; +} +#endif + +static void +_edje_object_pack_item_hints_set(Evas_Object *obj, Edje_Pack_Element *it) +{ + Evas_Coord w = 0, h = 0, minw, minh; + + minw = it->min.w; + minh = it->min.h; + + if ((minw <= 0) && (minh <= 0)) + { + edje_object_size_min_get(obj, &w, &h); + if ((w <= 0) && (h <= 0)) + edje_object_size_min_calc(obj, &w, &h); + } + else + { + w = minw; + h = minh; + } + if (((minw <= 0) && (minh <= 0)) && ((w > 0) || (h > 0))) + evas_object_size_hint_min_set(obj, w, h); + else + evas_object_size_hint_min_set(obj, minw, minh); + + evas_object_size_hint_request_set(obj, it->prefer.w, it->prefer.h); + evas_object_size_hint_max_set(obj, it->max.w, it->max.h); + evas_object_size_hint_padding_set(obj, it->padding.l, it->padding.r, it->padding.t, it->padding.b); + evas_object_size_hint_align_set(obj, TO_DOUBLE(it->align.x), TO_DOUBLE(it->align.y)); + evas_object_size_hint_weight_set(obj, TO_DOUBLE(it->weight.x), TO_DOUBLE(it->weight.y)); + evas_object_size_hint_aspect_set(obj, it->aspect.mode, it->aspect.w, it->aspect.h); + + evas_object_resize(obj, w, h); +} + +static const char * +_edje_find_alias(Eina_Hash *aliased, char *src, int *length) +{ + const char *alias; + char *search; + + *length = strlen(src); + if (*length == 0) return NULL; + + alias = eina_hash_find(aliased, src); + if (alias) return alias; + + search = strrchr(src, EDJE_PART_PATH_SEPARATOR); + if (search == NULL) return NULL; + + *search = '\0'; + alias = _edje_find_alias(aliased, src, length); + *search = EDJE_PART_PATH_SEPARATOR; + + return alias; +} + +static void +_cb_signal_repeat(void *data, Evas_Object *obj, const char *sig, const char *source) +{ + Edje_Pack_Element *pack_it; + Evas_Object *parent; + Edje *ed; + Edje *ed_parent; + char new_src[4096]; /* XXX is this max reasonable? */ + size_t length_parent = 0; + size_t length_index = 0; + size_t length_source; + int i = 0; + const char *alias = NULL; + Edje_Message_Signal emsg; + + parent = data; + ed = _edje_fetch(obj); + if (!ed) return; + + pack_it = evas_object_data_get(obj, "\377 edje.box_item"); + if (!pack_it) pack_it = evas_object_data_get(obj, "\377 edje.table_item"); + if (pack_it) + { + if (!pack_it->name) + { + Eina_List *child = NULL; + Evas_Object *o; + + if (pack_it->parent->part->type == EDJE_PART_TYPE_BOX) + { + child = evas_object_box_children_get(pack_it->parent->object); + } + else if (pack_it->parent->part->type == EDJE_PART_TYPE_TABLE) + { + child = evas_object_table_children_get(pack_it->parent->object); + } + + EINA_LIST_FREE(child, o) + { + if (o == obj) break; + i++; + } + + eina_list_free(child); + + length_index = 12; + } + else + { + length_index = strlen(pack_it->name) + 2; + } + } + + /* Replace snprint("%s%c%s") == memcpy + *new_src + memcat */ + if (ed->parent) + length_parent = strlen(ed->parent); + length_source = strlen(source); + if (length_source + length_parent + 2 + length_index > sizeof(new_src)) + return; + + if (ed->parent) + memcpy(new_src, ed->parent, length_parent); + if (ed->parent && length_index) + { + new_src[length_parent++] = EDJE_PART_PATH_SEPARATOR_INDEXL; + if (length_index == 12) + length_parent += eina_convert_itoa(i, new_src + length_parent); + else + { + memcpy(new_src + length_parent, pack_it->name, length_index); + length_parent += length_index - 2; + } + new_src[length_parent++] = EDJE_PART_PATH_SEPARATOR_INDEXR; + } + + new_src[length_parent] = EDJE_PART_PATH_SEPARATOR; + memcpy(new_src + length_parent + 1, source, length_source + 1); + + /* Handle alias renaming */ + ed_parent = _edje_fetch(parent); + if (ed_parent && ed_parent->collection && ed_parent->collection->aliased) + { + int length; + + alias = _edje_find_alias(ed_parent->collection->aliased, new_src, &length); + + if (alias) + { + int origin; + + /* Add back the end of the source */ + origin = strlen(new_src); + length ++; /* Remove the trailing ':' from the count */ + if (origin > length) + { + char *tmp; + size_t alias_length; + + alias_length = strlen(alias); + tmp = alloca(alias_length + origin - length + 2); + memcpy(tmp, alias, alias_length); + tmp[alias_length] = EDJE_PART_PATH_SEPARATOR; + memcpy(tmp + alias_length + 1, new_src + length, origin - length + 1); + + alias = tmp; + } + } + } + + emsg.sig = sig; + emsg.src = alias ? alias : new_src; + emsg.data = NULL; + if (ed_parent) + _edje_message_send(ed_parent, EDJE_QUEUE_SCRIPT, + EDJE_MESSAGE_SIGNAL, 0, &emsg); +} diff --git a/src/lib/edje_lua.c b/src/lib/edje_lua.c new file mode 100644 index 0000000..d431d75 --- /dev/null +++ b/src/lib/edje_lua.c @@ -0,0 +1,5150 @@ +#include "edje_private.h" + +#if 0 +///////////////////////////////////////////////////////////////////////////// +// the below is deprecated and here for reference only until removed. look +// at edje_lua2.c for the active workign code +///////////////////////////////////////////////////////////////////////////// + +#include +#include + +#define EDJE_LUA_GET 1 +#define EDJE_LUA_SET 2 +#define EDJE_LUA_FN 3 + +typedef struct _Edje_Lua_Alloc Edje_Lua_Alloc; + +typedef struct _Edje_Lua_Ref Edje_Lua_Ref; + +typedef struct _Edje_Lua_Reg Edje_Lua_Reg; + +typedef struct _Edje_Lua_Timer Edje_Lua_Timer; + +typedef struct _Edje_Lua_Animator Edje_Lua_Animator; + +typedef struct _Edje_Lua_Poller Edje_Lua_Poller; + +typedef struct _Edje_Lua_Transform Edje_Lua_Transform; + +typedef struct _Edje_Lua_Transition Edje_Lua_Transition; + +typedef struct _Edje_Lua_Evas_Object Edje_Lua_Evas_Object; + +typedef struct _Edje_Lua_Edje_Part_Object Edje_Lua_Edje_Part_Object; + +typedef struct _Edje_Lua_Edje_Part_Description Edje_Lua_Edje_Part_Description; + +struct _Edje_Lua_Alloc +{ + size_t max, cur; /* maximal and current memory used by Lua */ +}; + +struct _Edje_Lua_Ref +{ + int id; + lua_State *L; +}; + +struct _Edje_Lua_Reg +{ + const luaL_Reg *mt, *get, *set, *fn; +}; + +struct _Edje_Lua_Timer +{ + lua_State *L; + Ecore_Timer *et; + Edje_Lua_Ref *cb; +}; + +struct _Edje_Lua_Animator +{ + lua_State *L; + Ecore_Animator *ea; + Edje_Lua_Ref *cb; +}; + +struct _Edje_Lua_Poller +{ + lua_State *L; + Ecore_Poller *ep; + Edje_Lua_Ref *cb; +}; + +struct _Edje_Lua_Transform +{ + lua_State *L; + Evas_Transform et; +}; + +struct _Edje_Lua_Transition +{ + lua_State *L; + Ecore_Timer *et; + Edje_Lua_Ref *trans; + Edje_Lua_Ref *cb; + Edje_Lua_Ref *ref; + double dur; +}; + +struct _Edje_Lua_Evas_Object +{ + lua_State *L; + Edje *ed; + Evas_Object *eo; + Eina_Bool mouse_events; + Eina_List *cb; +}; + +struct _Edje_Lua_Edje_Part_Object +{ + lua_State *L; + Edje *ed; + Evas_Object *eo; + Edje_Real_Part *rp; + const char *key; +}; + +struct _Edje_Lua_Edje_Part_Description +{ + lua_State *L; + Edje *ed; + Evas_Object *eo; + Edje_Real_Part *rp; + Edje_Part_Description *pd; +}; + +jmp_buf _edje_lua_panic_jmp; + +static int +_edje_lua_custom_panic(__UNUSED__ lua_State *L) +{ + CRITICAL("PANIC"); + longjmp(_edje_lua_panic_jmp, 1); + return 1; /* longjmp() never returns, but this keep gcc happy */ +} + +void +__edje_lua_error(const char *file, const char *fnc, int line, lua_State *L, int err_code) +{ + char *err_type; + + switch (err_code) + { + case LUA_ERRRUN: + err_type = "runtime"; + break; + case LUA_ERRSYNTAX: + err_type = "syntax"; + break; + case LUA_ERRMEM: + err_type = "memory allocation"; + break; + case LUA_ERRERR: + err_type = "error handler"; + break; + default: + err_type = "unknown"; + break; + } + eina_log_print + (_edje_default_log_dom, EINA_LOG_LEVEL_ERR, file, fnc, line, + "Lua %s error: %s", err_type, lua_tostring(L, -1)); + // don't exit. this is BAD. lua script bugs will cause thngs like e to + // exit mysteriously ending your x session. bad! + // exit(-1); +} + +lua_State * +_edje_lua_new_thread(Edje *ed, lua_State *L) +{ +#if 1 // newlua + lua_newtable(L); + ed->lua_ref = luaL_ref(L, LUA_REGISTRYINDEX); + /* inherit new environment from global environment */ + lua_createtable(L, 1, 0); + lua_pushvalue(L, LUA_GLOBALSINDEX); + lua_setfield(L, -2, "__index"); + lua_setmetatable(L, -2); + lua_setfenv(L, -2); + return L; +#else + /* create new thread */ + lua_State *thread = lua_newthread(L); + //printf ("new thread %d->%d\n", L, thread); + /* create new environment for new thread */ + lua_newtable(L); + /* inherit new environment from global environment */ + lua_createtable(L, 1, 0); + lua_pushvalue(L, LUA_GLOBALSINDEX); + lua_setfield(L, -2, "__index"); + lua_setmetatable(L, -2); + lua_setfenv(L, -2); + return thread; +#endif +} + +void +_edje_lua_free_thread(Edje *ed, lua_State *L) +{ +#if 1 // newlua + luaL_unref(L, LUA_REGISTRYINDEX, ed->lua_ref); + lua_gc(L, LUA_GCCOLLECT, 0); +#else + lua_pushthread(L); + lua_getfenv(L, -1); + lua_pushnil(L); + while (lua_next(L, -2)) + { + // key at -2, value at -1 + lua_pop(L, 1); + lua_pushvalue(L, -1); + lua_pushnil(L); + lua_rawset(L, -4); + } + lua_settop(L, 0); + lua_gc(L, LUA_GCCOLLECT, 0); +#endif +} + +/* + * only for debug, returns number of objects in registry + */ +static int +_edje_lua_reg_count (lua_State *L) +{ + int count = 0; + lua_pushvalue(L, LUA_REGISTRYINDEX); + lua_pushnil(L); + while (lua_next(L, -2)) + { + // key at -2, value at -1 + lua_pop(L, 1); + count++; + } + lua_pop(L, 1); + return count; +} + +static Edje_Lua_Ref * +_edje_lua_new_ref(lua_State *L, int index) +{ + lua_pushvalue(L, index); + Edje_Lua_Ref *ref = malloc(sizeof(Edje_Lua_Ref)); + ref->id = luaL_ref(L, LUA_REGISTRYINDEX); + ref->L = L; + return ref; +} + +static void +_edje_lua_get_ref(lua_State *L, Edje_Lua_Ref *ref) +{ + lua_rawgeti(L, LUA_REGISTRYINDEX, ref->id); +} + +static void +_edje_lua_free_ref(lua_State *L, Edje_Lua_Ref *ref) +{ + //printf ("_edje_lua_free_ref %d %d %d\n", L, lua_objlen(L, LUA_REGISTRYINDEX), _edje_lua_reg_count(L)); + luaL_unref(L, LUA_REGISTRYINDEX, ref->id); + free(ref); + lua_gc(L, LUA_GCCOLLECT, 0); +} + +void +_edje_lua_new_reg(lua_State *L, int index, void *ptr) +{ + //printf ("_edje_lua_new_reg %d %d %d\n", L, ptr, _edje_lua_reg_count(L)); + lua_pushvalue(L, index); + lua_pushlightuserdata(L, ptr); + lua_insert(L, -2); + lua_rawset(L, LUA_REGISTRYINDEX); /* freed in _edje_lua_free_reg */ +} + +void +_edje_lua_get_reg(lua_State *L, void *ptr) +{ + //printf ("_edje_lua_get_reg %d %d\n", L, ptr); + lua_pushlightuserdata(L, ptr); + lua_rawget(L, LUA_REGISTRYINDEX); +} + +void +_edje_lua_free_reg(lua_State *L, void *ptr) +{ + //printf ("_edje_lua_free_reg %d %d %d\n", L, ptr, _edje_lua_reg_count(L)); + lua_pushlightuserdata(L, ptr); + lua_pushnil(L); + lua_rawset(L, LUA_REGISTRYINDEX); /* created in _edje_lua_new_reg */ + lua_gc(L, LUA_GCCOLLECT, 0); +} + +static void +_edje_lua_rawsetfield(lua_State *L, int index, const char *key) +{ + lua_pushstring(L, key); + lua_insert(L, -2); + if (index < 0) + lua_rawset(L, index - 1); + else + lua_rawset(L, index); +} + +static void +_edje_lua_rawgetfield(lua_State *L, int index, const char *key) +{ + lua_pushstring(L, key); + if (index < 0) + lua_rawget(L, index - 1); + else + lua_rawget(L, index); +} + +static void +_edje_lua_new_const(lua_State *L, const char *id, int val) +{ + lua_pushnumber(L, val); + lua_setglobal(L, id); +} + +static void +_edje_lua_new_metatable(lua_State *L, const Edje_Lua_Reg ** class) +{ + lua_newtable(L); + lua_pushlightuserdata(L, class); + lua_pushvalue(L, -2); + lua_rawset(L, LUA_REGISTRYINDEX); /* freed in _edje_lua_free_metatable */ + lua_pushvalue(L, -1); + lua_pushlightuserdata(L, class); + lua_rawset(L, LUA_REGISTRYINDEX); /* freed in _edje_lua_free_metatable */ +} + +static void +_edje_lua_get_metatable(lua_State *L, const Edje_Lua_Reg ** class) +{ + lua_pushlightuserdata(L, class); + lua_rawget(L, LUA_REGISTRYINDEX); +} + +static void +_edje_lua_free_metatable(lua_State *L, const Edje_Lua_Reg ** class) +{ + lua_pushlightuserdata(L, class); + lua_rawget(L, LUA_REGISTRYINDEX); + lua_pushnil(L); + lua_rawset(L, LUA_REGISTRYINDEX); /* created in _edje_lua_new_metatable */ + lua_pushlightuserdata(L, class); + lua_pushnil(L); + lua_rawset(L, LUA_REGISTRYINDEX); /* created in _edje_lua_new_metatable */ + lua_gc(L, LUA_GCCOLLECT, 0); +} + +static void * +_edje_lua_checkudata(lua_State *L, int pos, const Edje_Lua_Reg * module) +{ + luaL_checktype(L, pos, LUA_TUSERDATA); + lua_getmetatable(L, pos); + lua_rawget(L, LUA_REGISTRYINDEX); + Edje_Lua_Reg **class = lua_touserdata(L, -1); + lua_pop(L, 1); // class + int flag = 0; + int ptr = 0; + while (class[ptr] && !flag) + if (class[ptr++] == module) + flag = 1; + if (!flag) + { + lua_pushstring(L, "class type mismatch"); + lua_error(L); + } + return lua_touserdata(L, pos); +} + +static void +_edje_lua_new_class(lua_State *L, const Edje_Lua_Reg ** class) +{ + int n = 0; + _edje_lua_new_metatable(L, class); + while (class && (class[n] != NULL)) + { + luaL_register(L, NULL, class[n]->mt); + lua_pushstring(L, "hands off, it's none of your business!"); + _edje_lua_rawsetfield(L, -2, "__metatable"); + + if (n == 0) + { + lua_newtable(L); + luaL_register(L, NULL, class[n]->set); + lua_rawseti (L, -2, EDJE_LUA_SET); + + lua_newtable(L); + luaL_register(L, NULL, class[n]->get); + lua_rawseti (L, -2, EDJE_LUA_GET); + + lua_newtable(L); + luaL_register(L, NULL, class[n]->fn); + lua_rawseti (L, -2, EDJE_LUA_FN); + } + else + { + lua_rawgeti(L, -1, EDJE_LUA_SET); + luaL_register(L, NULL, class[n]->set); + lua_pop(L, 1); + + lua_rawgeti(L, -1, EDJE_LUA_GET); + luaL_register(L, NULL, class[n]->get); + lua_pop(L, 1); + + lua_rawgeti(L, -1, EDJE_LUA_FN); + luaL_register(L, NULL, class[n]->fn); + lua_pop(L, 1); + } + n += 1; + } +} + +static void +_edje_lua_set_class(lua_State *L, int index, const Edje_Lua_Reg ** class) +{ + lua_newtable(L); + if (index < 0) + lua_setfenv(L, index - 1); + else + lua_setfenv(L, index); + + _edje_lua_get_metatable(L, class); + if (index < 0) + lua_setmetatable(L, index - 1); + else + lua_setmetatable(L, index); +} + +static int +_edje_lua_look_fn(lua_State *L) +{ + lua_rawgeti(L, -1, EDJE_LUA_FN); + lua_pushvalue(L, 2); // key + lua_rawget(L, -2); // .fn[key] + if (lua_iscfunction(L, -1)) + return 1; + else + { + lua_pop(L, 2); // .fn[key], .fn + return 0; + } +} + +static int +_edje_lua_look_get(lua_State *L) +{ + lua_rawgeti(L, -1, EDJE_LUA_GET); + lua_pushvalue(L, 2); // key + lua_rawget(L, -2); // .get[key] + if (lua_iscfunction(L, -1)) + { + int err_code; + + lua_pushvalue(L, 1); + + if ((err_code = lua_pcall(L, 1, 1, 0))) + _edje_lua_error(L, err_code); + return 1; + } + else + { + lua_pop(L, 2); // .get[key], .get + return 0; + } +} + +static int +_edje_lua_look_set(lua_State *L) +{ + lua_rawgeti(L, -1, EDJE_LUA_SET); + lua_pushvalue(L, 2); // key + lua_rawget(L, -2); // .set[key] + if (lua_iscfunction(L, -1)) + { + int err_code; + + lua_pushvalue(L, 1); // obj + lua_pushvalue(L, 3); // value + + if ((err_code = lua_pcall(L, 2, 0, 0))) // .set[key](obj,key,value) + _edje_lua_error(L, err_code); + return 1; + } + else + { + lua_pop(L, 2); // .set[key], .set + return 0; + } +} + +/* + * Lua Class bindings + */ + +const luaL_Reg lNil[] = { + {NULL, NULL} // sentinel +}; + +const luaL_Reg lClass_mt[]; + +const luaL_Reg lClass_fn[]; + +const Edje_Lua_Reg mClass = { + lClass_mt, + lNil, + lNil, + lClass_fn +}; + +static int +_edje_lua_class_mt_index(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + lua_getmetatable(L, 1); + if (!_edje_lua_look_fn(L)) // look in lClass_fn + if (!_edje_lua_look_get(L)) // look in lClass_get + { // look in obj ref hash + lua_getfenv(L, 1); + lua_pushvalue(L, 2); // key + lua_rawget(L, -2); + } + return 1; +} + +static int +_edje_lua_class_mt_newindex(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + lua_getmetatable(L, 1); + if (!_edje_lua_look_set(L)) // look in lClass_set + { // look in obj ref hash + lua_getfenv(L, 1); + lua_pushvalue(L, 2); + lua_pushvalue(L, 3); + lua_rawset(L, -3); + } + return 0; +} + +static int +_edje_lua_class_mt_gc(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + //printf("_edje_lua_class_mt_gc\n"); + /* FIXME has to be commented to not raise an error, solve differently + lua_getfield(L, 1, "del"); + if (!lua_isnil(L, -1)) + { + lua_pushvalue(L, 1); + int err_code; + + if (err_code = lua_pcall(L, 1, 0, 0)) + _edje_lua_error(L, err_code); + } + lua_pop(L, 1); + */ + return 0; +} + +static int +_edje_lua_class_fn_set(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + /* + * for k,v in pairs(table) do + * obj[k] = v + * end + */ + lua_pushnil(L); + while (lua_next(L, 2)) + { + // key at -2, value at -1 + lua_pushvalue(L, -2); + lua_insert(L, -2); + lua_settable(L, 1); + } + return 0; +} + +static int +_edje_lua_class_fn_get(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + /* + * res = {} + * mtG = getmetatable(obj)['.get'] + * for k,v in pairs(mtG) do + * res[k] = obj[k] + * end + */ + lua_newtable(L); // res + lua_getmetatable(L, 1); // mt + lua_getfield(L, -1, ".get"); + lua_remove(L, -2); // mt + + lua_pushnil(L); + while (lua_next(L, -2)) + { + // key at -2, value at -1 + lua_pop(L, 1); // value = cfunction + lua_pushvalue(L, -1); // key + lua_pushvalue(L, -1); // key + lua_gettable(L, 1); // obj[key] + lua_settable(L, 2); // res[key] + } + lua_pop(L, 1); // .get + return 1; +} + +static int +_edje_lua_class_itr_call(lua_State *L, int id) +{ + int err_code; + + _edje_lua_checkudata(L, 1, &mClass); + lua_getmetatable(L, 1); // mt + lua_rawgeti(L, -1, id); + lua_remove(L, -2); // mt + lua_getglobal(L, "pairs"); + lua_insert(L, -2); + + if ((err_code = lua_pcall(L, 1, 3, 0))) + _edje_lua_error(L, err_code); + return 3; +} + +static int +_edje_lua_class_fn_gpairs(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + return _edje_lua_class_itr_call(L, EDJE_LUA_GET); +} + +static int +_edje_lua_class_fn_spairs(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + return _edje_lua_class_itr_call(L, EDJE_LUA_SET); +} + +static int +_edje_lua_class_fn_fpairs(lua_State *L) +{ + _edje_lua_checkudata(L, 1, &mClass); + return _edje_lua_class_itr_call(L, EDJE_LUA_FN); +} + +static int +_edje_lua_class_fn_pairs(lua_State *L) +{ + int err_code; + + _edje_lua_checkudata(L, 1, &mClass); + lua_getfenv(L, 1); + lua_getglobal(L, "pairs"); + lua_insert(L, -2); + + if ((err_code = lua_pcall(L, 1, 3, 0))) + _edje_lua_error(L, err_code); + return 3; +} + +static int +_edje_lua_class_fn_ipairs(lua_State *L) +{ + int err_code; + + _edje_lua_checkudata(L, 1, &mClass); + lua_getfenv(L, 1); + lua_getglobal(L, "ipairs"); + lua_insert(L, -2); + + if ((err_code = lua_pcall(L, 1, 3, 0))) + _edje_lua_error(L, err_code); + return 3; +} + +const luaL_Reg lClass_mt[] = { + {"__index", _edje_lua_class_mt_index}, + {"__newindex", _edje_lua_class_mt_newindex}, + {"__gc", _edje_lua_class_mt_gc}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lClass_fn[] = { + {"get", _edje_lua_class_fn_get}, + {"set", _edje_lua_class_fn_set}, + {"gpairs", _edje_lua_class_fn_gpairs}, + {"spairs", _edje_lua_class_fn_spairs}, + {"fpairs", _edje_lua_class_fn_fpairs}, + {"pairs", _edje_lua_class_fn_pairs}, + {"ipairs", _edje_lua_class_fn_ipairs}, + {NULL, NULL} // sentinel +}; + + +const luaL_Reg lTimer_get[]; + +const luaL_Reg lTimer_set[]; + +const luaL_Reg lTimer_fn[]; + +const Edje_Lua_Reg mTimer = { + lNil, + lTimer_get, + lTimer_set, + lTimer_fn +}; + +const Edje_Lua_Reg *cTimer[] = { + &mClass, + &mTimer, + NULL // sentinel +}; + +static Eina_Bool +_edje_lua_timer_cb(void *data) +{ + Edje_Lua_Timer *obj = data; + lua_State *L = obj->L; + int err_code; + Eina_Bool res; + + _edje_lua_get_ref(L, obj->cb); // callback function + _edje_lua_get_reg(L, obj); + + if ((err_code = lua_pcall(L, 1, 1, 0))) + { + _edje_lua_error(L, err_code); + return ECORE_CALLBACK_CANCEL; + } + + res = luaL_optint(L, -1, ECORE_CALLBACK_CANCEL); + lua_pop(L, 1); // -- res + +/* + if (_edje_lua_panic_here()) + printf("blahc\n"); + else + lua_pop(L, 1); // -- res + */ + if (res == ECORE_CALLBACK_CANCEL) + { + // delete object + _edje_lua_get_reg(L, obj); + lua_pushvalue(L, -1); + lua_pushstring(L, "del"); + lua_gettable(L, -2); + lua_insert(L, -2); + if ((err_code = lua_pcall(L, 1, 0, 0))) + _edje_lua_error(L, err_code); + } + return res; +} + +static int +_edje_lua_timer_get_pending(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + lua_pushnumber(L, ecore_timer_pending_get(obj->et)); + else + lua_pushnil(L); + return 1; +} + +static int +_edje_lua_timer_get_precision(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + + if (obj->et) + lua_pushnumber(L, ecore_timer_precision_get()); + else + lua_pushnil(L); + + return 1; +} + +static int +_edje_lua_timer_get_interval(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + + if (obj->et) + lua_pushnumber(L, ecore_timer_interval_get(obj->et)); + else + lua_pushnil(L); + + return 1; +} + +const luaL_Reg lTimer_get[] = { + {"pending", _edje_lua_timer_get_pending}, + {"precision", _edje_lua_timer_get_precision}, + {"interval", _edje_lua_timer_get_interval}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_timer_set_interval(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + ecore_timer_interval_set(obj->et, luaL_checknumber(L, 2)); + return 0; +} + +const luaL_Reg lTimer_set[] = { + {"interval", _edje_lua_timer_set_interval}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_timer_fn_del(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + { + ecore_timer_del(obj->et); + obj->et = NULL; + } + if (obj->cb) + { + _edje_lua_free_ref(L, obj->cb); // created in _edje_lua_group_fn_timer + obj->cb = NULL; + } + _edje_lua_free_reg(L, obj); // created in _edje_lua_group_fn_timer + return 0; +} + +static int +_edje_lua_timer_fn_freeze(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + ecore_timer_freeze(obj->et); + return 0; +} + +static int +_edje_lua_timer_fn_thaw(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + ecore_timer_thaw(obj->et); + return 0; +} + +static int +_edje_lua_timer_fn_delay(lua_State *L) +{ + Edje_Lua_Timer *obj = _edje_lua_checkudata(L, 1, &mTimer); + if (obj->et) + ecore_timer_delay(obj->et, luaL_checknumber(L, 2)); + return 0; +} + +const luaL_Reg lTimer_fn[] = { + {"del", _edje_lua_timer_fn_del}, + {"freeze", _edje_lua_timer_fn_freeze}, + {"thaw", _edje_lua_timer_fn_thaw}, + {"delay", _edje_lua_timer_fn_delay}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lAnimator_get[]; + +const luaL_Reg lAnimator_fn[]; + +const Edje_Lua_Reg mAnimator = { + lNil, + lAnimator_get, + lNil, + lAnimator_fn +}; + +const Edje_Lua_Reg *cAnimator[] = { + &mClass, + &mAnimator, + NULL // sentinel +}; + +static Eina_Bool +_edje_lua_animator_cb(void *data) +{ + Eina_Bool res; + int err; + Edje_Lua_Animator *obj = data; + lua_State *L = obj->L; + + _edje_lua_get_ref(L, obj->cb); + _edje_lua_get_reg(L, obj); + + if ((err = lua_pcall(L, 1, 1, 0))) + { + _edje_lua_error(L, err); + return ECORE_CALLBACK_CANCEL; + } + + res = luaL_checkint(L, -1); + lua_pop(L, 1); // Pop res off the stack + if (res == ECORE_CALLBACK_CANCEL) + { + /* delete animator */ + _edje_lua_get_reg(L, obj); + lua_pushvalue(L, -1); + lua_pushstring(L, "del"); + lua_gettable(L, -2); + lua_insert(L, -2); + if ((err = lua_pcall(L, 1, 0, 0))) + _edje_lua_error(L, err); + } + + return res; +} + +static int +_edje_lua_animator_get_frametime(lua_State *L) +{ + Edje_Lua_Animator *obj = _edje_lua_checkudata(L, 1, &mAnimator); + + if (obj->ea) + lua_pushnumber(L, ecore_animator_frametime_get()); + else + lua_pushnil(L); + + return 1; +} + +const luaL_Reg lAnimator_get[] = { + {"frametime", _edje_lua_animator_get_frametime}, + {NULL, NULL} +}; + +static int +_edje_lua_animator_fn_del(lua_State *L) +{ + Edje_Lua_Animator *obj = _edje_lua_checkudata(L, 1, &mAnimator); + if (obj->ea) + { + ecore_animator_del(obj->ea); + obj->ea = NULL; + } + if (obj->cb) + { + _edje_lua_free_ref(L, obj->cb); // created in _edje_lua_group_fn_animator + obj->cb = NULL; + } + _edje_lua_free_reg(L, obj); // created in _edje_lua_group_fn_animator + return 0; +} + +const luaL_Reg lAnimator_fn[] = { + {"del", _edje_lua_animator_fn_del}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lPoller_get[]; + +const luaL_Reg lPoller_fn[]; + +const Edje_Lua_Reg mPoller = { + lNil, + lPoller_get, + lNil, + lPoller_fn +}; + +const Edje_Lua_Reg *cPoller[] = { + &mClass, + &mPoller, + NULL // sentinel +}; + +static Eina_Bool +_edje_lua_poller_cb(void *data) +{ + Eina_Bool res; + int err; + Edje_Lua_Poller *obj = data; + lua_State *L = obj->L; + + _edje_lua_get_ref(L, obj->cb); + _edje_lua_get_reg(L, obj); + + if ((err = lua_pcall(L, 1, 1, 0))) + { + _edje_lua_error(L, err); + return ECORE_CALLBACK_CANCEL; + } + + res = luaL_checkint(L, -1); + lua_pop(L, 1); // Pop res off the stack + if (res == ECORE_CALLBACK_CANCEL) + { + /* delete poller */ + _edje_lua_get_reg(L, obj); + lua_pushvalue(L, -1); + lua_pushstring(L, "del"); + lua_gettable(L, -2); + lua_insert(L, -2); + if ((err = lua_pcall(L, 1, 0, 0))) + _edje_lua_error(L, err); + } + + return res; +} + +static int +_edje_lua_poller_get_interval(lua_State *L) +{ + Edje_Lua_Poller *obj = _edje_lua_checkudata(L, 1, &mPoller); + + if (obj->ep) + lua_pushnumber(L, ecore_poller_poll_interval_get(ECORE_POLLER_CORE)); + else + lua_pushnil(L); + + return 1; +} + +const luaL_Reg lPoller_get[] = { + {"interval", _edje_lua_poller_get_interval}, + {NULL, NULL} +}; + +static int +_edje_lua_poller_fn_del(lua_State *L) +{ + Edje_Lua_Poller *obj = _edje_lua_checkudata(L, 1, &mPoller); + if (obj->ep) + { + ecore_poller_del(obj->ep); + obj->ep = NULL; + } + + if (obj->cb) + { + _edje_lua_free_ref(L, obj->cb); // created in _edje_lua_group_fn_poller + obj->cb = NULL; + } + _edje_lua_free_reg(L, obj); // created in _edje_lua_group_fn_poller + + return 0; +} + +const luaL_Reg lPoller_fn[] = { + {"del", _edje_lua_poller_fn_del}, + {NULL, NULL} +}; + +/* + * Lua Edje Transform bindings + */ + +const luaL_Reg lTransform_get[]; + +const luaL_Reg lTransform_set[]; + +const luaL_Reg lTransform_fn[]; + +const Edje_Lua_Reg mTransform = { + lNil, + lTransform_get, + lTransform_set, + lTransform_fn +}; + +const Edje_Lua_Reg *cTransform[] = { + &mClass, + &mTransform, + NULL // sentinel +}; + +static int +_edje_lua_transform_get_matrix(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + lua_createtable(L, 3, 0); + lua_createtable(L, 3, 0); + lua_pushnumber(L, obj->et.mxx); lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->et.mxy); lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->et.mxz); lua_rawseti(L, -2, 3); + lua_rawseti(L, -2, 1); + lua_createtable(L, 3, 0); + lua_pushnumber(L, obj->et.myx); lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->et.myy); lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->et.myz); lua_rawseti(L, -2, 3); + lua_rawseti(L, -2, 2); + lua_createtable(L, 3, 0); + lua_pushnumber(L, obj->et.mzx); lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->et.mzy); lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->et.mzz); lua_rawseti(L, -2, 3); + lua_rawseti(L, -2, 3); + return 1; +} + +const luaL_Reg lTransform_get[] = { + {"matrix", _edje_lua_transform_get_matrix}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_transform_set_matrix(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + luaL_checktype(L, -1, LUA_TTABLE); + lua_rawgeti(L, -1, 1); obj->et.mxx = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 2); obj->et.mxy = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 3); obj->et.mxz = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_pop(L, 1); + lua_rawgeti(L, 2, 2); + luaL_checktype(L, -1, LUA_TTABLE); + lua_rawgeti(L, -1, 1); obj->et.myx = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 2); obj->et.myy = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 3); obj->et.myz = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_pop(L, 1); + lua_rawgeti(L, 2, 3); + luaL_checktype(L, -1, LUA_TTABLE); + lua_rawgeti(L, -1, 1); obj->et.mzx = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 2); obj->et.mzy = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_rawgeti(L, -1, 3); obj->et.mzz = luaL_checknumber(L, -1); lua_pop(L, 1); + lua_pop(L, 1); + return 0; +} + +const luaL_Reg lTransform_set[] = { + {"matrix", _edje_lua_transform_set_matrix}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_transform_fn_identity(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + evas_transform_identity_set(&(obj->et)); + return 0; +} + +static int +_edje_lua_transform_fn_rotate(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + evas_transform_rotate(luaL_checknumber(L, 2), &(obj->et)); + return 0; +} + +static int +_edje_lua_transform_fn_translate(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + evas_transform_translate(luaL_checknumber(L, 2), luaL_checknumber(L, 3), &(obj->et)); + return 0; +} + +static int +_edje_lua_transform_fn_scale(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + evas_transform_scale(luaL_checknumber(L, 2), luaL_checknumber(L, 3), &(obj->et)); + return 0; +} + +static int +_edje_lua_transform_fn_shear(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + evas_transform_shear(luaL_checknumber(L, 2), luaL_checknumber(L, 3), &(obj->et)); + return 0; +} + +static int +_edje_lua_transform_fn_compose(lua_State *L) +{ + Edje_Lua_Transform *obj = _edje_lua_checkudata(L, 1, &mTransform); + Edje_Lua_Transform *tar = _edje_lua_checkudata(L, 2, &mTransform); + evas_transform_compose(&(tar->et), &(obj->et)); + return 0; +} + +const luaL_Reg lTransform_fn[] = { + {"identity", _edje_lua_transform_fn_identity}, + {"rotate", _edje_lua_transform_fn_rotate}, + {"translate", _edje_lua_transform_fn_translate}, + {"scale", _edje_lua_transform_fn_scale}, + {"shear", _edje_lua_transform_fn_shear}, + {"compose", _edje_lua_transform_fn_compose}, + {NULL, NULL} // sentinel +}; + +/* + * Lua Edje Transition bindings + */ + +const luaL_Reg lTransition_get[]; + +const luaL_Reg lTransition_set[]; + +const luaL_Reg lTransition_fn[]; + +const Edje_Lua_Reg mTransition = { + lNil, + lTransition_get, + lTransition_set, + lTransition_fn +}; + +const Edje_Lua_Reg *cTransition[] = { + &mClass, + &mTransition, + NULL // sentinel +}; + +const luaL_Reg lTransition_get[] = { + {NULL, NULL} // sentinel +}; + +const luaL_Reg lTransition_set[] = { + {NULL, NULL} // sentinel +}; + +const luaL_Reg lTransition_fn[] = { + {NULL, NULL} // sentinel +}; + +const luaL_Reg lObject_get[]; + +const luaL_Reg lObject_set[]; + +const luaL_Reg lObject_fn[]; + +const Edje_Lua_Reg mObject = { + lNil, + lObject_get, + lObject_set, + lObject_fn +}; + +static void +_edje_lua_object_del_cb(void *data, __UNUSED__ Evas * e, Evas_Object * obj, __UNUSED__ void *event_info) +{ + //printf("_edje_lua_object_delete_cb\n"); + lua_State *L = data; + _edje_lua_get_reg(L, obj); + Edje_Lua_Evas_Object *udata = _edje_lua_checkudata(L, -1, &mObject); + lua_pop(L, 1); + _edje_lua_free_reg(L, udata); // created in EDJE_LUA_SCRIPT_FN_ADD + _edje_lua_free_reg(L, obj); // created in EDJE_LUA_SCRIPT_FN_ADD + + Edje_Lua_Ref *ref; + EINA_LIST_FREE(udata->cb, ref) + _edje_lua_free_ref(L, ref); +} + +static int +_edje_lua_object_fn_del(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + + if (obj->eo) + { + evas_object_del(obj->eo); + obj->eo = NULL; + obj->ed = NULL; + } + return 0; +} + +static int +_edje_lua_object_fn_show(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_show(obj->eo); + return 0; +} + +static int +_edje_lua_object_fn_hide(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_hide(obj->eo); + return 0; +} + +static int +_edje_lua_object_fn_move(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + //printf ("%i %i %i %i\n", obj->ed->x, obj->ed->y, luaL_checkint (L, 2), luaL_checkint (L, 3)); + evas_object_move(obj->eo, + obj->ed->x + luaL_checkint(L, 2), + obj->ed->y + luaL_checkint(L, 3)); + return 0; +} + +static int +_edje_lua_object_fn_resize(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_resize(obj->eo, luaL_checkint(L, 2), luaL_checkint(L, 3)); + return 0; +} + +static int +_edje_lua_object_fn_raise(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_raise(obj->eo); + return 0; +} + +static int +_edje_lua_object_fn_lower(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_lower(obj->eo); + return 0; +} + +static int +_edje_lua_object_fn_stack_above(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + evas_object_stack_above(obj->eo, tar->eo); + return 0; +} + +static int +_edje_lua_object_fn_stack_below(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + evas_object_stack_below(obj->eo, tar->eo); + return 0; +} + +static int +_edje_lua_object_fn_clip_unset(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_clip_unset(obj->eo); + return 0; +} + +const luaL_Reg lObject_fn[] = { + {"del", _edje_lua_object_fn_del}, + {"show", _edje_lua_object_fn_show}, + {"hide", _edje_lua_object_fn_hide}, + {"move", _edje_lua_object_fn_move}, + {"resize", _edje_lua_object_fn_resize}, + {"raise", _edje_lua_object_fn_raise}, + {"lower", _edje_lua_object_fn_lower}, + {"stack_above", _edje_lua_object_fn_stack_above}, + {"stack_below", _edje_lua_object_fn_stack_below}, + {"clip_unset", _edje_lua_object_fn_clip_unset}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_object_get_name(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushstring(L, evas_object_name_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_geometry(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int x, y, w, h; + evas_object_geometry_get(obj->eo, &x, &y, &w, &h); + lua_createtable(L, 4, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_object_get_type(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushstring(L, evas_object_type_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_layer(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnumber(L, evas_object_layer_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_above(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Evas_Object *above = evas_object_above_get(obj->eo); + _edje_lua_get_reg(L, above); + // TODO create object if it does not already exist? + return 1; +} + +static int +_edje_lua_object_get_below(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Evas_Object *below = evas_object_below_get(obj->eo); + _edje_lua_get_reg(L, below); + // TODO create object if it does not already exist? + return 1; +} + +static int +_edje_lua_object_get_size_hint_min(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int w, h; + evas_object_size_hint_min_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_object_get_size_hint_max(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int w, h; + evas_object_size_hint_max_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_object_get_size_hint_request(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int w, h; + evas_object_size_hint_request_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_object_get_size_hint_aspect(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Evas_Aspect_Control a; + int w, h; + evas_object_size_hint_aspect_get(obj->eo, &a, &w, &h); + lua_createtable(L, 3, 0); + lua_pushnumber(L, a); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 3); + return 1; +} + +static int +_edje_lua_object_get_size_hint_align(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + double w, h; + evas_object_size_hint_align_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_object_get_size_hint_weight(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + double w, h; + evas_object_size_hint_weight_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_object_get_size_hint_padding(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int l, r, t, b; + evas_object_size_hint_padding_get(obj->eo, &l, &r, &t, &b); + lua_createtable(L, 4, 0); + lua_pushnumber(L, l); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, r); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, t); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, b); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_object_get_visible(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_visible_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_render_op(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnumber(L, evas_object_render_op_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_anti_alias(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_anti_alias_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_scale(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnumber(L, evas_object_scale_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_color(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + int r, g, b, a; + evas_object_color_get(obj->eo, &r, &g, &b, &a); + lua_createtable(L, 4, 0); + lua_pushnumber(L, r); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, g); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, b); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, a); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_object_get_color_interpolation(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnumber(L, evas_object_color_interpolation_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_clip(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Evas_Object *clip = evas_object_clip_get(obj->eo); + _edje_lua_get_reg(L, clip); + // TODO create object if it does not already exist? + return 1; +} + +static int +_edje_lua_object_get_clipees(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Eina_List *clipees = (Eina_List *) evas_object_clipees_get(obj->eo); + Eina_List *l; + Evas_Object *clip; + int i = 1; + lua_createtable(L, eina_list_count(clipees), 0); + EINA_LIST_FOREACH(clipees, l, clip) + { + _edje_lua_get_reg(L, clip); + // TODO create object if it does not already exist? + lua_rawseti(L, -2, i++); + } + return 1; +} + +static int +_edje_lua_object_get_evas(lua_State *L) +{ + //Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnil(L); + // FIXME implement Evas class in the first place? + return 1; +} + +static int +_edje_lua_object_get_pass_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_pass_events_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_repeat_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_repeat_events_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_propagate_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_propagate_events_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_focus(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_focus_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_pointer_mode(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushnumber(L, evas_object_pointer_mode_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_precise_is_inside(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, evas_object_precise_is_inside_get(obj->eo)); + return 1; +} + +static int +_edje_lua_object_get_mouse_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + lua_pushboolean(L, obj->mouse_events); + return 1; +} + +const luaL_Reg lObject_get[] = { + {"name", _edje_lua_object_get_name}, + {"geometry", _edje_lua_object_get_geometry}, + {"type", _edje_lua_object_get_type}, + {"layer", _edje_lua_object_get_layer}, + {"above", _edje_lua_object_get_above}, + {"below", _edje_lua_object_get_below}, + {"size_hint_min", _edje_lua_object_get_size_hint_min}, + {"size_hint_max", _edje_lua_object_get_size_hint_max}, + {"size_hint_request", _edje_lua_object_get_size_hint_request}, + {"size_hint_aspect", _edje_lua_object_get_size_hint_aspect}, + {"size_hint_align", _edje_lua_object_get_size_hint_align}, + {"size_hint_weight", _edje_lua_object_get_size_hint_weight}, + {"size_hint_padding", _edje_lua_object_get_size_hint_padding}, + {"visible", _edje_lua_object_get_visible}, + {"render_op", _edje_lua_object_get_render_op}, + {"anti_alias", _edje_lua_object_get_anti_alias}, + {"scale", _edje_lua_object_get_scale}, + {"color", _edje_lua_object_get_color}, + {"color_interpolation", _edje_lua_object_get_color_interpolation}, + {"clip", _edje_lua_object_get_clip}, + {"clipees", _edje_lua_object_get_clipees}, + {"evas", _edje_lua_object_get_evas}, + {"pass_events", _edje_lua_object_get_pass_events}, + {"repeat_events", _edje_lua_object_get_repeat_events}, + {"propagate_events", _edje_lua_object_get_propagate_events}, + {"focus", _edje_lua_object_get_focus}, + {"pointer_mode", _edje_lua_object_get_pointer_mode}, + {"precise_is_inside", _edje_lua_object_get_precise_is_inside}, + {"mouse_events", _edje_lua_object_get_mouse_events}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_object_set_name(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_name_set(obj->eo, luaL_checkstring(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_layer(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_layer_set(obj->eo, luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_min(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_size_hint_min_set(obj->eo, + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_max(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_size_hint_max_set(obj->eo, + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_request(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_size_hint_request_set(obj->eo, + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_aspect(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + evas_object_size_hint_aspect_set(obj->eo, + luaL_checkint(L, -3), + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_align(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_size_hint_align_set(obj->eo, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_weight(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_size_hint_weight_set(obj->eo, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_size_hint_padding(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + evas_object_size_hint_padding_set(obj->eo, + luaL_checknumber(L, -4), + luaL_checknumber(L, -3), + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_render_op(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_render_op_set(obj->eo, luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_anti_alias(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_anti_alias_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_scale(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_scale_set(obj->eo, luaL_checknumber(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_color(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + evas_object_color_set(obj->eo, + luaL_checkint(L, -4), + luaL_checkint(L, -3), + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_object_set_color_interpolation(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_color_interpolation_set(obj->eo, luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_clip(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + Edje_Lua_Evas_Object *clip = _edje_lua_checkudata(L, 2, &mObject); + evas_object_clip_set(obj->eo, clip->eo); + return 0; +} + +static int +_edje_lua_object_set_pass_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_pass_events_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_repeat_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_repeat_events_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_propagate_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_propagate_events_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_focus(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_focus_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_pointer_mode(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_pointer_mode_set(obj->eo, luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_object_set_precise_is_inside(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_precise_is_inside_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +#define OBJECT_CB_MACRO(KEY) \ + lua_State *L = data; \ + _edje_lua_get_reg(L, obj); \ + lua_getfield(L, -1, KEY); \ + if (lua_type(L, -1) != LUA_TFUNCTION) \ + { \ + lua_pop(L, 2); \ + return; \ + } \ + lua_insert(L, -2); + +static void +_edje_lua_object_cb_mouse_in(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_in"); + Evas_Event_Mouse_In * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->output.x); + lua_pushnumber(L, ev->output.y); + lua_pushnumber(L, ev->canvas.x); + lua_pushnumber(L, ev->canvas.y); + + if ((err_code = lua_pcall(L, 5, 0, 0))) + _edje_lua_error(L, err_code); +} + +static void +_edje_lua_object_cb_mouse_out(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_out"); + Evas_Event_Mouse_In * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->output.x); + lua_pushnumber(L, ev->output.y); + lua_pushnumber(L, ev->canvas.x); + lua_pushnumber(L, ev->canvas.y); + + if ((err_code = lua_pcall(L, 5, 0, 0))) + _edje_lua_error(L, err_code); +} + +static void +_edje_lua_object_cb_mouse_down(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_down"); + Evas_Event_Mouse_Down * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->button); + lua_pushnumber(L, ev->output.x); + lua_pushnumber(L, ev->output.y); + lua_pushnumber(L, ev->canvas.x); + lua_pushnumber(L, ev->canvas.y); + + if ((err_code = lua_pcall(L, 6, 0, 0))) + _edje_lua_error(L, err_code); +} + +static void +_edje_lua_object_cb_mouse_up(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_up"); + Evas_Event_Mouse_Up * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->button); + lua_pushnumber(L, ev->output.x); + lua_pushnumber(L, ev->output.y); + lua_pushnumber(L, ev->canvas.x); + lua_pushnumber(L, ev->canvas.y); + + if ((err_code = lua_pcall(L, 6, 0, 0))) + _edje_lua_error(L, err_code); +} + +static void +_edje_lua_object_cb_mouse_move(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_move"); + Evas_Event_Mouse_Move * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->buttons); + lua_pushnumber(L, ev->cur.output.x); + lua_pushnumber(L, ev->cur.output.y); + lua_pushnumber(L, ev->cur.canvas.x); + lua_pushnumber(L, ev->cur.canvas.y); + + if ((err_code = lua_pcall(L, 6, 0, 0))) + _edje_lua_error(L, err_code); +} + +static void +_edje_lua_object_cb_mouse_wheel(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + void *event_info) +{ + OBJECT_CB_MACRO("mouse_wheel"); + Evas_Event_Mouse_Wheel * ev = event_info; + int err_code; + + lua_pushnumber(L, ev->z); + lua_pushnumber(L, ev->output.x); + lua_pushnumber(L, ev->output.y); + lua_pushnumber(L, ev->canvas.x); + lua_pushnumber(L, ev->canvas.y); + + if ((err_code = lua_pcall(L, 6, 0, 0))) + _edje_lua_error(L, err_code); +} + +static int +_edje_lua_object_set_mouse_events(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + obj->mouse_events = lua_toboolean(L, 2); + if (obj->mouse_events) + { + // add all mouse events + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_IN, _edje_lua_object_cb_mouse_in, L); + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_OUT, _edje_lua_object_cb_mouse_out, L); + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_DOWN, _edje_lua_object_cb_mouse_down, L); + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_UP, _edje_lua_object_cb_mouse_up, L); + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_MOVE, _edje_lua_object_cb_mouse_move, L); + evas_object_event_callback_add(obj->eo, EVAS_CALLBACK_MOUSE_WHEEL, _edje_lua_object_cb_mouse_wheel, L); + } + else + { + // delete all mouse events + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_IN, _edje_lua_object_cb_mouse_in); + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_OUT, _edje_lua_object_cb_mouse_out); + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_DOWN, _edje_lua_object_cb_mouse_down); + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_UP, _edje_lua_object_cb_mouse_up); + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_MOVE, _edje_lua_object_cb_mouse_move); + evas_object_event_callback_del(obj->eo, EVAS_CALLBACK_MOUSE_WHEEL, _edje_lua_object_cb_mouse_wheel); + } + return 0; +} + +const luaL_Reg lObject_set[] = { + {"name", _edje_lua_object_set_name}, + {"layer", _edje_lua_object_set_layer}, + {"size_hint_min", _edje_lua_object_set_size_hint_min}, + {"size_hint_max", _edje_lua_object_set_size_hint_max}, + {"size_hint_request", _edje_lua_object_set_size_hint_request}, + {"size_hint_aspect", _edje_lua_object_set_size_hint_aspect}, + {"size_hint_align", _edje_lua_object_set_size_hint_align}, + {"size_hint_weight", _edje_lua_object_set_size_hint_weight}, + {"size_hint_padding", _edje_lua_object_set_size_hint_padding}, + {"render_op", _edje_lua_object_set_render_op}, + {"anti_alias", _edje_lua_object_set_anti_alias}, + {"scale", _edje_lua_object_set_scale}, + {"color", _edje_lua_object_set_color}, + {"color_interpolation", _edje_lua_object_set_color_interpolation}, + {"clip", _edje_lua_object_set_clip}, + {"pass_events", _edje_lua_object_set_pass_events}, + {"repeat_events", _edje_lua_object_set_repeat_events}, + {"propagate_events", _edje_lua_object_set_propagate_events}, + {"focus", _edje_lua_object_set_focus}, + {"pointer_mode", _edje_lua_object_get_pointer_mode}, + {"precise_is_inside", _edje_lua_object_get_precise_is_inside}, + {"mouse_events", _edje_lua_object_set_mouse_events}, + {NULL, NULL} // sentinel +}; + +const Edje_Lua_Reg *cRectangle[] = { + &mClass, + &mObject, + NULL // sentinel +}; + +const luaL_Reg lImage_get[]; + +const luaL_Reg lImage_set[]; + +const Edje_Lua_Reg mImage = { + lNil, + lImage_get, + lImage_set, + lNil +}; + +const Edje_Lua_Reg *cImage[] = { + &mClass, + &mObject, + &mImage, + NULL // sentinel +}; + +static int +_edje_lua_image_get_size(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mImage); + int w, h; + evas_object_image_size_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +}; + +const luaL_Reg lImage_get[] = { + {"size", _edje_lua_image_get_size}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_image_set_file(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mImage); + int id = edje_edit_image_id_get(obj->ed->obj, luaL_checkstring(L, 2)); + char buf[256]; + sprintf(buf, "edje/images/%i", id); + evas_object_image_file_set(obj->eo, obj->ed->path, buf); + return 0; +} + +static int +_edje_lua_image_set_fill(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mImage); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + evas_object_image_fill_set(obj->eo, + luaL_checkint(L, -4), + luaL_checkint(L, -3), + luaL_checkint(L, -2), luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_image_set_fill_transform(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mImage); + Edje_Lua_Transform *tar = _edje_lua_checkudata(L, 2, &mTransform); + evas_object_image_fill_transform_set(obj->eo, &(tar->et)); + return 0; +} + +static int +_edje_lua_image_set_alpha(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mObject); + evas_object_image_alpha_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +const luaL_Reg lImage_set[] = { + {"file", _edje_lua_image_set_file}, + {"fill", _edje_lua_image_set_fill}, + {"fill_transform", _edje_lua_image_set_fill_transform}, + {"alpha", _edje_lua_image_set_alpha}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lLine_get[]; +const luaL_Reg lLine_set[]; + +const Edje_Lua_Reg mLine = { + lNil, + lLine_get, + lLine_set, + lNil +}; + +const Edje_Lua_Reg *cLine[] = { + &mClass, + &mObject, + &mLine, + NULL // sentinel +}; + +static int +_edje_lua_line_get_xy(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mLine); + int x1, y1, x2, y2; + evas_object_line_xy_get(obj->eo, &x1, &y1, &x2, &y2); + lua_createtable(L, 4, 0); + lua_pushnumber(L, x1); lua_rawseti(L, -2, 1); + lua_pushnumber(L, y1); lua_rawseti(L, -2, 2); + lua_pushnumber(L, x2); lua_rawseti(L, -2, 3); + lua_pushnumber(L, y2); lua_rawseti(L, -2, 4); + return 1; +} + +const luaL_Reg lLine_get[] = { + {"xy", _edje_lua_line_get_xy}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_line_set_xy(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mLine); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + evas_object_line_xy_set(obj->eo, + luaL_checkint(L, -4), + luaL_checkint(L, -3), + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +const luaL_Reg lLine_set[] = { + {"xy", _edje_lua_line_set_xy}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lPolygon_fn[]; + +const Edje_Lua_Reg mPolygon = { + lNil, + lNil, + lNil, + lPolygon_fn +}; + +const Edje_Lua_Reg *cPolygon[] = { + &mClass, + &mObject, + &mPolygon, + NULL // sentinel +}; + +static int +_edje_lua_polygon_fn_point_add(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mPolygon); + evas_object_polygon_point_add(obj->eo, + luaL_checknumber(L, 2), + luaL_checknumber(L, 3)); + return 0; +} + +static int +_edje_lua_polygon_fn_points_clear(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mPolygon); + evas_object_polygon_points_clear(obj->eo); + return 0; +} + +const luaL_Reg lPolygon_fn[] = { + {"point_add", _edje_lua_polygon_fn_point_add}, + {"points_clear", _edje_lua_polygon_fn_points_clear}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lTable_get[]; + +const luaL_Reg lTable_set[]; + +const luaL_Reg lTable_fn[]; + +const Edje_Lua_Reg mTable = { + lNil, + lTable_get, + lTable_set, + lTable_fn +}; + +const Edje_Lua_Reg *cTable[] = { + &mClass, + &mObject, + &mTable, + NULL // sentinel +}; + +static int +_edje_lua_table_get_homogeneous(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + lua_pushnumber(L, evas_object_table_homogeneous_get(obj->eo)); + return 1; +} + +static int +_edje_lua_table_get_padding(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + int x, y; + evas_object_table_padding_get(obj->eo, &x, &y); + lua_createtable(L, 2, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_table_get_align(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + double x, y; + evas_object_table_align_get(obj->eo, &x, &y); + lua_createtable(L, 2, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_table_get_col_row_size(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + int x, y; + evas_object_table_col_row_size_get(obj->eo, &x, &y); + lua_createtable(L, 2, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_table_get_children(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + Eina_List *children = (Eina_List *) evas_object_table_children_get(obj->eo); + Eina_List *l; + Evas_Object *child; + int i = 1; + lua_createtable(L, eina_list_count(children), 0); + EINA_LIST_FOREACH(children, l, child) + { + _edje_lua_get_reg(L, child); + // TODO create object if it does not already exist? + lua_rawseti(L, -2, i++); + } + return 1; +} + +const luaL_Reg lTable_get[] = { + {"homogeneous", _edje_lua_table_get_homogeneous}, + {"padding", _edje_lua_table_get_padding}, + {"align", _edje_lua_table_get_align}, + {"col_row_size", _edje_lua_table_get_col_row_size}, + {"children", _edje_lua_table_get_children}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_table_set_homogeneous(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + evas_object_table_homogeneous_set(obj->eo, + luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_table_set_padding(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_table_padding_set(obj->eo, + luaL_checkint(L, -2), + luaL_checkint(L, -1)); + return 0; +} + +static int +_edje_lua_table_set_align(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + evas_object_table_align_set(obj->eo, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +const luaL_Reg lTable_set[] = { + {"homogeneous", _edje_lua_table_set_homogeneous}, + {"padding", _edje_lua_table_set_padding}, + {"align", _edje_lua_table_set_align}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_table_fn_pack(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + evas_object_table_pack(obj->eo, tar->eo, + luaL_checkint(L, 3), + luaL_checkint(L, 4), + luaL_checkint(L, 5), + luaL_checkint(L, 6))); + return 1; +} + +static int +_edje_lua_table_fn_unpack(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + evas_object_table_unpack(obj->eo, tar->eo)); + return 1; +} + +static int +_edje_lua_table_fn_clear(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mTable); + evas_object_table_clear(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +const luaL_Reg lTable_fn[] = { + {"pack", _edje_lua_table_fn_pack}, + {"unpack", _edje_lua_table_fn_unpack}, + {"clear", _edje_lua_table_fn_clear}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lDescription_get[]; + +const luaL_Reg lDescription_set[]; + +const Edje_Lua_Reg mDescription = { + lNil, + lDescription_get, + lDescription_set, + lNil +}; + +const Edje_Lua_Reg *cDescription[] = { + &mClass, + &mObject, + &mDescription, + NULL // sentinel +}; + +static int +_edje_lua_description_get_alignment(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->align.x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->align.y)); + lua_rawseti(L, -2, 1); + return 1; +} + +static int +_edje_lua_description_get_min(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->min.w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->min.h); + lua_rawseti(L, -2, 1); + return 1; +} + +static int +_edje_lua_description_get_max(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->max.w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->max.h); + lua_rawseti(L, -2, 1); + return 1; +} + +static int +_edje_lua_description_get_step(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->step.x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->step.y); + lua_rawseti(L, -2, 1); + return 1; +} + +static int +_edje_lua_description_get_aspect(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->aspect.min)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->aspect.max)); + lua_rawseti(L, -2, 1); + return 1; +} + +static int +_edje_lua_description_get_aspect_pref(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_pushnumber(L, obj->rp->custom->description->aspect.prefer); + return 1; +} + +static int +_edje_lua_description_get_color(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + /* check whether this part has a "custom" state */ + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, obj->rp->custom->description->color.r); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->color.g); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->color.b); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->color.a); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_color2(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, obj->rp->custom->description->color2.r); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->color2.g); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->color2.b); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->color2.a); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_color3(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, obj->rp->custom->description->color3.r); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->color3.g); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->color3.b); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->color3.a); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_color_class(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_pushstring(L, obj->rp->custom->description->color_class); + return 1; +} + +static int +_edje_lua_description_get_rel1(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->rel1.relative_x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->rel1.relative_y)); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_rel1_to(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->rel1.id_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->rel1.id_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_rel1_offset(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->rel1.offset_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->rel1.offset_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_rel2(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->rel2.relative_x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->rel2.relative_y)); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_rel2_to(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->rel2.id_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->rel2.id_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_rel2_offset(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->rel2.offset_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->rel2.offset_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_image(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + // TODO + return 0; +} + +static int +_edje_lua_description_get_border(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, obj->rp->custom->description->border.l); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->border.r); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->border.t); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->border.b); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_fill_smooth(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushboolean(L, obj->rp->custom->description->fill.smooth); + return 1; +} + +static int +_edje_lua_description_get_fill_pos(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->fill.pos_rel_x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->fill.pos_rel_y)); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->fill.pos_abs_x); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->fill.pos_abs_y); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_fill_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 4, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->fill.rel_x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->fill.rel_y)); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, obj->rp->custom->description->fill.abs_x); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, obj->rp->custom->description->fill.abs_y); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_description_get_text(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushstring(L, obj->rp->custom->description->text.text); + return 1; +} + +static int +_edje_lua_description_get_text_class(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushstring(L, obj->rp->custom->description->text.text_class); + return 1; +} + +static int +_edje_lua_description_get_text_font(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushstring(L, obj->rp->custom->description->text.text_class); + return 1; +} + +static int +_edje_lua_description_get_text_style(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushstring(L, obj->rp->custom->description->text.style); + return 1; +} + +static int +_edje_lua_description_get_text_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + lua_pushnumber(L, obj->rp->custom->description->text.size); + return 1; +} + +static int +_edje_lua_description_get_text_fit(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushboolean(L, obj->rp->custom->description->text.fit_x); + lua_rawseti(L, -2, 1); + lua_pushboolean(L, obj->rp->custom->description->text.fit_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_text_min(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->text.min_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->text.min_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_text_max(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, obj->rp->custom->description->text.max_x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, obj->rp->custom->description->text.max_y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_text_align(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + lua_createtable(L, 2, 0); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->text.align.x)); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, TO_DOUBLE(obj->rp->custom->description->text.align.y)); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_description_get_visible(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_pushboolean(L, obj->rp->custom->description->visible); + return 1; +} + +const luaL_Reg lDescription_get[] = { + {"alignment", _edje_lua_description_get_alignment}, + {"min", _edje_lua_description_get_min}, + {"max", _edje_lua_description_get_max}, + {"step", _edje_lua_description_get_step}, + {"aspect", _edje_lua_description_get_aspect}, + {"aspect_pref", _edje_lua_description_get_aspect_pref}, + {"color", _edje_lua_description_get_color}, + {"color2", _edje_lua_description_get_color2}, + {"color3", _edje_lua_description_get_color3}, + {"color_class", _edje_lua_description_get_color_class}, + {"rel1", _edje_lua_description_get_rel1}, + {"rel1_to", _edje_lua_description_get_rel1_to}, + {"rel1_offset", _edje_lua_description_get_rel1_offset}, + {"rel2", _edje_lua_description_get_rel2}, + {"rel2_to", _edje_lua_description_get_rel2_to}, + {"rel2_offset", _edje_lua_description_get_rel2_offset}, + {"image", _edje_lua_description_get_image}, + {"border", _edje_lua_description_get_border}, + {"fill_smooth", _edje_lua_description_get_fill_smooth}, + {"fill_pos", _edje_lua_description_get_fill_pos}, + {"fill_size", _edje_lua_description_get_fill_size}, + {"text", _edje_lua_description_get_text}, + {"text_class", _edje_lua_description_get_text_class}, + {"text_font", _edje_lua_description_get_text_font}, + {"text_style", _edje_lua_description_get_text_style}, + {"text_size", _edje_lua_description_get_text_size}, + {"text_fit", _edje_lua_description_get_text_fit}, + {"text_min", _edje_lua_description_get_text_min}, + {"text_max", _edje_lua_description_get_text_max}, + {"text_align", _edje_lua_description_get_text_align}, + {"visible", _edje_lua_description_get_visible}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_description_set_alignment(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->align.x = FROM_DOUBLE(luaL_checknumber(L, -2)); + obj->rp->custom->description->align.y = FROM_DOUBLE(luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_description_set_min(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->min.w = luaL_checkint(L, -2); + obj->rp->custom->description->min.h = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_max(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->max.w = luaL_checkint(L, -2); + obj->rp->custom->description->max.h = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_step(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->step.x = luaL_checkint(L, -2); + obj->rp->custom->description->step.y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_aspect(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->aspect.min = FROM_DOUBLE(luaL_checknumber(L, -2)); + obj->rp->custom->description->aspect.max = FROM_DOUBLE(luaL_checknumber(L, -1)); + return 0; + +} + +static int +_edje_lua_description_set_aspect_pref(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + obj->rp->custom->description->aspect.prefer = luaL_checknumber(L, 2); + return 0; + +} + +static int +_edje_lua_description_set_color(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->color.r = luaL_checkint(L, -4); + obj->rp->custom->description->color.g = luaL_checkint(L, -3); + obj->rp->custom->description->color.b = luaL_checkint(L, -2); + obj->rp->custom->description->color.a = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_color2(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->color2.r = luaL_checkint(L, -4); + obj->rp->custom->description->color2.g = luaL_checkint(L, -3); + obj->rp->custom->description->color2.b = luaL_checkint(L, -2); + obj->rp->custom->description->color2.a = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_color3(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->color3.r = luaL_checkint(L, -4); + obj->rp->custom->description->color3.g = luaL_checkint(L, -3); + obj->rp->custom->description->color3.b = luaL_checkint(L, -2); + obj->rp->custom->description->color3.a = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_color_class(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + obj->rp->custom->description->color_class = (char *)luaL_checkstring(L, 2); + return 0; +} + +static int +_edje_lua_description_set_rel1(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel1.relative_x = FROM_DOUBLE(luaL_checknumber(L, -2)); + obj->rp->custom->description->rel1.relative_y = FROM_DOUBLE(luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_description_set_rel1_to(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel1.id_x = luaL_checknumber(L, -2); + obj->rp->custom->description->rel1.id_y = luaL_checknumber(L, -1); + if (obj->rp->param1.description->rel1.id_x >= 0) + obj->rp->param1.rel1_to_x = obj->ed->table_parts[obj->rp->param1.description->rel1.id_x % obj->ed->table_parts_size]; + if (obj->rp->param1.description->rel1.id_y >= 0) + obj->rp->param1.rel1_to_y = obj->ed->table_parts[obj->rp->param1.description->rel1.id_y % obj->ed->table_parts_size]; + return 0; +} + +static int +_edje_lua_description_set_rel1_offset(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel1.offset_x = luaL_checkint(L, -2); + obj->rp->custom->description->rel1.offset_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_rel2(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel2.relative_x = FROM_DOUBLE(luaL_checknumber(L, -2)); + obj->rp->custom->description->rel2.relative_y = FROM_DOUBLE(luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_description_set_rel2_to(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel2.id_x = luaL_checknumber(L, -2); + obj->rp->custom->description->rel2.id_y = luaL_checknumber(L, -1); + if (obj->rp->param1.description->rel2.id_x >= 0) + obj->rp->param1.rel2_to_x = obj->ed->table_parts[obj->rp->param1.description->rel2.id_x % obj->ed->table_parts_size]; + if (obj->rp->param1.description->rel2.id_y >= 0) + obj->rp->param1.rel2_to_y = obj->ed->table_parts[obj->rp->param1.description->rel2.id_y % obj->ed->table_parts_size]; + return 0; +} + +static int +_edje_lua_description_set_rel2_offset(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->rel2.offset_x = luaL_checkint(L, -2); + obj->rp->custom->description->rel2.offset_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_image(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + obj->rp->custom->description->image.id = + edje_edit_image_id_get(obj->ed->obj, (char *)luaL_checkstring(L, 2)); + return 0; +} + +static int +_edje_lua_description_set_border(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->border.l = luaL_checkint(L, -2); + obj->rp->custom->description->border.r = luaL_checkint(L, -1); + obj->rp->custom->description->border.t = luaL_checkint(L, -2); + obj->rp->custom->description->border.b = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_fill_smooth(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->fill.smooth = lua_toboolean(L, 2); + return 0; +} + +static int +_edje_lua_description_set_fill_pos(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->fill.pos_rel_x = luaL_checkint(L, -2); + obj->rp->custom->description->fill.pos_rel_y = luaL_checkint(L, -1); + obj->rp->custom->description->fill.pos_abs_x = luaL_checkint(L, -2); + obj->rp->custom->description->fill.pos_abs_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_fill_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_IMAGE)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + obj->rp->custom->description->fill.rel_x = luaL_checkint(L, -2); + obj->rp->custom->description->fill.rel_y = luaL_checkint(L, -1); + obj->rp->custom->description->fill.abs_x = luaL_checkint(L, -2); + obj->rp->custom->description->fill.abs_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_text(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->text.text = (char *)luaL_checkstring(L, 2); + return 0; +} + +static int +_edje_lua_description_set_text_class(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->text.text_class = + (char *)luaL_checkstring(L, 2); + return 0; +} + +static int +_edje_lua_description_set_text_font(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->text.font = (char *)luaL_checkstring(L, 2); + return 0; +} + +static int +_edje_lua_description_set_text_style(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->text.style = (char *)luaL_checkstring(L, 2); + return 0; +} + +static int +_edje_lua_description_set_text_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + obj->rp->custom->description->text.size = luaL_checkint(L, 2); + return 0; +} + +static int +_edje_lua_description_set_text_fit(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->text.fit_x = lua_toboolean(L, -2); + obj->rp->custom->description->text.fit_y = lua_toboolean(L, -1); + return 0; +} + +static int +_edje_lua_description_set_text_min(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->text.min_x = luaL_checkint(L, -2); + obj->rp->custom->description->text.min_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_text_max(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT) + && (obj->rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->text.max_x = luaL_checkint(L, -2); + obj->rp->custom->description->text.max_y = luaL_checkint(L, -1); + return 0; +} + +static int +_edje_lua_description_set_text_align(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if ((obj->rp->part->type != EDJE_PART_TYPE_TEXT)) + return 0; + if (!obj->rp->custom) return 0; + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->rp->custom->description->text.align.x = FROM_DOUBLE(luaL_checknumber(L, -2)); + obj->rp->custom->description->text.align.y = FROM_DOUBLE(luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_description_set_visible(lua_State *L) +{ + Edje_Lua_Edje_Part_Description *obj = + _edje_lua_checkudata(L, 1, &mDescription); + if (!obj->rp->custom) return 0; + obj->rp->custom->description->visible = lua_toboolean(L, 2); + return 0; +} + +const luaL_Reg lDescription_set[] = { + {"alignment", _edje_lua_description_set_alignment}, + {"min", _edje_lua_description_set_min}, + {"max", _edje_lua_description_set_max}, + {"step", _edje_lua_description_set_step}, + {"aspect", _edje_lua_description_set_aspect}, + {"aspect_pref", _edje_lua_description_set_aspect_pref}, + {"color", _edje_lua_description_set_color}, + {"color2", _edje_lua_description_set_color2}, + {"color3", _edje_lua_description_set_color3}, + {"color_class", _edje_lua_description_set_color_class}, + {"rel1", _edje_lua_description_set_rel1}, + {"rel1_to", _edje_lua_description_set_rel1_to}, + {"rel1_offset", _edje_lua_description_set_rel1_offset}, + {"rel2", _edje_lua_description_set_rel2}, + {"rel2_to", _edje_lua_description_set_rel2_to}, + {"rel2_offset", _edje_lua_description_set_rel2_offset}, + {"image", _edje_lua_description_set_image}, + {"border", _edje_lua_description_set_border}, + {"fill_smooth", _edje_lua_description_set_fill_smooth}, + {"fill_pos", _edje_lua_description_set_fill_pos}, + {"fill_size", _edje_lua_description_set_fill_size}, + {"text", _edje_lua_description_set_text}, + {"text_class", _edje_lua_description_set_text_class}, + {"text_font", _edje_lua_description_set_text_font}, + {"text_style", _edje_lua_description_set_text_style}, + {"text_size", _edje_lua_description_set_text_size}, + {"text_fit", _edje_lua_description_set_text_fit}, + {"text_min", _edje_lua_description_set_text_min}, + {"text_max", _edje_lua_description_set_text_max}, + {"text_align", _edje_lua_description_set_text_align}, + {"visible", _edje_lua_description_set_visible}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lPart_get[]; + +const luaL_Reg lPart_set[]; + +const luaL_Reg lPart_fn[]; + +const Edje_Lua_Reg mPart = { + lNil, + lPart_get, + lPart_set, + lPart_fn +}; + +static void +_edje_lua_edje_part_del_cb(void *data, __UNUSED__ Evas * e, Evas_Object * obj, + __UNUSED__ void *event_info) +{ + //printf("_edje_lua_object_delete_cb\n"); + lua_State *L = data; + _edje_lua_get_reg(L, obj); + Edje_Lua_Edje_Part_Object *udata = _edje_lua_checkudata(L, -1, &mPart); + lua_pop(L, 1); + _edje_lua_free_reg(L, udata); // created in _edje_lua_group_mt_index + _edje_lua_free_reg(L, obj); // created in _edje_lua_group_mt_index +} + +const Edje_Lua_Reg *cPart[] = { + &mClass, + &mObject, + &mPart, + NULL // sentinel +}; + +static int +_edje_lua_part_get_swallow(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Evas_Object *swa = edje_object_part_swallow_get(obj->ed->obj, obj->key); + _edje_lua_get_reg(L, swa); + // TODO create object if it does not already exist? + return 1; +} + +static int +_edje_lua_part_get_type(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushnumber(L, edje_edit_part_type_get(obj->ed->obj, obj->key)); + return 1; +} + +static int +_edje_lua_part_get_effect(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushnumber(L, edje_edit_part_effect_get(obj->ed->obj, obj->key)); + return 1; +} + +static int +_edje_lua_part_get_mouse_events(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushboolean(L, edje_edit_part_mouse_events_get(obj->ed->obj, obj->key)); + return 1; +} + +static int +_edje_lua_part_get_repeat_events(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushboolean(L, edje_edit_part_repeat_events_get(obj->ed->obj, obj->key)); + return 1; +} + +static int +_edje_lua_part_get_states_list(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Eina_List *slist = edje_edit_part_states_list_get(obj->ed->obj, obj->key); + Eina_List *ilist; + lua_newtable(L); + int i = 1; + for (ilist = slist; ilist; ilist = eina_list_next(ilist)) + { + lua_pushstring(L, eina_list_data_get(ilist)); + lua_rawseti(L, -2, i++); + } + edje_edit_string_list_free(slist); + return 1; +}; + +static int +_edje_lua_part_get_state(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + const char *state; + double val; + state = edje_object_part_state_get(obj->ed->obj, obj->key, &val); + lua_createtable(L, 2, 0); + lua_pushstring(L, state); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, val); + lua_rawseti(L, -2, 2); + return 1; +}; + +static int +_edje_lua_part_get_text(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushstring(L, edje_object_part_text_get(obj->ed->obj, obj->key)); + return 1; +}; + +static int +_edje_lua_part_get_text_selection(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushstring(L, + edje_object_part_text_selection_get(obj->ed->obj, obj->key)); + return 1; +}; + +static int +_edje_lua_part_get_drag_dir(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushnumber(L, edje_object_part_drag_dir_get(obj->ed->obj, obj->key)); + return 1; +} + +static int +_edje_lua_part_get_drag_value(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + double dx, dy; + edje_object_part_drag_value_get(obj->ed->obj, obj->key, &dx, &dy); + lua_createtable(L, 2, 0); + lua_pushnumber(L, dx); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, dy); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_part_get_drag_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + double dx, dy; + edje_object_part_drag_size_get(obj->ed->obj, obj->key, &dx, &dy); + lua_createtable(L, 2, 0); + lua_pushnumber(L, dx); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, dy); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_part_get_drag_step(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + double dx, dy; + edje_object_part_drag_step_get(obj->ed->obj, obj->key, &dx, &dy); + lua_createtable(L, 2, 0); + lua_pushnumber(L, dx); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, dy); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_part_get_drag_page(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + double dx, dy; + edje_object_part_drag_page_get(obj->ed->obj, obj->key, &dx, &dy); + lua_createtable(L, 2, 0); + lua_pushnumber(L, dx); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, dy); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_part_get_text_cursor_geometry(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Evas_Coord x, y, w, h; + edje_object_part_text_cursor_geometry_get(obj->ed->obj, obj->key, + &x, &y, &w, &h); + lua_createtable(L, 4, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_part_get_geometry(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Evas_Coord x, y, w, h; + edje_object_part_geometry_get(obj->ed->obj, obj->key, &x, &y, &w, &h); + lua_createtable(L, 4, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 3); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 4); + return 1; +} + +static int +_edje_lua_part_get_table_col_row_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + int cols, rows; + edje_object_part_table_col_row_size_get(obj->ed->obj, obj->key, &cols, &rows); + lua_createtable(L, 2, 0); + lua_pushnumber(L, cols); lua_rawseti(L, -2, 1); + lua_pushnumber(L, rows); lua_rawseti(L, -2, 2); + return 1; +} + +static int _edje_lua_part_fn_custom_state(lua_State *L); + +const luaL_Reg lPart_get[] = { + {"custom_state", _edje_lua_part_fn_custom_state}, + {"Swallow", _edje_lua_part_get_swallow}, //TODO it the capital S correct? + + {"drag_dir", _edje_lua_part_get_drag_dir}, + {"drag_value", _edje_lua_part_get_drag_value}, + {"drag_size", _edje_lua_part_get_drag_size}, + {"drag_step", _edje_lua_part_get_drag_step}, + {"drag_page", _edje_lua_part_get_drag_page}, + + {"type", _edje_lua_part_get_type}, + {"effect", _edje_lua_part_get_effect}, + {"mouse_events", _edje_lua_part_get_mouse_events}, + {"repeat_events", _edje_lua_part_get_repeat_events}, + {"states_list", _edje_lua_part_get_states_list}, + {"state", _edje_lua_part_get_state}, + + {"text", _edje_lua_part_get_text}, + {"text_selection", _edje_lua_part_get_text_selection}, + {"text_cursor_geometry", _edje_lua_part_get_text_cursor_geometry}, + + {"geometry", _edje_lua_part_get_geometry}, + {"part_col_row_size", _edje_lua_part_get_table_col_row_size}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_part_set_effect(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_edit_part_effect_set(obj->ed->obj, obj->key, luaL_checkint(L, 2)); + return 0; +} + +static int +_edje_lua_part_set_mouse_events(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_edit_part_mouse_events_set(obj->ed->obj, obj->key, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_part_set_repeat_events(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_edit_part_repeat_events_set(obj->ed->obj, obj->key, + lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_part_set_state(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + _edje_part_description_apply(obj->ed, obj->rp, + luaL_checkstring(L, -2), luaL_checknumber(L, -1), + NULL, 0.0); + _edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR, ZERO, ZERO, ZERO); + _edje_recalc(obj->ed); + return 0; +} + +static int +_edje_lua_part_set_tween_state(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + lua_rawgeti(L, 2, 3); + lua_rawgeti(L, 2, 4); + lua_rawgeti(L, 2, 5); + _edje_part_description_apply(obj->ed, obj->rp, + luaL_checkstring(L, -4), luaL_checknumber(L, -3), + luaL_checkstring(L, -2), luaL_checknumber(L, -1)); + _edje_part_pos_set(obj->ed, obj->rp, EDJE_TWEEN_MODE_LINEAR, + FROM_DOUBLE(luaL_checknumber(L, -5)), ZERO, ZERO); + _edje_recalc(obj->ed); + return 0; +} + +static int +_edje_lua_part_set_text(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_object_part_text_set(obj->ed->obj, obj->key, luaL_checkstring(L, 2)); + return 0; +} + +static int +_edje_lua_part_set_drag_value(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + edje_object_part_drag_value_set(obj->ed->obj, obj->key, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_part_set_drag_size(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + edje_object_part_drag_size_set(obj->ed->obj, obj->key, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_part_set_drag_step(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + edje_object_part_drag_step_set(obj->ed->obj, obj->key, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +static int +_edje_lua_part_set_drag_page(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + edje_object_part_drag_page_set(obj->ed->obj, obj->key, + luaL_checknumber(L, -2), + luaL_checknumber(L, -1)); + return 0; +} + +const luaL_Reg lPart_set[] = { + {"drag_value", _edje_lua_part_set_drag_value}, + {"drag_size", _edje_lua_part_set_drag_size}, + {"drag_step", _edje_lua_part_set_drag_step}, + {"drag_page", _edje_lua_part_set_drag_page}, + + {"effect", _edje_lua_part_set_effect}, + {"mouse_events", _edje_lua_part_set_mouse_events}, + {"repeat_events", _edje_lua_part_set_repeat_events}, + {"state", _edje_lua_part_set_state}, + {"tween_state", _edje_lua_part_set_tween_state}, + {"text", _edje_lua_part_set_text}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_part_fn_swallow(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *swa = _edje_lua_checkudata(L, 2, &mObject); + edje_object_part_swallow(obj->ed->obj, obj->key, swa->eo); + return 0; +} + +static int +_edje_lua_part_fn_unswallow(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_object_part_unswallow(obj->ed->obj, obj->eo); + return 0; +} + +static int +_edje_lua_part_fn_text_select_none(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_object_part_text_select_none(obj->ed->obj, obj->key); + return 0; +} + +static int +_edje_lua_part_fn_text_select_all(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_object_part_text_select_all(obj->ed->obj, obj->key); + return 0; +} + +static int +_edje_lua_part_fn_text_insert(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + edje_object_part_text_insert(obj->ed->obj, obj->key, luaL_checkstring(L, 2)); + return 0; +} + +static int +_edje_lua_part_fn_custom_state(lua_State *L) +{ + char *name; + float val; + Edje_Part_Description *parent; + Edje_Part_Image_Id *iid; + Eina_List *l; + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + /* check whether this part already has a "custom" state */ + if (obj->rp->custom) + { + _edje_lua_get_reg(L, obj->rp->custom->description); + return 1; + } + + name = (char *)luaL_checkstring(L, 2); // state name + val = luaL_checknumber(L, 3); // state val + if (!(parent = _edje_part_description_find(obj->ed, obj->rp, name, val))) + { + lua_pushnil(L); + return 1; + } + /* now create the custom state */ + Edje_Lua_Edje_Part_Description *tar = + lua_newuserdata(L, sizeof(Edje_Lua_Edje_Part_Description)); + tar->rp = obj->rp; + _edje_lua_set_class(L, -1, cDescription); + _edje_lua_new_reg(L, -1, tar); // freed in edje_load.c::_edje_file_del + if (!(tar->pd = calloc(1, sizeof(Edje_Part_Description)))) + { + lua_pushnil(L); + return 1; + } + + obj->rp->custom = eina_mempool_malloc(_edje_real_part_state_mp, sizeof (Edje_Real_Part_State)); + if (!obj->rp->custom) + { + free(tar->pd); + tar->pd = NULL; + lua_pushnil(L); + return 1; + } + + *(tar->pd) = *parent; + tar->pd->state.name = (char *)eina_stringshare_add("custom"); + tar->pd->state.value = 0.0; + /* + * make sure all the allocated memory is getting copied, + * not just referenced + */ + tar->pd->image.tween_list = NULL; + EINA_LIST_FOREACH(parent->image.tween_list, l, iid) + { + Edje_Part_Image_Id *iid_new; + iid_new = calloc(1, sizeof(Edje_Part_Image_Id)); + iid_new->id = iid->id; + + tar->pd->image.tween_list = + eina_list_append(tar->pd->image.tween_list, iid_new); + } +#define DUP(x) x ? (char *)eina_stringshare_add(x) : NULL + tar->pd->color_class = DUP(tar->pd->color_class); + tar->pd->text.text = DUP(tar->pd->text.text); + tar->pd->text.text_class = DUP(tar->pd->text.text_class); + tar->pd->text.font = DUP(tar->pd->text.font); + tar->pd->text.style = DUP(tar->pd->text.style); +#undef DUP + obj->rp->custom->description = tar->pd; + _edje_lua_new_reg(L, -1, obj->rp->custom->description); // freed in edje_load.c::_edje_file_del + return 1; +} + +static int +_edje_lua_part_fn_table_pack(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + edje_object_part_table_pack(obj->ed->obj, obj->key, tar->eo, + luaL_checkint(L, 3), + luaL_checkint(L, 4), + luaL_checkint(L, 5), + luaL_checkint(L, 6))); + return 1; +} + +static int +_edje_lua_part_fn_table_unpack(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + edje_object_part_table_unpack(obj->ed->obj, obj->key, tar->eo)); + return 1; +} + +static int +_edje_lua_part_fn_table_clear(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushboolean(L, + edje_object_part_table_clear(obj->ed->obj, obj->key, lua_toboolean(L, 2))); + return 1; +} + +static int +_edje_lua_part_fn_box_append(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + edje_object_part_box_append(obj->ed->obj, obj->key, tar->eo)); + return 1; +} + +static int +_edje_lua_part_fn_box_prepend(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + edje_object_part_box_prepend(obj->ed->obj, obj->key, tar->eo)); + return 1; +} + +static int +_edje_lua_part_fn_box_insert_before(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + Edje_Lua_Evas_Object *ref = _edje_lua_checkudata(L, 3, &mObject); + lua_pushboolean(L, + edje_object_part_box_insert_before(obj->ed->obj, obj->key, tar->eo, ref->eo)); + return 1; +} + +static int +_edje_lua_part_fn_box_insert_at(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + lua_pushboolean(L, + edje_object_part_box_insert_at(obj->ed->obj, obj->key, tar->eo, luaL_checkint(L, 3))); + return 1; +} + +static int +_edje_lua_part_fn_box_remove(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + Edje_Lua_Evas_Object *tar = _edje_lua_checkudata(L, 2, &mObject); + edje_object_part_box_remove(obj->ed->obj, obj->key, tar->eo); + lua_pushvalue(L, 2); + return 1; +} + +static int +_edje_lua_part_fn_box_remove_at(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + _edje_lua_get_reg(L, edje_object_part_box_remove_at(obj->ed->obj, obj->key, luaL_checkint(L, 2))); + return 1; +} + +static int +_edje_lua_part_fn_box_remove_all(lua_State *L) +{ + Edje_Lua_Edje_Part_Object *obj = _edje_lua_checkudata(L, 1, &mPart); + lua_pushboolean(L, + edje_object_part_box_remove_all(obj->ed->obj, obj->key, lua_toboolean(L, 2))); + return 1; +} + +const luaL_Reg lPart_fn[] = { + {"swallow", _edje_lua_part_fn_swallow}, + {"unswallow", _edje_lua_part_fn_unswallow}, + + {"custom_state", _edje_lua_part_fn_custom_state}, + + {"text_select_none", _edje_lua_part_fn_text_select_none}, + {"text_select_all", _edje_lua_part_fn_text_select_all}, + {"text_insert", _edje_lua_part_fn_text_insert}, + + {"table_pack", _edje_lua_part_fn_table_pack}, + {"table_unpack", _edje_lua_part_fn_table_unpack}, + {"table_clear", _edje_lua_part_fn_table_clear}, + + {"box_append", _edje_lua_part_fn_box_append}, + {"box_prepend", _edje_lua_part_fn_box_prepend}, + {"box_insert_before", _edje_lua_part_fn_box_insert_before}, + {"box_insert_at", _edje_lua_part_fn_box_insert_at}, + {"box_remove", _edje_lua_part_fn_box_remove}, + {"box_remove_at", _edje_lua_part_fn_box_remove_at}, + {"box_remove_all", _edje_lua_part_fn_box_remove_all}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lGroup_mt[]; + +const luaL_Reg lGroup_get[]; + +const luaL_Reg lGroup_set[]; + +const luaL_Reg lGroup_fn[]; + +const Edje_Lua_Reg mGroup = { + lGroup_mt, + lGroup_get, + lGroup_set, + lGroup_fn +}; + +const Edje_Lua_Reg *cGroup[] = { + &mClass, + &mObject, + &mGroup, + NULL // sentinel +}; + +static int +_edje_lua_group_mt_index(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_getmetatable(L, 1); + if (!_edje_lua_look_fn(L)) + { + // look in lGroup_fn + if (!_edje_lua_look_get(L)) + { + // look in lGroup_get + const char *key = luaL_checkstring(L, 2); + Edje *ed = _edje_fetch(obj->eo); + Edje_Real_Part *rp = _edje_real_part_recursive_get(ed, key); + if (rp) + { + // check if lua userdata exists + Evas_Object *part = (Evas_Object *) edje_object_part_object_get(obj->eo, key); + _edje_lua_get_reg(L, part); + if (lua_isnil(L, -1)) + { + // create it + lua_pop(L, 1); + Edje_Lua_Edje_Part_Object *tar = + lua_newuserdata(L, sizeof(Edje_Lua_Edje_Part_Object)); + tar->eo = part; + tar->ed = ed; + tar->key = key; + tar->L = L; + tar->rp = rp; + _edje_lua_set_class(L, -1, cPart); + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_edje_part_del_cb + _edje_lua_new_reg(L, -1, part); // freed in _edje_lua_edje_part_del_cb + evas_object_event_callback_add(tar->eo, + EVAS_CALLBACK_DEL, + _edje_lua_edje_part_del_cb, + L); + } + } + else + { + // look in obj environment table + lua_getfenv(L, 1); + lua_pushvalue(L, 2); // key + lua_rawget(L, -2); + } + } + } + return 1; +} + +const luaL_Reg lGroup_mt[] = { + {"__index", _edje_lua_group_mt_index}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_group_get_group(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + const char *file, *group; + edje_object_file_get(obj->eo, &file, &group); + lua_pushstring(L, group); + return 1; +} + +static int +_edje_lua_group_get_mouse(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + int x, y; + evas_pointer_canvas_xy_get(evas_object_evas_get(obj->eo), &x, &y); + x -= obj->ed->x; + y -= obj->ed->y; + lua_createtable(L, 2, 0); + lua_pushnumber(L, x); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, y); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_group_get_mouse_buttons(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushnumber(L, evas_pointer_button_down_mask_get(obj->ed->evas)); + return 1; +} + +static int +_edje_lua_group_get_size_min(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + int w, h; + edje_object_size_min_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_group_get_size_max(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + int w, h; + edje_object_size_max_get(obj->eo, &w, &h); + lua_createtable(L, 2, 0); + lua_pushnumber(L, w); + lua_rawseti(L, -2, 1); + lua_pushnumber(L, h); + lua_rawseti(L, -2, 2); + return 1; +} + +static int +_edje_lua_group_get_scale(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushnumber(L, edje_object_scale_get(obj->eo)); + return 1; +} + +static int +_edje_lua_group_get_load_error(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushnumber(L, edje_object_load_error_get(obj->eo)); + return 1; +} + +static int +_edje_lua_group_get_load_error_str(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushstring(L, edje_load_error_str(edje_object_load_error_get(obj->eo))); + return 1; +} + +static int +_edje_lua_group_get_play(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushboolean(L, edje_object_play_get(obj->eo)); + return 1; +} + +static int +_edje_lua_group_get_animation(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + lua_pushboolean(L, edje_object_animation_get(obj->eo)); + return 1; +} + +static int +_edje_lua_group_get_frametime(lua_State *L) +{ + lua_pushnumber(L, edje_frametime_get()); + return 1; +} + +const luaL_Reg lGroup_get[] = { + {"group", _edje_lua_group_get_group}, + {"mouse", _edje_lua_group_get_mouse}, + {"mouse_buttons", _edje_lua_group_get_mouse_buttons}, + {"size_min", _edje_lua_group_get_size_min}, + {"size_max", _edje_lua_group_get_size_max}, + {"scale", _edje_lua_group_get_scale}, + {"load_error", _edje_lua_group_get_load_error}, + {"load_error_str", _edje_lua_group_get_load_error_str}, + {"play", _edje_lua_group_get_play}, + {"animation", _edje_lua_group_get_animation}, + {"frametime", _edje_lua_group_get_frametime}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_group_set_group(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_file_set(obj->eo, obj->ed->file->path, luaL_checkstring(L, 2)); + return 0; +} + +static int +_edje_lua_group_set_size_min(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->ed->collection->prop.min.w = luaL_checkint(L, -2); + obj->ed->collection->prop.min.h = luaL_checkint(L, -1); + obj->ed->dirty = 1; + _edje_recalc(obj->ed); + return 0; +} + +static int +_edje_lua_group_set_size_max(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + luaL_checktype(L, 2, LUA_TTABLE); + lua_rawgeti(L, 2, 1); + lua_rawgeti(L, 2, 2); + obj->ed->collection->prop.max.w = luaL_checkint(L, -2); + obj->ed->collection->prop.max.h = luaL_checkint(L, -1); + obj->ed->dirty = 1; + _edje_recalc(obj->ed); + return 0; +} + +static int +_edje_lua_group_set_scale(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_scale_set(obj->eo, luaL_checknumber(L, 2)); + return 0; +} + +static int +_edje_lua_group_set_play(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_play_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static int +_edje_lua_group_set_animation(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_animation_set(obj->eo, lua_toboolean(L, 2)); + return 0; +} + +static void +_edje_lua_group_text_change_cb(void* data, Evas_Object *obj, const char* part) +{ + Edje_Lua_Ref *ref = data; + lua_State *L = ref->L; + int err_code; + + _edje_lua_get_ref(L, ref); + _edje_lua_get_reg(L, obj); + lua_pushstring(L, part); + + if ((err_code = lua_pcall(L, 2, 0, 0))) + _edje_lua_error(L, err_code); +} + +static int +_edje_lua_group_set_text_change_cb(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_text_change_cb_set(obj->eo, _edje_lua_group_text_change_cb, _edje_lua_new_ref(L, 2)); + return 0; +} + +static int +_edje_lua_group_set_frametime(lua_State *L) +{ + edje_frametime_set(luaL_checknumber(L, 2)); + return 0; +} +const luaL_Reg lGroup_set[] = { + {"group", _edje_lua_group_set_group}, + {"size_min", _edje_lua_group_set_size_min}, + {"size_max", _edje_lua_group_set_size_max}, + {"scale", _edje_lua_group_set_scale}, + {"play", _edje_lua_group_set_play}, + {"animation", _edje_lua_group_set_animation}, + {"text_change_cb", _edje_lua_group_set_text_change_cb}, + {"frametime", _edje_lua_group_set_frametime}, + {NULL, NULL} // sentinel +}; + +static int +_edje_lua_group_fn_timer(lua_State *L) +{ + Edje_Lua_Timer *tar = lua_newuserdata(L, sizeof(Edje_Lua_Timer)); + + _edje_lua_set_class(L, -1, cTimer); + /* ^^^^^^^^^^^^^^^^(L, index, class) + lua_newtable(L); + if (index < 0) + lua_setfenv(L, index - 1); + else + lua_setfenv(L, index); + + _edje_lua_get_metatable(L, class); + if (index < 0) + lua_setmetatable(L, index - 1); + else + lua_setmetatable(L, index); + */ + + tar->et = ecore_timer_add(luaL_checknumber(L, 2), _edje_lua_timer_cb, tar); + tar->L = L; + + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_timer_cb/del + /* ^^^^^^^^^^^^^^(L, index, ptr) + lua_pushvalue(L, index); + lua_pushlightuserdata(L, ptr); + lua_insert(L, -2); + lua_rawset(L, LUA_REGISTRYINDEX); // freed in _edje_lua_free_reg + */ + + tar->cb = _edje_lua_new_ref(L, 3); // freed in _edje_lua_timer_cb/del + /* ^^^^^^^^^^^^^^^^^^^^^^^^(L, index) + lua_pushvalue(L, index); + Edje_Lua_Ref *ref = malloc(sizeof(Edje_Lua_Ref)); + ref->id = luaL_ref(L, LUA_REGISTRYINDEX); + ref->L = L; + return ref; + */ + return 1; +} + +static int +_edje_lua_group_fn_animator(lua_State *L) +{ + Edje_Lua_Animator *tar = lua_newuserdata(L, sizeof(Edje_Lua_Animator)); + _edje_lua_set_class(L, -1, cAnimator); + tar->ea = ecore_animator_add(_edje_lua_animator_cb, tar); + tar->L = L; + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_animator_cb/del + tar->cb = _edje_lua_new_ref(L, 2); // freed in _edje_lua_animator_cb/del + return 1; +} + +static int +_edje_lua_group_fn_poller(lua_State *L) +{ + int interval; + Edje_Lua_Poller *tar; + tar = lua_newuserdata(L, sizeof(Edje_Lua_Poller)); + _edje_lua_set_class(L, -1, cPoller); + + interval = luaL_checknumber(L, 2); + if ((interval <= 0) || ((interval & 1) != 0)) + { + return 0; + } + + // Only 1 type of poller currently implemented in ecore + tar->ep = ecore_poller_add(ECORE_POLLER_CORE, interval, + _edje_lua_poller_cb, tar); + tar->L = L; + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_poller_cb/del + tar->cb = _edje_lua_new_ref(L, 3); // freed in _edje_lua_poller_cb/del + + return 1; +} + +static int +_edje_lua_group_fn_transform(lua_State *L) +{ + Edje_Lua_Transform *tar = lua_newuserdata(L, sizeof(Edje_Lua_Transform)); + evas_transform_identity_set (&(tar->et)); + _edje_lua_set_class(L, -1, cTransform); + tar->L = L; + return 1; +} + +static int +_edje_lua_group_fn_signal_emit(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_signal_emit(obj->eo, + luaL_checkstring(L, 2), luaL_checkstring(L, 3)); + return 0; +} + +static Edje_Program * +_edje_lua_program_get_byname(Evas_Object * obj, const char *prog_name) +{ + Edje_Program *epr; + int i; + Edje *ed; + ed = _edje_fetch(obj); + if (!ed) + return NULL; + if (!prog_name) + return NULL; + for (i = 0; i < ed->table_programs_size; i++) + { + epr = ed->table_programs[i]; + if ((epr->name) && (strcmp(epr->name, prog_name) == 0)) + return epr; + } + return NULL; +} + +static int +_edje_lua_group_fn_program_run(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + Edje_Program *pr = + _edje_lua_program_get_byname(obj->eo, luaL_checkstring(L, 2)); + if (pr) + _edje_program_run(obj->ed, pr, 0, "", ""); + return 0; +} + +static int +_edje_lua_group_fn_program_stop(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + Edje_Program *pr = + _edje_lua_program_get_byname(obj->eo, luaL_checkstring(L, 2)); + int program_id = pr->id; + Edje_Running_Program *runp; + Eina_List *l; + obj->ed->walking_actions = 1; + EINA_LIST_FOREACH(obj->ed->actions, l, runp) + if (program_id == runp->program->id) + _edje_program_end(obj->ed, runp); + obj->ed->walking_actions = 0; + return 0; +} + +static int +_edje_lua_group_fn_message_send(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + int type = luaL_checkint(L, 2); + void *msg = NULL; + int i; + int size; + switch (type) + { + case EDJE_MESSAGE_NONE: + break; + case EDJE_MESSAGE_SIGNAL: + break; + case EDJE_MESSAGE_STRING: + { + Edje_Message_String *msg_string = + malloc(sizeof(Edje_Message_String)); + msg_string->str = (char *)luaL_checkstring(L, 4); + msg = msg_string; + } + break; + case EDJE_MESSAGE_INT: + { + Edje_Message_Int *msg_int = malloc(sizeof(Edje_Message_Int)); + + msg_int->val = luaL_checkint(L, 4); + msg = msg_int; + } + break; + case EDJE_MESSAGE_FLOAT: + { + Edje_Message_Float *msg_float = malloc(sizeof(Edje_Message_Float)); + + msg_float->val = luaL_checknumber(L, 4); + msg = msg_float; + } + break; + case EDJE_MESSAGE_STRING_SET: + { + if (lua_type(L, 4) != LUA_TTABLE) + break; + size = lua_objlen(L, 4); + Edje_Message_String_Set *msg_string_set = + malloc(sizeof(Edje_Message_String_Set) + + (size - 1) * sizeof(char *)); + msg_string_set->count = size; + for (i = 0; i < size; i++) + { + lua_rawgeti(L, 4, i + 1); + msg_string_set->str[i] = (char *)luaL_checkstring(L, -1); + lua_pop(L, 1); + } + msg = msg_string_set; + } + break; + case EDJE_MESSAGE_INT_SET: + { + if (lua_type(L, 4) != LUA_TTABLE) + break; + size = lua_objlen(L, 4); + Edje_Message_Int_Set *msg_int_set = + malloc(sizeof(Edje_Message_Int_Set) + (size - 1) * sizeof(int)); + msg_int_set->count = size; + for (i = 0; i < size; i++) + { + lua_rawgeti(L, 4, i + 1); + msg_int_set->val[i] = luaL_checkint(L, -1); + lua_pop(L, 1); + } + msg = msg_int_set; + } + break; + case EDJE_MESSAGE_FLOAT_SET: + { + if (lua_type(L, 4) != LUA_TTABLE) + break; + size = lua_objlen(L, 4); + Edje_Message_Float_Set *msg_float_set = + malloc(sizeof(Edje_Message_Float_Set) + + (size - 1) * sizeof(double)); + msg_float_set->count = size; + for (i = 0; i < size; i++) + { + lua_rawgeti(L, 4, i + 1); + msg_float_set->val[i] = luaL_checknumber(L, -1); + lua_pop(L, 1); + } + msg = msg_float_set; + } + break; + case EDJE_MESSAGE_STRING_INT: + { + Edje_Message_String_Int *msg_string_int = + malloc(sizeof(Edje_Message_String_Int)); + msg_string_int->str = (char *)luaL_checkstring(L, 4); + msg_string_int->val = luaL_checkint(L, 5); + msg = msg_string_int; + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + { + Edje_Message_String_Float *msg_string_float = + malloc(sizeof(Edje_Message_String_Float)); + msg_string_float->str = (char *)luaL_checkstring(L, 4); + msg_string_float->val = luaL_checknumber(L, 5); + msg = msg_string_float; + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + { + if (lua_type(L, 5) != LUA_TTABLE) + break; + size = lua_objlen(L, 5); + Edje_Message_String_Int_Set *msg_string_int_set = + malloc(sizeof(Edje_Message_String_Int_Set) + + (size - 1) * sizeof(int)); + msg_string_int_set->str = (char *)luaL_checkstring(L, 4); + msg_string_int_set->count = size; + for (i = 0; i < size; i++) + { + lua_rawgeti(L, 5, i + 1); + msg_string_int_set->val[i] = luaL_checkint(L, -1); + lua_pop(L, 1); + } + msg = msg_string_int_set; + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + { + if (lua_type(L, 5) != LUA_TTABLE) + break; + size = lua_objlen(L, 5); + Edje_Message_String_Float_Set *msg_string_float_set = + malloc(sizeof(Edje_Message_String_Float_Set) + + (size - 1) * sizeof(double)); + msg_string_float_set->str = (char *)luaL_checkstring(L, 4); + msg_string_float_set->count = size; + for (i = 0; i < size; i++) + { + lua_rawgeti(L, 5, i + 1); + msg_string_float_set->val[i] = luaL_checknumber(L, -1); + lua_pop(L, 1); + } + msg = msg_string_float_set; + } + break; + default: + break; + } + + if (msg) + { + edje_object_message_send(obj->eo, type, luaL_checkint(L, 3), msg); + free(msg); + } + + return 0; +} + +static void +_edje_lua_group_signal_callback(void *data, Evas_Object * edj, + const char *signal, const char *source) +{ + Edje_Lua_Ref *cb = data; + lua_State *L = cb->L; + _edje_lua_get_ref(L, cb); // signal callback function + if (lua_isfunction(L, -1)) + { + int err_code; + + _edje_lua_get_reg(L, edj); + lua_pushstring(L, signal); // signal + lua_pushstring(L, source); // source + + if ((err_code = lua_pcall(L, 3, 0, 0))) + _edje_lua_error(L, err_code); + } +} + +static int +_edje_lua_group_fn_signal_callback_add(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + if (lua_type(L, 4) == LUA_TFUNCTION) + { + Edje_Lua_Ref *ref = _edje_lua_new_ref(L, 4); + obj->cb = eina_list_append(obj->cb, ref); + edje_object_signal_callback_add(obj->eo, + luaL_checkstring(L, 2), + luaL_checkstring(L, 3), + _edje_lua_group_signal_callback, + ref); // freed in _edje_lua_group_fn_signal_callback_del + } + return 0; +} + +static int +_edje_lua_group_fn_signal_callback_del(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + Edje_Lua_Ref *ref = edje_object_signal_callback_del(obj->eo, + luaL_checkstring(L, 2), + luaL_checkstring(L, 3), + _edje_lua_group_signal_callback); + obj->cb = eina_list_remove(obj->cb, ref); + _edje_lua_free_ref(L, ref); // created in _edje_lua_group_fn_signal_callback_add + return 0; +} + +static int +_edje_lua_group_fn_freeze(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_freeze(obj->eo); + return 0; +} + +static int +_edje_lua_group_fn_thaw(lua_State *L) +{ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata(L, 1, &mGroup); + edje_object_thaw(obj->eo); + return 0; +} + +const luaL_Reg lGroup_fn[] = { + {"timer", _edje_lua_group_fn_timer}, + {"animator", _edje_lua_group_fn_animator}, + {"poller", _edje_lua_group_fn_poller}, + {"transform", _edje_lua_group_fn_transform}, + {"signal_emit", _edje_lua_group_fn_signal_emit}, + {"message_send", _edje_lua_group_fn_message_send}, + {"program_run", _edje_lua_group_fn_program_run}, + {"program_stop", _edje_lua_group_fn_program_stop}, + {"signal_callback_add", _edje_lua_group_fn_signal_callback_add}, + {"signal_callback_del", _edje_lua_group_fn_signal_callback_del}, + {"freeze", _edje_lua_group_fn_freeze}, + {"thaw", _edje_lua_group_fn_thaw}, + {NULL, NULL} // sentinel +}; + +/* + * Lua bindings + */ + +const luaL_Reg lScript_get[]; + +const luaL_Reg lScript_set[]; + +const luaL_Reg lScript_fn[]; + +const Edje_Lua_Reg mScript = { + lNil, + lScript_get, + lScript_set, + lScript_fn +}; + +const Edje_Lua_Reg *cScript[] = { + &mClass, + &mObject, + &mGroup, + &mScript, + NULL // sentinel +}; + +/* + * macro for adding an evas_object in the lua_script_only object + */ +#define _EDJE_LUA_SCRIPT_FN_ADD(DEF, CLASS, FUNC) \ + static int \ + DEF (lua_State *L) \ + { \ + int set = lua_gettop (L) == 2; \ + Edje_Lua_Evas_Object *obj = _edje_lua_checkudata (L, 1, &mScript); \ + Edje_Lua_Evas_Object *tar = lua_newuserdata (L, sizeof (Edje_Lua_Evas_Object)); \ + _edje_lua_set_class (L, -1, CLASS); \ + tar->eo = FUNC (obj->ed->evas); \ + tar->ed = obj->ed; \ + tar->L = L; \ + tar->cb = NULL; \ + evas_object_move (tar->eo, obj->ed->x, obj->ed->y); \ + _edje_lua_new_reg (L, -1, tar); /* freed in _edje_lua_object_del_cb */ \ + _edje_lua_new_reg (L, -1, tar->eo); /* freed in _edje_lua_object_del_cb */ \ + evas_object_smart_member_add (tar->eo, obj->eo); \ + evas_object_clip_set (tar->eo, obj->ed->clipper); \ + evas_object_event_callback_add (tar->eo, EVAS_CALLBACK_DEL, _edje_lua_object_del_cb, L); \ + if (set) \ + { \ + int err_code; \ + lua_getfield (L, -1, "set"); \ + lua_pushvalue (L, -2); \ + lua_pushvalue (L, 2); \ + if ((err_code = lua_pcall (L, 2, 0, 0))) \ + _edje_lua_error (L, err_code); \ + } \ + return 1; \ + } + +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_rectangle, + cRectangle, + evas_object_rectangle_add) +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_image, + cImage, + evas_object_image_add) +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_table, + cTable, + evas_object_table_add) +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_line, + cLine, + evas_object_line_add) +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_polygon, + cPolygon, + evas_object_polygon_add) +_EDJE_LUA_SCRIPT_FN_ADD(_edje_lua_script_fn_group, cGroup, edje_object_add) + +const luaL_Reg lScript_fn[] = { + {"rectangle", _edje_lua_script_fn_rectangle}, + {"image", _edje_lua_script_fn_image}, + {"table", _edje_lua_script_fn_table}, + {"line", _edje_lua_script_fn_line}, + {"polygon", _edje_lua_script_fn_polygon}, + {"group", _edje_lua_script_fn_group}, + {NULL, NULL} // sentinel +}; + +const luaL_Reg lScript_get[] = { + {NULL, NULL} // sentinel +}; + +const luaL_Reg lScript_set[] = { + {NULL, NULL} // sentinel +}; + +/* + * creates and exports a lua_script_only object + */ +void +_edje_lua_script_fn_new(Edje * ed) +{ + lua_State *L = ed->L; + Edje_Lua_Evas_Object *tar = lua_newuserdata(L, sizeof(Edje_Lua_Evas_Object)); + _edje_lua_set_class(L, -1, cScript); + tar->eo = ed->obj; + tar->ed = ed; + tar->L = L; + tar->cb = NULL; + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_object_del_cb + _edje_lua_new_reg(L, -1, ed); // freed in edje_load.c::_edje_file_del + _edje_lua_new_reg(L, -1, ed->obj); // freed in _edje_lua_object_del_cb + evas_object_event_callback_add(tar->eo, EVAS_CALLBACK_DEL, + _edje_lua_object_del_cb, L); +} + +/* + * creates and exports an Edje group with associated Lua scripts in the parts and programs sections + */ +void +_edje_lua_group_fn_new(Edje * ed) +{ + lua_State *L = ed->L; + Edje_Lua_Evas_Object *tar = lua_newuserdata(L, sizeof(Edje_Lua_Evas_Object)); + _edje_lua_set_class(L, -1, cGroup); + tar->eo = ed->obj; + tar->ed = ed; + tar->L = L; + tar->cb = NULL; + _edje_lua_new_reg(L, -1, tar); // freed in _edje_lua_object_del_cb + _edje_lua_new_reg(L, -1, ed); // freed in edje_load.c::_edje_file_del + _edje_lua_new_reg(L, -1, ed->obj); // freed in _edje_lua_object_del_cb + evas_object_event_callback_add(tar->eo, EVAS_CALLBACK_DEL, + _edje_lua_object_del_cb, L); +} + +/* + * this function loads all the Lua bindings into the global Lua state + */ +static void +_edje_lua_open(lua_State *L) +{ + /* + * export classes + */ + _edje_lua_new_class(L, cTimer); + _edje_lua_new_class(L, cAnimator); + _edje_lua_new_class(L, cPoller); + _edje_lua_new_class(L, cTransform); + _edje_lua_new_class(L, cRectangle); + _edje_lua_new_class(L, cImage); + _edje_lua_new_class(L, cTable); + _edje_lua_new_class(L, cLine); + _edje_lua_new_class(L, cPolygon); + _edje_lua_new_class(L, cGroup); + _edje_lua_new_class(L, cDescription); + _edje_lua_new_class(L, cPart); + _edje_lua_new_class(L, cScript); + + /* + * export constants + */ + _edje_lua_new_const(L, "MESSAGE_NONE", EDJE_MESSAGE_NONE); + _edje_lua_new_const(L, "MESSAGE_SIGNAL", EDJE_MESSAGE_SIGNAL); + _edje_lua_new_const(L, "MESSAGE_STRING", EDJE_MESSAGE_STRING); + _edje_lua_new_const(L, "MESSAGE_INT", EDJE_MESSAGE_INT); + _edje_lua_new_const(L, "MESSAGE_FLOAT", EDJE_MESSAGE_FLOAT); + _edje_lua_new_const(L, "MESSAGE_STRING_SET", EDJE_MESSAGE_STRING_SET); + _edje_lua_new_const(L, "MESSAGE_INT_SET", EDJE_MESSAGE_INT_SET); + _edje_lua_new_const(L, "MESSAGE_FLOAT_SET", EDJE_MESSAGE_FLOAT_SET); + _edje_lua_new_const(L, "MESSAGE_STRING_INT", EDJE_MESSAGE_STRING_INT); + _edje_lua_new_const(L, "MESSAGE_STRING_FLOAT", EDJE_MESSAGE_STRING_FLOAT); + _edje_lua_new_const(L, "MESSAGE_STRING_INT_SET", EDJE_MESSAGE_STRING_INT_SET); + _edje_lua_new_const(L, "MESSAGE_STRING_FLOAT_SET", EDJE_MESSAGE_STRING_FLOAT_SET); + + _edje_lua_new_const(L, "PART_TYPE_NONE", EDJE_PART_TYPE_NONE); + _edje_lua_new_const(L, "PART_TYPE_RECTANGLE", EDJE_PART_TYPE_RECTANGLE); + _edje_lua_new_const(L, "PART_TYPE_TEXT", EDJE_PART_TYPE_TEXT); + _edje_lua_new_const(L, "PART_TYPE_IMAGE", EDJE_PART_TYPE_IMAGE); + _edje_lua_new_const(L, "PART_TYPE_SWALLOW", EDJE_PART_TYPE_SWALLOW); + _edje_lua_new_const(L, "PART_TYPE_TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK); + _edje_lua_new_const(L, "PART_TYPE_GRADIENT", EDJE_PART_TYPE_GRADIENT); + _edje_lua_new_const(L, "PART_TYPE_GROUP", EDJE_PART_TYPE_GROUP); + _edje_lua_new_const(L, "PART_TYPE_BOX", EDJE_PART_TYPE_BOX); + + _edje_lua_new_const(L, "TEXT_EFFECT_NONE", EDJE_TEXT_EFFECT_NONE); + _edje_lua_new_const(L, "TEXT_EFFECT_PLAIN", EDJE_TEXT_EFFECT_PLAIN); + _edje_lua_new_const(L, "TEXT_EFFECT_OUTLINE", EDJE_TEXT_EFFECT_OUTLINE); + _edje_lua_new_const(L, "TEXT_EFFECT_OTLINE", EDJE_TEXT_EFFECT_SOFT_OUTLINE); + _edje_lua_new_const(L, "TEXT_EFFECT_SHADOW", EDJE_TEXT_EFFECT_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_SOFT_SHADOW", EDJE_TEXT_EFFECT_SOFT_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_OUTLINE_SHADOW", EDJE_TEXT_EFFECT_OUTLINE_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_OUTLINE_SOFT_SHADOW", EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_FAR_SHADOW", EDJE_TEXT_EFFECT_FAR_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_FAR_SOFT_SHADOW", EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW); + _edje_lua_new_const(L, "TEXT_EFFECT_GLOW", EDJE_TEXT_EFFECT_GLOW); + + _edje_lua_new_const(L, "RENDER_BLEND", EVAS_RENDER_BLEND); + _edje_lua_new_const(L, "RENDER_BLEND_REL", EVAS_RENDER_BLEND_REL); + _edje_lua_new_const(L, "RENDER_COPY", EVAS_RENDER_COPY); + _edje_lua_new_const(L, "RENDER_COPY_REL", EVAS_RENDER_COPY_REL); + _edje_lua_new_const(L, "RENDER_ADD", EVAS_RENDER_ADD); + _edje_lua_new_const(L, "RENDER_ADD_REL", EVAS_RENDER_ADD_REL); + _edje_lua_new_const(L, "RENDER_SUB", EVAS_RENDER_SUB); + _edje_lua_new_const(L, "RENDER_SUB_REL", EVAS_RENDER_SUB_REL); + _edje_lua_new_const(L, "RENDER_TINT", EVAS_RENDER_TINT); + _edje_lua_new_const(L, "RENDER_TINT_REL", EVAS_RENDER_TINT_REL); + _edje_lua_new_const(L, "RENDER_MASK", EVAS_RENDER_MASK); + _edje_lua_new_const(L, "RENDER_MUL", EVAS_RENDER_MUL); + + _edje_lua_new_const(L, "BORDER_FILL_NONE", EVAS_BORDER_FILL_NONE); + _edje_lua_new_const(L, "BORDER_FILL_DEFAULT", EVAS_BORDER_FILL_DEFAULT); + _edje_lua_new_const(L, "BORDER_FILL_SOLID", EVAS_BORDER_FILL_SOLID); + + _edje_lua_new_const(L, "POINTER_MODE_AUTOGRAB", EVAS_OBJECT_POINTER_MODE_AUTOGRAB); + _edje_lua_new_const(L, "POINTER_MODE_NOGRAB", EVAS_OBJECT_POINTER_MODE_NOGRAB); + + _edje_lua_new_const(L, "ASPECT_CONTROL_NEITHER", EVAS_ASPECT_CONTROL_NEITHER); + _edje_lua_new_const(L, "ASPECT_CONTROL_HORIZONTAL", EVAS_ASPECT_CONTROL_HORIZONTAL); + _edje_lua_new_const(L, "ASPECT_CONTROL_VERTICAL", EVAS_ASPECT_CONTROL_VERTICAL); + _edje_lua_new_const(L, "ASPECT_CONTROL_BOTH", EVAS_ASPECT_CONTROL_BOTH); + + _edje_lua_new_const(L, "CALLBACK_RENEW", ECORE_CALLBACK_RENEW); + _edje_lua_new_const(L, "CALLBACK_CANCEL", ECORE_CALLBACK_CANCEL); +} + +/* + * main Lua state + * created by edje_init () + * closed by edje_shutdown () + * any other private Lua state inherits from this global state + */ +static lua_State *Ledje = NULL; + +lua_State * +_edje_lua_state_get () +{ + return Ledje; +} + +/* + * custom memory allocation function + * raises an error, if memory usage is above the given maximum + */ +static void * +_edje_lua_alloc(void *ud, void *ptr, size_t osize, size_t nsize) +{ + Edje_Lua_Alloc *ela = ud; + void *ptr2; + + ela->cur += nsize - osize; + if (ela->cur > ela->max) + { + ERR("Edje Lua memory limit of %zu bytes reached (%zu allocated)", + ela->max, ela->cur); + return NULL; + } + if (nsize == 0) + { + free(ptr); /* ANSI requires that free(NULL) has no effect */ + return NULL; + } + + /* ANSI requires that realloc(NULL, size) == malloc(size) */ + ptr2 = realloc(ptr, nsize); + if (ptr2) return ptr2; + ERR("Edje Lua cannot re-allocate %zu bytes", nsize); + return ptr2; +} + +void +_edje_lua_init() +{ + if (Ledje != NULL) return; + /* + * create main Lua state with the custom memory allocation function + */ + static Edje_Lua_Alloc ela = { 1e7, 0 }; // TODO make the memory limit configurable? + Ledje = lua_newstate(_edje_lua_alloc, &ela); + if (!Ledje) + { + ERR("Lua error: Lua state could not be initialized"); + exit(-1); + } + + lua_atpanic(Ledje, _edje_lua_custom_panic); + + /* + * configure Lua garbage collector + * TODO optimize garbage collector for typical edje use or make it configurable + */ + lua_gc(Ledje, LUA_GCSETPAUSE, 200); + lua_gc(Ledje, LUA_GCSETSTEPMUL, 200); + + /* + * sandbox Lua + * no access to io, os and package routines + * no loading and execution of files + * no loading and execution of strings + * no access to the OS environment + */ + luaopen_base(Ledje); + luaopen_table(Ledje); + luaopen_string(Ledje); + luaopen_math(Ledje); + luaopen_os(Ledje); + + /* + * FIXME + * this is just for debug purposes + * remove it in the final version + */ + lua_pushnil(Ledje); + lua_setglobal(Ledje, "load"); + lua_pushnil(Ledje); + lua_setglobal(Ledje, "loadfile"); + lua_pushnil(Ledje); + lua_setglobal(Ledje, "loadstring"); + lua_pushnil(Ledje); + lua_setglobal(Ledje, "dofile"); + lua_pushnil(Ledje); + lua_setglobal(Ledje, "dostring"); + + lua_getglobal(Ledje, "os"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "exit"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "setlocale"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "getenv"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "remove"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "tmpname"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "rename"); + lua_pushnil(Ledje); + lua_setfield(Ledje, -2, "execute"); + lua_pushnil(Ledje); + + /* + * we need a weak value registry + * so that deleted and unused objects can be garbage collected + */ + lua_createtable(Ledje, 1, 0); + //lua_pushstring(Ledje, "v"); + lua_pushstring(Ledje, ""); + lua_setfield(Ledje, -2, "__mode"); + lua_setmetatable(Ledje, LUA_REGISTRYINDEX); + + /* + * load Lua Evas/Edje bindings + */ + _edje_lua_open(Ledje); +} + +void +_edje_lua_shutdown() +{ + if (Ledje == NULL) return; + lua_close(Ledje); + Ledje = NULL; +} + +#endif diff --git a/src/lib/edje_lua2.c b/src/lib/edje_lua2.c new file mode 100644 index 0000000..32fb2e1 --- /dev/null +++ b/src/lib/edje_lua2.c @@ -0,0 +1,4318 @@ +// FIXME: Some error checking would be nice. + + +#include "edje_private.h" +#include + +#define RASTER_FORGOT_WHY "this is here." + + +//--------------------------------------------------------------------------// +#define MAX_LUA_MEM (4 * (1024 * 1024)) +#define ELO "|-ELO" + +#define LC(...) EINA_LOG_DOM_CRIT(_log_domain, __VA_ARGS__) +#define LE(...) EINA_LOG_DOM_ERR(_log_domain, __VA_ARGS__) +#define LW(...) EINA_LOG_DOM_WARN(_log_domain, __VA_ARGS__) +#define LI(...) EINA_LOG_DOM_INFO(_log_domain, __VA_ARGS__) +#define LD(...) EINA_LOG_DOM_DBG(_log_domain, __VA_ARGS__) + +/** +@page luaref Edje Lua scripting + +@section intro Introduction + +Lua is intended for script-only objects at this point (with embryo left +for augmenting standard programs). Since script-only objects effectively +define objects entirely via Lua script (resize handling, event handling +etc. etc.) this places many more demands on them, and thus a more powerful +language is in order. Lua is that language. + +To get you started, here's an example that uses most of this lua API: +@ref lua_script.edc + +Most of these lua functions are wrappers around various evas, ecore, and edje C +functions. Refer to their documentation for more in depth details and up to +date documentation. A lot of this documentation is simple copied from the C +functions it wraps. + +@section args Lua function argument and return syntax + +Some of the lua functions can accept a table as well as separate arguments. +Some of them return tables. + +@section classes Lua classes + +*/ + +/* +Lua functions stack usage. + +In the definition of the lua functions provided, always mention the stack usage, +using the same notation that is used in the Lua 5.1 Reference Manual. +http://www.lua.org/manual/5.1/manual.html#3.7 describes that notation. + +On the other hand, lua discards excess stack entries when control passes back to +it, but it's good to maintain proper discipline. + +Should do the same for the support functions. These ARE more important to check. +*/ + +//--------------------------------------------------------------------------// +typedef struct _Edje_Lua_Alloc Edje_Lua_Alloc; +typedef struct _Edje_Lua_Obj Edje_Lua_Obj; +typedef struct _Edje_Lua_Animator Edje_Lua_Animator; +typedef struct _Edje_Lua_Timer Edje_Lua_Timer; +typedef struct _Edje_Lua_Transition Edje_Lua_Transition; +typedef struct _Edje_Lua_Evas_Object Edje_Lua_Evas_Object; +typedef struct _Edje_Lua_Map Edje_Lua_Map; + +struct _Edje_Lua_Alloc +{ + size_t max, cur; +}; + +struct _Edje_Lua_Obj +{ + EINA_INLIST; + + Edje *ed; + void (*free_func) (void *obj); + const char *meta; +}; + +struct _Edje_Lua_Animator +{ + Edje_Lua_Obj obj; + Ecore_Animator *animator; + int fn_ref; +}; + +struct _Edje_Lua_Timer +{ + Edje_Lua_Obj obj; + Ecore_Timer *timer; + int fn_ref; +}; + +struct _Edje_Lua_Transition +{ + Edje_Lua_Obj obj; + Ecore_Animator *animator; + double transition, start; + int fn_ref; +}; + +struct _Edje_Lua_Evas_Object +{ + Edje_Lua_Obj obj; + Evas_Object *evas_obj; + int x, y; +}; + +struct _Edje_Lua_Map +{ + Edje_Lua_Obj obj; + Evas_Map *map; +}; + + +static void _elua_add_functions(lua_State *L, const char *api, const luaL_Reg *funcs, const char *meta, const char *parent, const char *base); +static Eina_Bool _elua_isa(Edje_Lua_Obj *obj, const char *type); + +//--------------------------------------------------------------------------// +#ifndef RASTER_FORGOT_WHY +static lua_State *lstate = NULL; +#endif +static const char *_elua_key = "key"; +static const char *_elua_objs = "objs"; +/* This is not needed, pcalls don't longjmp(), that's why they are protected. +static jmp_buf panic_jmp; +*/ +static int panics = 0; +static int _log_domain = -1; +static int _log_count = 0; + +// FIXME: methods lua script can provide that edje will call (not done yet): +// // scale set +// // key down +// // key up +// // get dragable pos +// // set dragable pos +// // set drag size, step, page +// // get drag size, step, page +// // dragable step +// // dragable page +// // get part text +// // set part text +// // get swallow part +// // set swallow part +// // unswallow part +// // textclass change +// // colorclass change +// // min size get <- ?? maybe set fn +// // max size get <- ?? maybe set fn +// // min size caclc (min/max restriction) +// // preload +// // preload cancel +// // play set +// // animation set +// // parts extends calc +// // part object get +// // part geometry get +// +// // LATER: all the entry calls +// // LATER: box and table calls +// // LATER: perspective stuff change +// + +// Grumble, pre-declare these. +static const char *_elua_edje_meta = "edje_meta"; +static const char *_elua_evas_meta = "evas_meta"; +static const char *_elua_evas_edje_meta = "evas_edje_meta"; +static const char *_elua_evas_image_meta = "evas_image_meta"; +static const char *_elua_evas_line_meta = "evas_line_meta"; +static const char *_elua_evas_map_meta = "evas_map_meta"; +static const char *_elua_evas_polygon_meta = "evas_polygon_meta"; +static const char *_elua_evas_text_meta = "evas_text_meta"; +static const char *_elua_ecore_animator_meta = "ecore_animator_meta"; +static const char *_elua_ecore_timer_meta = "ecore_timer_meta"; + +static int _elua_obj_gc(lua_State *L); + +static const struct luaL_Reg _elua_edje_gc_funcs [] = +{ + {"__gc", _elua_obj_gc}, // garbage collector func for edje objects + + {NULL, NULL} // end +}; + +static const luaL_Reg _elua_libs[] = +{ + {"", luaopen_base}, +// {LUA_LOADLIBNAME, luaopen_package}, // disable this lib - don't want + {LUA_TABLIBNAME, luaopen_table}, +// {LUA_IOLIBNAME, luaopen_io}, // disable this lib - don't want +// {LUA_OSLIBNAME, luaopen_os}, // FIXME: audit os lib - maybe not provide or only provide specific calls + {LUA_STRLIBNAME, luaopen_string}, + {LUA_MATHLIBNAME, luaopen_math}, +// {LUA_DBLIBNAME, luaopen_debug}, // disable this lib - don't want + + {NULL, NULL} // end +}; + +//--------------------------------------------------------------------------// +static void * +_elua_alloc(void *ud, void *ptr, size_t osize, size_t nsize) +{ + Edje_Lua_Alloc *ela = ud; + void *ptr2; + + ela->cur += nsize - osize; + if (ela->cur > ela->max) + { + ERR("Lua memory limit of %zu bytes reached (%zu allocated)", + ela->max, ela->cur); + return NULL; + } + if (nsize == 0) + { + free(ptr); + return NULL; + } + + ptr2 = realloc(ptr, nsize); + if (ptr2) return ptr2; + ERR("Lua cannot re-allocate %zu bytes", nsize); + return ptr2; +} + +static int +_elua_custom_panic(lua_State *L) // Stack usage [-0, +0, m] +{ + // If we somehow manage to have multiple panics, it's likely due to being out + // of memory in the following lua_tostring() call. + panics++; + if (panics) + { + EINA_LOG_DOM_CRIT(_edje_default_log_dom, "Lua PANICS!!!!!"); + } + else + { + EINA_LOG_DOM_CRIT(_edje_default_log_dom, + "Lua PANIC!!!!!: %s", lua_tostring(L, -1)); // Stack usage [-0, +0, m] + } + // The docs say that this will cause an exit(EXIT_FAILURE) if we return, + // and that we we should long jump some where to avoid that. This is only + // called for things not called from a protected environment. We always + // use pcalls though, except for the library load calls. If we can't load + // the standard libraries, then perhaps a crash is the right thing. + return 0; +} + +// Really only used to manage the pointer to our edje. +static void +_elua_table_ptr_set(lua_State *L, const void *key, const void *val) // Stack usage [-2, +2, e] +{ + lua_pushlightuserdata(L, (void *)key); // Stack usage [-0, +1, -] + lua_pushlightuserdata(L, (void *)val); // Stack usage [-0, +1, -] + lua_settable(L, LUA_REGISTRYINDEX); // Stack usage [-2, +0, e] +} + +static const void * +_elua_table_ptr_get(lua_State *L, const void *key) // Stack usage [-2, +2, e] +{ + const void *ptr; + lua_pushlightuserdata(L, (void *)key); // Stack usage [-0, +1, -] + lua_gettable(L, LUA_REGISTRYINDEX); // Stack usage [-1, +1, e] + ptr = lua_topointer(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + return ptr; +} + +/* XXX: not used +static void +_elua_table_ptr_del(lua_State *L, const void *key) // Stack usage [-2, +2, e] +{ + lua_pushlightuserdata(L, (void *)key); // Stack usage [-0, +1, -] + lua_pushnil(L); // Stack usage [-0, +1, -] + lua_settable(L, LUA_REGISTRYINDEX); // Stack usage [-2, +0, e] +} +*/ + +/* + * Cori: Assumes object to be saved on top of stack + */ +static void +_elua_ref_set(lua_State *L, void *key) // Stack usage [-4, +4, m] +{ + lua_pushlightuserdata(L, &_elua_objs); // Stack usage [-0, +1, -] + lua_rawget(L, LUA_REGISTRYINDEX); // Stack usage [-1, +1, -] + lua_pushlightuserdata(L, key); // Stack usage [-0, +1, -] + lua_pushvalue(L,-3); // Stack usage [-0, +1, -] + lua_rawset(L, -3); // Stack usage [-2, +0, m] + lua_pop(L, 1); // Stack usage [-n, +0, -] +} + +/* + * Cori: Get an object from the object table + */ +static void * +_elua_ref_get(lua_State *L, void *key) // Stack usage [-3, +4, -] +{ + lua_pushlightuserdata(L, &_elua_objs); // Stack usage [-0, +1, -] + lua_rawget(L, LUA_REGISTRYINDEX); // Stack usage [-1, +1, -] + lua_pushlightuserdata(L, key); // Stack usage [-0, +1, -] + lua_rawget(L, -2); // Stack usage [-1, +1, -] + lua_remove(L, -2); // Stack usage [-1, +0, -] + return lua_touserdata(L, -2); // Stack usage [-0, +0, -] +} + +static Edje_Lua_Obj * +_elua_obj_new(lua_State *L, Edje *ed, int size, const char *metatable) // Stack usage [-5, +6, m] +{ + Edje_Lua_Obj *obj; + + obj = (Edje_Lua_Obj *)lua_newuserdata(L, size); // Stack usage [-0, +1, m] + memset(obj, 0, size); + ed->lua_objs = eina_inlist_append(ed->lua_objs, EINA_INLIST_GET(obj)); + + luaL_getmetatable(L, metatable); // Stack usage [-0, +1, -] + lua_setmetatable(L, -2); // Stack usage [-1, +0, -] + obj->ed = ed; + obj->meta = metatable; + + _elua_ref_set(L, obj); // Stack usage [-4, +4, m] + return obj; +} + +static void +_elua_obj_free(lua_State *L __UNUSED__, Edje_Lua_Obj *obj) +{ + if (!obj->free_func) return; + obj->free_func(obj); + obj->ed->lua_objs = eina_inlist_remove(obj->ed->lua_objs, EINA_INLIST_GET(obj)); + obj->free_func = NULL; + obj->ed = NULL; +} + +static int +_elua_obj_gc(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + if (!obj) return 0; + _elua_obj_free(L, obj); + return 0; +} + +static int +_elua_obj_del(lua_State *L) // Stack usage [-0, +0, -] +{ + return _elua_obj_gc(L); // Stack usage [-0, +0, -] +} + +static void +_elua_gc(lua_State *L) // Stack usage [-0, +0, e] +{ + lua_gc(L, LUA_GCCOLLECT, 0); // Stack usage [-0, +0, e] +} + +// These are what the various symbols are for each type - +// int % +// num # +// str $ +// bool ! +// FIXME: Still to do, if we ever use them - +// func & +// userdata + +// lightuserdata * +// table @ +// thread ^ +// nil ~ + +static char * +_elua_push_name(lua_State *L, char *q, int idx) // Stack usage [-0, +1, e or m] +{ + char *p = q; + char temp = '\0'; + + // A simplistic scan through an identifier, it's wrong, but it's quick, + // and we don't mind that it's wrong, coz this is only internal. + while (isalnum((int)*q)) + q++; + temp = *q; + *q = '\0'; + if (idx > 0) + lua_getfield(L, idx, p); // Stack usage [-0, +1, e] + else + lua_pushstring(L, p); // Stack usage [-0, +1, m] + *q = temp; + + return q; +} + +static int +_elua_scan_params(lua_State *L, int i, char *params, ...) // Stack usage - + // if i is a table + // [-n, +n, e] + // else + // [-0, +0, -] +{ + va_list vl; + char *f = strdup(params); + char *p = f; + int n = 0, j = i, count = 0; + Eina_Bool table = EINA_FALSE; + + if (!f) return -1; + va_start(vl, params); + + if (lua_istable(L, i)) // Stack usage [-0, +0, -] + { + j = -1; + table = EINA_TRUE; + } + + while (*p) + { + char *q; + Eina_Bool get = EINA_TRUE; + + while (isspace((int)*p)) + p++; + q = p + 1; + switch (*p) + { + case '%': + { + if (table) + { + q = _elua_push_name(L, q, i); // Stack usage [-0, +1, e] + } + if (lua_isnumber(L, j)) // Stack usage [-0, +0, -] + { + int *v = va_arg(vl, int *); + *v = lua_tointeger(L, j); // Stack usage [-0, +0, -] + n++; + } + break; + } + case '#': + { + if (table) + { + q = _elua_push_name(L, q, i); // Stack usage [-0, +1, e] + } + if (lua_isnumber(L, j)) // Stack usage [-0, +0, -] + { + double *v = va_arg(vl, double *); + *v = lua_tonumber(L, j); // Stack usage [-0, +0, -] + n++; + } + break; + } + case '$': + { + if (table) + { + q = _elua_push_name(L, q, i); // Stack usage [-0, +1, e] + } + if (lua_isstring(L, j)) // Stack usage [-0, +0, -] + { + char **v = va_arg(vl, char **); + size_t len; + char *temp = (char *) lua_tolstring(L, j, &len); // Stack usage [-0, +0, m] + + len++; // Cater for the null at the end. + *v = malloc(len); + if (*v) + { + memcpy(*v, temp, len); + n++; + } + } + break; + } + case '!': + { + if (table) + { + q = _elua_push_name(L, q, i); // Stack usage [-0, +1, e] + } + if (lua_isboolean(L, j)) // Stack usage [-0, +0, -] + { + int *v = va_arg(vl, int *); + *v = lua_toboolean(L, j); // Stack usage [-0, +0, -] + n++; + } + break; + } + default: + { + get = EINA_FALSE; + break; + } + } + + if (get) + { + if (table) + { + // If this is a table, then we pushed a value on the stack, pop it off. + lua_pop(L, 1); // Stack usage [-n, +0, -] + } + else + j++; + count++; + } + p = q; + } + + free(f); + va_end(vl); + if (count > n) + n = 0; + else if (table) + n = 1; + return n; +} + +static int +_elua_ret(lua_State *L, char *params, ...) // Stack usage [-(2*n), +(2*n+1), em] +{ + va_list vl; + char *f = strdup(params); + char *p = f; + int n = 0; + + if (!f) return -1; + + lua_newtable(L); // Stack usage [-0, +1, m] + va_start(vl, params); + + while (*p) + { + char *q; + Eina_Bool set = EINA_TRUE; + + while (isspace((int)*p)) + p++; + q = p + 1; + switch (*p) + { + case '%': + { + q = _elua_push_name(L, q, -1); // Stack usage [-0, +1, m] + lua_pushinteger(L, va_arg(vl, int)); // Stack usage [-0, +1, -] + break; + } + case '#': + { + q = _elua_push_name(L, q, -1); // Stack usage [-0, +1, m] + lua_pushnumber(L, va_arg(vl, double)); // Stack usage [-0, +1, -] + break; + } + case '$': + { + q = _elua_push_name(L, q, -1); // Stack usage [-0, +1, m] + lua_pushstring(L, va_arg(vl, char *)); // Stack usage [-0, +1, m] + break; + } + case '!': + { + q = _elua_push_name(L, q, -1); // Stack usage [-0, +1, m] + lua_pushboolean(L, va_arg(vl, int)); // Stack usage [-0, +1, -] + break; + } + default: + { + set = EINA_FALSE; + break; + } + } + + if (set) + { + lua_settable(L, -3); // Stack usage [-2, +0, e] + n++; + } + p = q; + } + + free(f); + va_end(vl); + return n; +} + +static void +_elua_color_fix(int *r, int *g, int *b, int *a) +{ + if (*r > *a) *r = *a; + if (*g > *a) *g = *a; + if (*b > *a) *b = *a; +} + +//--------------------------------------------------------------------------// + +/** +@page luaref +@subsection edje Edje class. + +The lua edje class includes functions for dealing with the lua script only group +as an edje object, basic functions, and functions to create other objects. + +In the following, "edje" is the actual global table used to access these edje functions. +*/ + +static int _elua_echo(lua_State *L); + +static int _elua_date(lua_State *L); +static int _elua_looptime(lua_State *L); +static int _elua_seconds(lua_State *L); +static int _elua_version(lua_State *L); + +static int _elua_objgeom(lua_State *L); +static int _elua_objpos(lua_State *L); +static int _elua_objsize(lua_State *L); + +static int _elua_emit(lua_State *L); +static int _elua_messagesend(lua_State *L); + +static int _elua_animator(lua_State *L); +static int _elua_timer(lua_State *L); +static int _elua_transition(lua_State *L); + +static int _elua_color_class(lua_State *L); +static int _elua_text_class(lua_State *L); + +static int _elua_edje(lua_State *L); +static int _elua_image(lua_State *L); +static int _elua_line(lua_State *L); +static int _elua_map(lua_State *L); +static int _elua_polygon(lua_State *L); +static int _elua_rect(lua_State *L); +static int _elua_text(lua_State *L); +//static int _elua_textblock(lua_State *L); /* XXX: disabled until there are enough textblock functions implemented to make it actually useful + +static const char *_elua_edje_api = "edje"; +static const struct luaL_Reg _elua_edje_funcs [] = +{ + // add an echo too to make it more shelly + {"echo", _elua_echo}, // test func - echo (i know we have print. test) + // FIXME: add logging functions here, probably to it's own domain, or even a script defined domain. + + // system information (time, date blah blah) + {"date", _elua_date}, // get date in a table + {"looptime", _elua_looptime}, // get loop time + {"seconds", _elua_seconds}, // get seconds + {"version", _elua_version}, // edje version + + // query edje - size, pos + {"geom", _elua_objgeom}, // get while edje object geometry in canvas + {"pos", _elua_objpos}, // get while edje object pos in canvas + {"size", _elua_objsize}, // get while edje object pos in canvas + + // talk to application/caller + {"emit", _elua_emit}, // emit signal + src + {"messagesend", _elua_messagesend}, // send a structured message + + // time based "callback" systems + {"animator", _elua_animator}, // add animator + {"timer", _elua_timer}, // add timer + {"transition", _elua_transition}, // add transition + // FIXME: need poller + + // set and query color / text class + {"color_class", _elua_color_class}, + {"text_class", _elua_text_class}, + + // create new objects + {"edje", _elua_edje}, + {"image", _elua_image}, // defaults to a filled image. + {"line", _elua_line}, + {"map", _elua_map}, + {"polygon", _elua_polygon}, + {"rect", _elua_rect}, + {"text", _elua_text}, +// {"textblock", _elua_textblock}, /* XXX: disabled until there are enough textblock functions implemented to make it actually useful + + // FIXME: add the new sound stuff. + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection edje_echo edje:echo(text) + +Make lua a bit shelly. Prints a string to the console + +@param text The string to print. +*/ +static int +_elua_echo(lua_State *L) // Stack usage [-0, +0, v] +{ + const char *string = luaL_checkstring(L, 1); // Stack usage [-0, +0, v] + LD("%s", string); + return 0; +} + +//------------- +/** +@page luaref +@subsubsection edje_date edje:date() + +Retrieves the current time and date. + +Wraps gettimeofday(), as passed through localtime(). + +@return A table with these fields: + - integer year: Year. + - integer month: Month of the year. + - integer day: Day of the month. + - integer yearday: Day of the year. + - integer weekday: Day of the week. + - integer hour: Hour of the day (24 hour format). + - integer min: Minute of the hour. + - number sec: Seconds as a number. + +*/ +static int +_elua_date(lua_State *L) // Stack usage [-16, +17, em] +{ + static time_t last_tzset = 0; + struct timeval timev; + struct tm *tm; + time_t tt; + + gettimeofday(&timev, NULL); + tt = (time_t)(timev.tv_sec); + if ((tt > (last_tzset + 1)) || (tt < (last_tzset - 1))) + { + last_tzset = tt; + tzset(); + } + tm = localtime(&tt); + if (tm) + { // Stack usage [-16, +17, em] + _elua_ret(L, "%year %month %day %yearday %weekday %hour %min #sec", + (int)(tm->tm_year + 1900), + (int)(tm->tm_mon + 1), + (int)(tm->tm_mday), + (int)(tm->tm_yday), + (int)((tm->tm_wday + 6) % 7), + (int)(tm->tm_hour), + (int)(tm->tm_min), + (double)((double)tm->tm_sec + (((double)timev.tv_usec) / 1000000)) + ); + + + } + return 1; +} + +/** +@page luaref +@subsubsection edje_looptime edje:looptime() + +Retrieves the time at which the last loop stopped waiting for timeouts or events. + +This gets the time that the main loop ceased waiting for timouts and/or events +to come in or for signals or any other interrupt source. This should be +considered a reference point for all time based activity that should calculate +its timepoint from the return of edje:looptime(). Use this UNLESS you absolutely +must get the current actual timepoint - then use edje:seconds(). Note that this +time is meant to be used as relative to other times obtained on this run. + +Wraps ecore_loop_time_get(). + +@returns A number of seconds. +*/ +static int +_elua_looptime(lua_State *L) // Stack usage [-0, +1, -] +{ + double t = ecore_loop_time_get(); + lua_pushnumber(L, t); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection edje_seconds edje:seconds() + +Retrieves the current system time as a floating point value in seconds. + +This uses a monotonic clock and thus never goes back in time while machine is +live (even if user changes time or timezone changes, however it may be reset +whenever the machine is restarted). + +Wraps ecore_time_get(). + +@returns A number of seconds. +*/ +static int +_elua_seconds(lua_State *L) // Stack usage [-0, +1, -] +{ + double t = ecore_time_get(); + lua_pushnumber(L, t); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection edje_version edje:version() + +Retrieves the current edje version number. + +@returns A table with these fields: + - integer major: The edje version major number. + - integer minor: The edje version minor number. + +@since 1.2.0 +*/ +static int +_elua_version(lua_State *L) // Stack usage [-4, +5, em] +{ + _elua_ret(L, "%major %minor", EDJE_VERSION_MAJOR, EDJE_VERSION_MINOR); // Stack usage [-4, +5, em] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection edje_geom edje:geom() + +Retrieves the position and size of the edje object that this lua group is in. + +@returns A table with these fields: + - integer x: The edjes X position. + - integer y: The edjes Y position. + - integer w: The edjes width. + - integer h: The edjes height. +*/ +static int +_elua_objgeom(lua_State *L) // Stack usage [-10, +11, em] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + _elua_ret(L, "%x %y %w %h", ed->x, ed->y, ed->w, ed->h); // Stack usage [-8, +9, em] + return 1; +} + +/** +@page luaref +@subsubsection edje_pos edje:pos() + + +Retrieves the position of the edje object that this lua group is in. + +@returns A table with these fields: + - integer x: The edjes X position. + - integer y: The edjes Y position. +*/ +static int +_elua_objpos(lua_State *L) // Stack usage [-6, +7, em] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + _elua_ret(L, "%x %y", ed->x, ed->y); // Stack usage [-4, +5, em] + return 1; +} + +/** +@page luaref +@subsubsection edje_size edje:size() + + +Retrieves the size of the edje object that this lua group is in. + +@returns A table with these fields: + - integer w: The edjes width. + - integer h: The edjes height. +*/ +static int +_elua_objsize(lua_State *L) // Stack usage [-6, +7, em] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + _elua_ret(L, "%w %h", ed->w, ed->h); // Stack usage [-4, +5, em] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection edje_emit edje:emit(signal, source) + +Emit a signal. + +Wraps edje_object_signal_emit(). + +@param signal The signal string to send. +@param source The source string of the signal. + +NOTE: The source string will have a name and a colon prepended to in when it is +delivered to things that are not this edje, like C and other edje groups. +If this edje is a top level edje, then it will be the name of the group (I think). +If this edje is swallowed into some other part, then it will be the name of the +part: + + group_name:source + +FIXME: I actually have no idea what happens if it's swallowed into another lua +edje group. +*/ +static int +_elua_emit(lua_State *L) // Stack usage [-2, +2, ev] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + const char *sig = luaL_checkstring(L, 1); // Stack usage [-0, +0, v] + const char *src = luaL_checkstring(L, 2); // Stack usage [-0, +0, v] + if ((!sig) || (!src)) return 0; + _edje_emit(ed, sig, src); + return 0; +} + +/** +@page luaref +@subsubsection edje_message_send edje:messagesend(id, type, ...) + +Send a message to this edje, and all it's child objects. + +Wraps edje_object_message_send(). + +@param id An identification integer for the message. +@param type The type of message to send. +@param ... Zero or more things to send as part of the message, depending on the type. + +The type can be one of: + - none: No msg. + - sig: The msg is two strings (signal, source), sent as a signal. + - str: The msg is a C string. + - int: The message is a C integer. + - float: The message is a C float. + - strset: The message is an array of C strings. + - intset: The message is an array of C integers. + - floatset: The message is an array of C floats. + - strint: The message is a C stnring and a C integer. + - strfloat: The message is a C string and a C float. + - strintset: The message is a C string and an array of C integers. + - strfloatset: The message is a G string and an array of C floats. + +For the array types, the lua caller passes a table. +*/ +static int +_elua_messagesend(lua_State *L) // Stack usage [-2, +2, ev] plus [-2, +2] for every element if it's an array message. +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + int id = luaL_checkinteger(L, 1); // Stack usage [-0, +0, v] + const char *type = luaL_checkstring(L, 2); // Stack usage [-0, +0, v] + if (!type) return 0; + if (!strcmp(type, "none")) + { + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_NONE, id, NULL); + } + else if (!strcmp(type, "sig")) + { + const char *sig = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + const char *src = luaL_checkstring(L, 4); // Stack usage [-0, +0, v] + _edje_emit(ed, sig, src); + } + else if (!strcmp(type, "str")) + { + Edje_Message_String *emsg; + const char *str = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + emsg = alloca(sizeof(Edje_Message_String)); + emsg->str = (char *)str; + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING, id, emsg); + } + else if (!strcmp(type, "int")) + { + Edje_Message_Int *emsg; + int val = luaL_checkinteger(L, 3); // Stack usage [-0, +0, v] + emsg = alloca(sizeof(Edje_Message_Int)); + emsg->val = val; + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_INT, id, emsg); + } + else if (!strcmp(type, "float")) + { + Edje_Message_Float *emsg; + float val = luaL_checknumber(L, 3); // Stack usage [-0, +0, v] + emsg = alloca(sizeof(Edje_Message_Float)); + emsg->val = val; + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_FLOAT, id, emsg); + } + else if (!strcmp(type, "strset")) + { + Edje_Message_String_Set *emsg; + int i, n; + const char *str; + luaL_checktype(L, 3, LUA_TTABLE); // Stack usage [-0, +0, v] + n = lua_objlen(L, 3); // Stack usage [-0, +0, -] + emsg = alloca(sizeof(Edje_Message_String_Set) + ((n - 1) * sizeof(char *))); + emsg->count = n; + for (i = 1; i <= n; i ++) + { + lua_pushinteger(L, i); // Stack usage [-0, +1, -] + lua_gettable(L, 3); // Stack usage [-1, +1, e] + str = lua_tostring(L, -1); // Stack usage [-0, +0, m] + lua_pop(L, 1); // Stack usage [-n, +0, -] + emsg->str[i - 1] = (char *)str; + } + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING_SET, id, emsg); + } + else if (!strcmp(type, "intset")) + { + Edje_Message_Int_Set *emsg; + int i, n; + luaL_checktype(L, 3, LUA_TTABLE); // Stack usage [-0, +0, v] + n = lua_objlen(L, 3); // Stack usage [-0, +0, -] + emsg = alloca(sizeof(Edje_Message_Int_Set) + ((n - 1) * sizeof(int))); + emsg->count = n; + for (i = 1; i <= n; i ++) + { + lua_pushinteger(L, i); // Stack usage [-0, +1, -] + lua_gettable(L, 3); // Stack usage [-1, +1, e] + emsg->val[i - 1] = lua_tointeger(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + } + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_INT_SET, id, emsg); + } + else if (!strcmp(type, "floatset")) + { + Edje_Message_Float_Set *emsg; + int i, n; + luaL_checktype(L, 3, LUA_TTABLE); // Stack usage [-0, +0, v] + n = lua_objlen(L, 3); // Stack usage [-0, +0, -] + emsg = alloca(sizeof(Edje_Message_Float_Set) + ((n - 1) * sizeof(double))); + emsg->count = n; + for (i = 1; i <= n; i ++) + { + lua_pushinteger(L, i); // Stack usage [-0, +1, -] + lua_gettable(L, 3); // Stack usage [-1, +1, e] + emsg->val[i - 1] = lua_tonumber(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + } + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_FLOAT_SET, id, emsg); + } + else if (!strcmp(type, "strint")) + { + Edje_Message_String_Int *emsg; + const char *str = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + emsg = alloca(sizeof(Edje_Message_String_Int)); + emsg->str = (char *)str; + emsg->val = luaL_checkinteger(L, 4); // Stack usage [-0, +0, v] + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING_INT, id, emsg); + } + else if (!strcmp(type, "strfloat")) + { + Edje_Message_String_Float *emsg; + const char *str = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + emsg = alloca(sizeof(Edje_Message_String_Float)); + emsg->str = (char *)str; + emsg->val = luaL_checknumber(L, 4); // Stack usage [-0, +0, v] + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING_FLOAT, id, emsg); + } + else if (!strcmp(type, "strintset")) + { + Edje_Message_String_Int_Set *emsg; + int i, n; + const char *str = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + if (!str) return 0; + luaL_checktype(L, 4, LUA_TTABLE); // Stack usage [-0, +0, v] + n = lua_objlen(L, 4); // Stack usage [-0, +0, -] + emsg = alloca(sizeof(Edje_Message_String_Int_Set) + ((n - 1) * sizeof(int))); + emsg->str = (char *)str; + emsg->count = n; + for (i = 1; i <= n; i ++) + { + lua_pushinteger(L, i); // Stack usage [-0, +1, -] + lua_gettable(L, 4); // Stack usage [-1, +1, e] + emsg->val[i - 1] = lua_tointeger(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + } + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING_INT_SET, id, emsg); + } + else if (!strcmp(type, "strfloatset")) + { + Edje_Message_String_Float_Set *emsg; + int i, n; + const char *str = luaL_checkstring(L, 3); // Stack usage [-0, +0, v] + if (!str) return 0; + luaL_checktype(L, 4, LUA_TTABLE); // Stack usage [-0, +0, v] + n = lua_objlen(L, 4); + emsg = alloca(sizeof(Edje_Message_String_Float_Set) + ((n - 1) * sizeof(double))); + emsg->str = (char *)str; + emsg->count = n; + for (i = 1; i <= n; i ++) + { + lua_pushinteger(L, i); // Stack usage [-0, +1, -] + lua_gettable(L, 4); // Stack usage [-1, +1, e] + emsg->val[i - 1] = lua_tonumber(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + } + _edje_message_send(ed, EDJE_QUEUE_APP, EDJE_MESSAGE_STRING_FLOAT_SET, id, emsg); + } + return 0; +} + +//------------- +static Eina_Bool +_elua_animator_cb(void *data) // Stack usage [-2, +2, em] +{ + Edje_Lua_Animator *ela = data; + lua_State *L; + int ret = 0, err = 0; + + if (!ela->obj.ed) return 0; + L = ela->obj.ed->L; + if (!L) return 0; + /* This is not needed, pcalls don't longjmp(), that's why they are protected. + if (setjmp(panic_jmp) == 1) + { + LE("Animator callback panic"); + _edje_lua2_error(L, err); // Stack usage [-0, +0, m] + _elua_obj_free(L, (Edje_Lua_Obj *)ela); + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + */ + lua_rawgeti(L, LUA_REGISTRYINDEX, ela->fn_ref); // Stack usage [-0, +1, -] + if ((err = lua_pcall(L, 0, 1, 0))) // Stack usage [-1, +1, -] + { + _edje_lua2_error(L, err); // Stack usage [-0, +0, m] + _elua_obj_free(L, (Edje_Lua_Obj *)ela); + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + ret = lua_toboolean(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + if (ret == 0) _elua_obj_free(L, (Edje_Lua_Obj *)ela); + _elua_gc(L); // Stack usage [-0, +0, e] + return ret; +} + +static void +_elua_animator_free(void *obj) // Stack usage [-0, +0, -] +{ + Edje_Lua_Animator *ela = obj; + lua_State *L; + if (!ela->obj.ed) return; + L = ela->obj.ed->L; + luaL_unref(L, LUA_REGISTRYINDEX, ela->fn_ref); // Stack usage [-0, +0, -] + ela->fn_ref = 0; + ecore_animator_del(ela->animator); + ela->animator = NULL; +} + +/** +@page luaref +@subsubsection edje_animator edje:animator(func) + +This function adds an animator and returns its handle on success and NULL on +failure. The function func will be called every frame tick. Note that setting +the frame tick is not available as a lua function, so has to be done from C. +The default tick is 1/30 second. + +When the animator func is called, it must return a value of either true or false. +If it returns true it will be called again at the next tick, or if it returns +false it will be deleted automatically making any references/handles for it +invalid. + +Wraps ecore_animator_add(). + +@param func The function to call when the animator triggers. + +@returns A userdata that is an ecore animator. +*/ +static int +_elua_animator(lua_State *L) // Stack usage [-8, +9, emv] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + Edje_Lua_Animator *ela; + + luaL_checkany(L, 1); // Stack usage [-0, +0, v] + + // FIXME: Allow lua to set a data to be sent back with the callback. + ela = (Edje_Lua_Animator *)_elua_obj_new(L, ed, sizeof(Edje_Lua_Animator), _elua_ecore_animator_meta); + // Stack usage [-5, +6, m] + ela->obj.free_func = _elua_animator_free; + ela->animator = ecore_animator_add(_elua_animator_cb, ela); + lua_pushvalue(L, 1); // Stack usage [-0, +1, -] + ela->fn_ref = luaL_ref(L, LUA_REGISTRYINDEX); // Stack usage [-1, +0, m] + _elua_gc(L); // Stack usage [-0, +0, e] + return 1; +} + +static Eina_Bool +_elua_timer_cb(void *data) // Stack usage [-2, +2, em] +{ + Edje_Lua_Timer *elt = data; + lua_State *L; + int ret = 0, err = 0; + + if (!elt->obj.ed) return 0; + L = elt->obj.ed->L; + if (!L) return 0; + /* This is not needed, pcalls don't longjmp(), that's why they are protected. + if (setjmp(panic_jmp) == 1) + { + LE("Timer callback panic"); + _edje_lua2_error(L, err); // Stack usage [-0, +0, m] + _elua_obj_free(L, (Edje_Lua_Obj *)elt); + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + */ + lua_rawgeti(L, LUA_REGISTRYINDEX, elt->fn_ref); // Stack usage [-0, +1, -] + if ((err = lua_pcall(L, 0, 1, 0))) // Stack usage [-1, +1, -] + { + _edje_lua2_error(L, err); + _elua_obj_free(L, (Edje_Lua_Obj *)elt); // Stack usage [-0, +0, m] + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + ret = lua_toboolean(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + if (ret == 0) _elua_obj_free(L, (Edje_Lua_Obj *)elt); + _elua_gc(L); // Stack usage [-0, +0, e] + return ret; +} + +static void +_elua_timer_free(void *obj) // Stack usage [-0, +0, -] +{ + Edje_Lua_Timer *elt = obj; + lua_State *L; + if (!elt->obj.ed) return; + L = elt->obj.ed->L; + luaL_unref(L, LUA_REGISTRYINDEX, elt->fn_ref); // Stack usage [-0, +0, -] + elt->fn_ref = 0; + ecore_timer_del(elt->timer); + elt->timer = NULL; +} + +/** +@page luaref +@subsubsection edje_timer edje:timer(tick, func) + +This function adds a timer and returns its handle on success and NULL on failure. +The function func will be called every tick seconds. + +When the timer func is called, it must return a value of either true or false. +If it returns true, it will be called again at the next tick, or if it returns +false it will be deleted automatically making any references/handles for it +invalid. + +Wraps ecore_timer_add(). + +@param tick How often, in seconds, to call the function. +@param func The function to call when the timer triggers. + +@returns A userdata that is an ecore timer. +*/ +static int +_elua_timer(lua_State *L) // Stack usage [-8, +9, emv] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + Edje_Lua_Timer *elt; + double val; + + val = luaL_checknumber(L, 1); // Stack usage [-0, +0, v] + luaL_checkany(L, 2); // Stack usage [-0, +0, v] + + elt = (Edje_Lua_Timer *)_elua_obj_new(L, ed, sizeof(Edje_Lua_Timer), _elua_ecore_timer_meta); + // Stack usage [-5, +6, m] + elt->obj.free_func = _elua_timer_free; + elt->timer = ecore_timer_add(val, _elua_timer_cb, elt); + lua_pushvalue(L, 2); // Stack usage [-0, +1, -] + elt->fn_ref = luaL_ref(L, LUA_REGISTRYINDEX); // Stack usage [-1, +0, m] + _elua_gc(L); // Stack usage [-0, +0, e] + return 1; +} + +static Eina_Bool +_elua_transition_cb(void *data) // Stack usage [-3, +3, em] +{ + Edje_Lua_Transition *elt = data; + lua_State *L; + int ret = 0, err = 0; + double t; + + if (!elt->obj.ed) return 0; + L = elt->obj.ed->L; + if (!L) return 0; + t = (ecore_loop_time_get() - elt->start) / elt->transition; + if (t > 1.0) t = 1.0; + /* This is not needed, pcalls don't longjmp(), that's why they are protected. + if (setjmp(panic_jmp) == 1) + { + LE("Transition callback panic"); + _edje_lua2_error(L, err); // Stack usage [-0, +0, m] + _elua_obj_free(L, (Edje_Lua_Obj *)elt); + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + */ + lua_rawgeti(L, LUA_REGISTRYINDEX, elt->fn_ref); // Stack usage [-0, +1, -] + lua_pushnumber(L, t); // Stack usage [-0, +1, -] + if ((err = lua_pcall(L, 1, 1, 0))) // Stack usage [-2, +1, -] + { + _edje_lua2_error(L, err); + _elua_obj_free(L, (Edje_Lua_Obj *)elt); // Stack usage [-0, +0, m] + _elua_gc(L); // Stack usage [-0, +0, e] + return 0; + } + ret = lua_toboolean(L, -1); // Stack usage [-0, +0, -] + lua_pop(L, 1); // Stack usage [-n, +0, -] + if (t >= 1.0) ret = 0; + if (ret == 0) _elua_obj_free(L, (Edje_Lua_Obj *)elt); + _elua_gc(L); // Stack usage [-0, +0, e] + return ret; +} + +static void +_elua_transition_free(void *obj) // Stack usage [-0, +0, -] +{ + Edje_Lua_Transition *elt = obj; + lua_State *L; + if (!elt->obj.ed) return; + L = elt->obj.ed->L; + luaL_unref(L, LUA_REGISTRYINDEX, elt->fn_ref); // Stack usage [-0, +0, -] + elt->fn_ref = 0; + ecore_animator_del(elt->animator); + elt->animator = NULL; +} + +/** +@page luaref +@subsubsection edje_transition edje:transition(div, func) + +Just like edje:animator(), except that the callback function gets called with an +argument. The argument is the amount of time since the transition was created, +divided by the div parameter. + +@param div A number to divide the time since creation by. +@param func The function to call when the transition triggers. + +@returns A userdata that is a transition (ecore animator, plus other info). +*/ +static int +_elua_transition(lua_State *L) // Stack usage [-8, +9, emv] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + Edje_Lua_Transition *elt; + double val; + + val = luaL_checknumber(L, 1); // Stack usage [-0, +0, v] + luaL_checkany(L, 2); // Stack usage [-0, +0, v] + + elt = (Edje_Lua_Transition *)_elua_obj_new(L, ed, sizeof(Edje_Lua_Transition), _elua_ecore_animator_meta); + // Stack usage [-5, +6, m] + elt->obj.free_func = _elua_transition_free; + elt->animator = ecore_animator_add(_elua_transition_cb, elt); + if (val < 0.0000001) val = 0.0000001; + elt->transition = val; + elt->start = ecore_loop_time_get(); + lua_pushvalue(L, 2); // Stack usage [-0, +1, -] + elt->fn_ref = luaL_ref(L, LUA_REGISTRYINDEX); // Stack usage [-1, +0, m] + _elua_gc(L); // Stack usage [-0, +0, e] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection edje_colour_class edje:color_class(class, r, g, b, a) + +Gets, (and optionally sets) the colours for a color class. + +Wraps edje_object_color_class_set(). + +@param class A color class name. +@param r The new red value. +@param g The new green value. +@param b The new blue value. +@param a The new alpha value. + +Note that the r, g, b, and a arguments are optional, without them this function +just queries the current values. The r, g, b, and a arguments can be separate +values, or named fields in a table. + +@return A table with these fields: + - integer r: The red value. + - integer g: The green value. + - integer b: The blue value. + - integer a: The alpha value. + +@since 1.1.0 +*/ +static int +_elua_color_class(lua_State *L) // Stack usage [-(10|14), +(11|15), ?] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + Edje_Color_Class *c_class; + const char *class = luaL_checkstring(L, 1); // Stack usage [-0, +0, v] + int r, g, b, a; + + if (!class) return 0; + + if (_elua_scan_params(L, 2, "%r %g %b %a", &r, &g, &b, &a) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + _elua_color_fix(&r, &g, &b, &a); + // This is the way that embryo does it - + //edje_object_color_class_set(ed->obj, class, r, g, b, a, r, g, b, a, r, g, b, a); + // But that deals with object scope, which is currently useless in lua, + // since we have no objects that can use color_class yet. + // So we do it at global scope instead. + // LATER - Should do both? + edje_color_class_set(class, r, g, b, a, r, g, b, a, r, g, b, a); + } + + c_class = _edje_color_class_find(ed, class); + if (!c_class) return 0; + + _elua_ret(L, "%r %g %b %a", c_class->r, c_class->g, c_class->b, c_class->a); + // Stack usage [-8, +9, em] + return 1; +} + +/** +@page luaref +@subsubsection edje_text_class edje:text_class(class, font, size) + +Gets, (and optionally sets) the details for a text class. + +Wraps edje_object_text_class_set(). + +@param class A text class name. +@param font The new font name. +@param size The new font size. + +Note that the font and size arguments are optional, without them this function +just queries the current values. The font and size arguments can be separate +values, or named fields in a table. The font name can refer to a font in the +edje file, or an external font. + +@return A table with these fields: + - string font: The font name. + - integer size: The font size. + +@since 1.1.0 +*/ +static int +_elua_text_class(lua_State *L) // Stack usage [-(6|8), +(7|9), emv] +{ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); // Stack usage [-2, +2, e] + Edje_Text_Class *t_class; + const char *class = luaL_checkstring(L, 1); // Stack usage [-0, +0, v] + char *font = NULL; + Evas_Font_Size size = 0; + + if (!class) return 0; + + // Just like color_class above, this does things differently from embryo, + // for the same reason. + if (_elua_scan_params(L, 2, "$font %size", &font, &size) > 0) + // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + edje_text_class_set(class, font, size); + + t_class = _edje_text_class_find(ed, class); + if (!t_class) return 0; + + _elua_ret(L, "$font %size", t_class->font, t_class->size); + // Stack usage [-4, +5, em] + return 1; +} + +//------------- +static void +_elua_evas_obj_free(void *obj) +{ + Edje_Lua_Evas_Object *elo = obj; + + if (!elo->obj.ed) return; + evas_object_del(elo->evas_obj); + elo->evas_obj = NULL; +} + +// Stack usage [-7, +8, em] +#define _ELUA_PLANT_EVAS_OBJECT(type, meta, free) \ + Edje *ed = (Edje *)_elua_table_ptr_get(L, _elua_key); \ + type *elo; \ + elo = (type *)_elua_obj_new(L, ed, sizeof(type), meta); \ + elo->obj.free_func = free; +// Stack usage [-2, +2, e] +// Stack usage [-5, +6, m] + +static void +_elua_polish_evas_object(Edje *ed, Edje_Lua_Evas_Object *elo) +{ + evas_object_smart_member_add(elo->evas_obj, ed->obj); + evas_object_clip_set(elo->evas_obj, ed->base.clipper); + evas_object_move(elo->evas_obj, ed->x, ed->y); + evas_object_resize(elo->evas_obj, 0, 0); + evas_object_data_set(elo->evas_obj, ELO, elo); +} + +/** +@page luaref +@subsubsection edje_edje edje:edje() + +Create an edje object, and add it to the edje. + +Wraps edje_object_add(). + +@returns A userdata that is an edje object. + +@since 1.1.0 +*/ +static int +_elua_edje(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_edje_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = edje_object_add(evas_object_evas_get(ed->obj)); + _edje_subobj_register(ed, elo->evas_obj); + _elua_polish_evas_object(ed, elo); + return 1; +} + +/** +@page luaref +@subsubsection edje_image edje:image() + +Create an evas image, and add it to the edje. + +Wraps evas_object_image_add(). + +@returns A userdata that is an evas image. + +@since 1.1.0 +*/ +static int +_elua_image(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_image_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_image_filled_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} + +/** +@page luaref +@subsubsection edje_line edje:line() + +Create an evas line, and add it to the edje. + +Wraps evas_object_line_add(). + +@returns A userdata that is an evas line. + +@since 1.1.0 +*/ +static int +_elua_line(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_line_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_line_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} + +static void +_elua_map_free(void *obj) +{ + Edje_Lua_Map *elm = obj; + if (!elm->obj.ed) return; + evas_map_free(elm->map); + elm->map = NULL; +} + +/** +@page luaref +@subsubsection edje_map edje:map() + +Create an evas map. + +Wraps evas_map_new(). + +@returns A userdata that is an evas map. + +@since 1.1.0 +*/ +static int +_elua_map(lua_State *L) // Stack usage [-7, +8, emv] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Map, _elua_evas_map_meta, _elua_map_free) + // Stack usage [-7, +8, em] + elo->map = evas_map_new(luaL_checkinteger(L, 1)); // Stack usage [-0, +0, v] + return 1; +} + +/** +@page luaref +@subsubsection edje_polygon edje:polygon() + +Create an evas polygon, and add it to the edje. + +Wraps evas_object_polygon_add(). + +@returns A userdata that is an evas polygon. + +@since 1.1.0 +*/ +static int +_elua_polygon(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_polygon_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_polygon_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} + +/** +@page luaref +@subsubsection edje_rect edje:rect() + +Create an evas rectangle, and add it to the edje. + +Wraps evas_object_rectangle_add(). + +@returns A userdata that is an evas rectangle. +*/ +static int +_elua_rect(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_rectangle_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} + +/** +@page luaref +@subsubsection edje_text edje:text() + +Create an evas text object, and add it to the edje. + +Wraps evas_object_text_add(). + +@returns A userdata that is an evas text object. + +@since 1.1.0 +*/ +static int +_elua_text(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_text_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_text_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} + +/* XXX: disabled until there are enough textblock functions implemented to make it actually useful +_elua_textblock(lua_State *L) // Stack usage [-7, +8, em] +{ + _ELUA_PLANT_EVAS_OBJECT(Edje_Lua_Evas_Object, _elua_evas_textblock_meta, _elua_evas_obj_free) + // Stack usage [-7, +8, em] + elo->evas_obj = evas_object_textblock_add(evas_object_evas_get(ed->obj)); + _elua_polish_evas_object(ed, elo); + return 1; +} +*/ + +//------------- +//------------- + +/** +@page luaref +@subsection evas Evas class. + +The lua evas class includes functions for dealing with evas objects. The evas +objects must have been previously created by lua using one of the lua ezas +object creation functions from the lua edje class. + +In the following, "evas_object" is a place holder for any lua variable that +holds a reference to an evas object. +*/ + +static int _elua_obj_del(lua_State *L); + +static int _elua_hide(lua_State *L); +static int _elua_show(lua_State *L); +static int _elua_visible(lua_State *L); + +static int _elua_above(lua_State *L); +static int _elua_below(lua_State *L); +static int _elua_bottom(lua_State *L); +static int _elua_lower(lua_State *L); +static int _elua_raise(lua_State *L); +static int _elua_top(lua_State *L); + +static int _elua_geom(lua_State *L); +static int _elua_move(lua_State *L); +static int _elua_pos(lua_State *L); +static int _elua_resize(lua_State *L); +static int _elua_size(lua_State *L); + +static int _elua_clip(lua_State *L); +static int _elua_clipees(lua_State *L); +static int _elua_unclip(lua_State *L); + +static int _elua_type(lua_State *L); + +static int _elua_pass(lua_State *L); +static int _elua_precise(lua_State *L); +static int _elua_repeat(lua_State *L); + +static int _elua_color(lua_State *L); + +static int _elua_obj_map(lua_State *L); +static int _elua_obj_map_enable(lua_State *L); + +static const char *_elua_evas_api = "evas"; +static const struct luaL_Reg _elua_evas_funcs [] = +{ + {"del", _elua_obj_del}, // generic del any object created for edje (evas objects, timers, animators, transitions... everything) + + {"hide", _elua_hide}, // hide, return current visibility + {"show", _elua_show}, // show, return current visibility + {"visible", _elua_visible}, // get object visibility + + {"above", _elua_above}, // get object above or stack obj above given obj + {"below", _elua_below}, // get object below or stack obj below given obj + {"bottom", _elua_bottom}, // get bottom + {"lower", _elua_lower}, // lower to bottom + {"raise", _elua_raise}, // raise to top + {"top", _elua_top}, // get top + + {"geom", _elua_geom}, // move and resize and return current geometry + {"move", _elua_move}, // move, return current position + {"pos", _elua_pos}, // move, return current position + {"resize", _elua_resize}, // resize, return current size + {"size", _elua_size}, // resize, return current size + + {"clip", _elua_clip}, // set clip obj, return clip object + {"clipees", _elua_clipees}, // get clip children + {"unclip", _elua_unclip}, // clear clip obj + + {"type", _elua_type}, // get object type + + {"pass", _elua_pass}, // set pass events, get pass events + {"precise", _elua_precise}, // set precise inside flag, get precise + {"repeat", _elua_repeat}, // set repeat events, get repeat events + + {"color", _elua_color}, // set color, return color +// {"color_class", _elua_object_color_class}, // get or set object color class + + // FIXME: set callbacks (mouse down, up, blah blah blah) + // + // FIXME: set scale (explicit value) + // FIXME: need to set auto-scale (same as scale: 1) + + // FIXME: later - set render op, anti-alias, pointer mode (autograb, nograb) + + // map api here + {"map", _elua_obj_map}, + {"map_enable", _elua_obj_map_enable}, + + {NULL, NULL} // end +}; + +//------------- +/** +@page luaref +@subsubsection evas_hide evas_object:hide() + +Hides the object. + +Wraps evas_object_hide(). + +@returns A boolean representing the current visibility. +*/ +static int +_elua_hide(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_hide(elo->evas_obj); + lua_pushboolean(L, evas_object_visible_get(elo->evas_obj)); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_show evas_object:show() + +Shows the object. + +Wraps evas_object_show(). + +@returns A boolean representing the current visibility. +*/ +static int +_elua_show(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_show(elo->evas_obj); + lua_pushboolean(L, evas_object_visible_get(elo->evas_obj)); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_visible evas_object:visible(visibility) + +Gets (and optionally sets) this objects visibility. + +Wraps evas_object_hide() or evas_object_show(). + +@param visibility The new visibility you want to change it to. + +Note that the argument is optional, without it this function just queries the +current value. + +@returns A boolean representing the current visibility. +*/ +static int +_elua_visible(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + if (lua_isboolean(L, 2)) // Stack usage [-0, +0, -] + { + if (lua_toboolean(L, 2)) evas_object_show(elo->evas_obj); + // Stack usage [-0, +0, -] + else evas_object_hide(elo->evas_obj); + } + } + lua_pushboolean(L, evas_object_visible_get(elo->evas_obj)); // Stack usage [-0, +1, -] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection evas_above evas_object:above() + +Figure out what, if anything, is above us. + +Wraps evas_object_above_get(). + +Note that it may not return any value. + +@returns A reference to the object above this one. +*/ +static int +_elua_above(lua_State *L) // Stack usage [-3, +4, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Edje_Lua_Evas_Object *elo2; + Evas_Object *o; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (!(o = evas_object_above_get(elo->evas_obj))) return 0; + if (!(elo2 = evas_object_data_get(o, ELO))) return 0; + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_below evas_object:below() + +Figure out what, if anything, is below us. + +Wraps evas_object_below_get(). + +Note that it may not return any value. + +@returns A reference to the object below this one. +*/ +static int +_elua_below(lua_State *L) // Stack usage [-3, +4, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Edje_Lua_Evas_Object *elo2; + Evas_Object *o; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (!(o = evas_object_below_get(elo->evas_obj))) return 0; + if (!(elo2 = evas_object_data_get(o, ELO))) return 0; + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_bottom evas_object:bottom() + +Figure out what, if anything, is waaaay below us. + +Note that it may not return any value. + +@returns A reference to the object at the bottom. +*/ +static int +_elua_bottom(lua_State *L) // Stack usage [-(0|3), +(0|4), -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo2; + Evas_Object *o; + Eina_List *list, *l; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (!(list = (Eina_List *)evas_object_smart_members_get(obj->ed->obj))) return 0; + for (l = list; l; l = l->next) + { + o = l->data; + if ((elo2 = evas_object_data_get(o, ELO))) + { + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + return 1; + } + } + return 0; +} + +/** +@page luaref +@subsubsection evas_lower evas_object:lower() + +Lower this object to the bottom. + +Wraps evas_object_lower(). +*/ +static int +_elua_lower(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_lower(elo->evas_obj); + return 0; +} + +/** +@page luaref +@subsubsection evas_raise evas_object:raise() + +Raise this object to the top. + +Wraps evas_object_raise(). +*/ +static int +_elua_raise(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_raise(elo->evas_obj); + return 0; +} + +/** +@page luaref +@subsubsection evas_top evas_object:top() + +Figure out what, if anything, is waaaay above us. + +Note that it may not return any value. + +@returns A reference to the object at the top. +*/ +static int +_elua_top(lua_State *L) // Stack usage [-(0|3), +(0|4), -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-(0, +0, -] + Edje_Lua_Evas_Object *elo2; + Evas_Object *o; + Eina_List *list, *l; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (!(list = (Eina_List *)evas_object_smart_members_get(obj->ed->obj))) return 0; + if (!list) return 0; + for (l = eina_list_last(list); l; l = l->prev) + { + o = l->data; + if ((elo2 = evas_object_data_get(o, ELO))) + { + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + return 1; + } + } + return 0; +} + +//------------- +/** +@page luaref +@subsubsection evas_geom evas_object:geom(x, y, w, h) + +Gets (and optionally sets) this objects geometry. + +Wraps evas_object_move() and evas_object_resize. + +@param x The new X coordinate. +@param y The new Y coordinate. +@param w The new width. +@param h The new height. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer x: X coordinate. + - integer x: Y coordinate. + - integer w: Width. + - integer w: Height. +*/ +static int +_elua_geom(lua_State *L) // Stack usage [-(8|12), +(9|13), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord ox, oy, ow, oh; + int x, y, w, h; + + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_geometry_get(elo->evas_obj, &ox, &oy, &ow, &oh); + if (_elua_scan_params(L, 2, "%x %y %w %h", &x, &y, &w, &h) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + if ((x != (ox - obj->ed->x)) || (y != (oy - obj->ed->y))) + { + evas_object_move(elo->evas_obj, + obj->ed->x + x, + obj->ed->y + y); + } + if ((w != ow) || (h != oh)) + { + evas_object_resize(elo->evas_obj, w, h); + } + evas_object_geometry_get(elo->evas_obj, &ox, &oy, &ow, &oh); + elo->x = ox - obj->ed->x; + elo->y = oy - obj->ed->y; + } + _elua_ret(L, "%x %y %w %h", elo->x, elo->y, ow, oh); + // Stack usage [-8, +9, em] + return 1; +} + +/** +@page luaref +@subsubsection evas_move evas_object:move(x, y) + +Gets (and optionally sets) this objects position. + +Wraps evas_object_move(). + +@param x The new X coordinate. +@param y The new Y coordinate. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer x: X coordinate. + - integer x: Y coordinate. +*/ +static int +_elua_move(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord ox, oy; + int x, y; + + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_geometry_get(elo->evas_obj, &ox, &oy, NULL, NULL); + if (_elua_scan_params(L, 2, "%x %y", &x, &y) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + if ((x != (ox - obj->ed->x)) || (y != (oy - obj->ed->y))) + { + evas_object_move(elo->evas_obj, + obj->ed->x + x, + obj->ed->y + y); + evas_object_geometry_get(elo->evas_obj, &ox, &oy, NULL, NULL); + } + elo->x = ox - obj->ed->x; + elo->y = oy - obj->ed->y; + } + _elua_ret(L, "%x %y", elo->x, elo->y); + // Stack usage [-4, +5, em] + return 1; +} + +/** +@page luaref +@subsubsection evas_pos evas_object:pos(x, y) + +An alias for evas_object:move(). +*/ +static int +_elua_pos(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + return _elua_move(L); +} + +/** +@page luaref +@subsubsection evas_resize evas_object:resize(w, h) + +Gets (and optionally sets) this objects size. + +Wraps evas_object_resize(). + +@param w The new width. +@param h The new height. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer w: Width. + - integer w: Height. +*/ +static int +_elua_resize(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord ow, oh; + int w, h; + + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_geometry_get(elo->evas_obj, NULL, NULL, &ow, &oh); + if (_elua_scan_params(L, 2, "%w %h", &w, &h) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + if ((w != ow) || (h != oh)) + { + evas_object_resize(elo->evas_obj, w, h); + evas_object_geometry_get(elo->evas_obj, NULL, NULL, &ow, &oh); + } + } + _elua_ret(L, "%w %h", ow, oh); + // Stack usage [-4, +5, em] + return 1; +} + +/** +@page luaref +@subsubsection evas_size evas_object:size() + +An alias for evas_object:resize(). +*/ +static int +_elua_size(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + return _elua_resize(L); +} + +//------------- +/** +@page luaref +@subsubsection evas_clip evas_object:clip(evas_object2) + +Get (and optionally set) the object that clips this object. + +Note that the argument is optional, without it this function just queries the +current value. + +Wraps evas_object_clip_set(). + +@param evas_object2 A reference to the object to clip this object with. + +@returns A reference to the object clipping this object, if any. +*/ +static int +_elua_clip(lua_State *L) // Stack usage [-3, +4, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo2, *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Object *o; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + Edje_Lua_Obj *obj2 = (Edje_Lua_Obj *)lua_touserdata(L, 2); // Stack usage [-0, +0, -] + elo2 = (Edje_Lua_Evas_Object *)obj2; + if (!_elua_isa(obj2, _elua_evas_meta)) return 0; + evas_object_clip_set(elo->evas_obj, elo2->evas_obj); + } + o = evas_object_clip_get(elo->evas_obj); + if (!o) return 0; + if (!(elo2 = evas_object_data_get(o, ELO))) return 0; + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_clipees evas_object:clipees() + +Gets the list of objects this objects clips. + +Wraps evas_object_clipees_get(). + +@return A table, that holds all the objects this clips, if any, + otherwise an empty table. +*/ +static int +_elua_clipees(lua_State *L) // Stack usage [-0, +1, me] plus [-5, +5] for each clipee. +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo2, *elo = (Edje_Lua_Evas_Object *)obj; + Eina_List *list, *l; + Evas_Object *o; + int n = 0; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + list = (Eina_List *)evas_object_clipees_get(elo->evas_obj); + lua_newtable(L); // Stack usage [-0, +1, m] + EINA_LIST_FOREACH(list, l, o) + { + if (!(elo2 = evas_object_data_get(o, ELO))) continue; + lua_pushinteger(L, n + 1); // Stack usage [-0, +1, -] + _elua_ref_get(L, elo2); // Stack usage [-3, +4, -] + lua_settable(L, -3); // Stack usage [-2, +0, e] + n++; + } + return 1; +} + +/** +@page luaref +@subsubsection evas_unclip evas_object:unclip() + +Remove any clipping on this object. + +Wraps evas_object_clip_unset(). +*/ +static int +_elua_unclip(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + evas_object_clip_unset(elo->evas_obj); + return 0; +} + +//------------- +/** +@page luaref +@subsubsection evas_type evas_object:type() + +Get the type of this object. See the documentation of the evas_object_type_get() +C function for details. + +Wraps evas_object_type_get(). + +@return A string with this objects type in it. +*/ +static int +_elua_type(lua_State *L) // Stack usage [-0, +1, m] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + const char *t; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + t = evas_object_type_get(elo->evas_obj); + if (!t) return 0; + lua_pushstring(L, t); // Stack usage [-0, +1, m] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection evas_pass evas_object:pass(pass) + +Get (and optionally set) whether this object ignores events, passing them to the +next object underneath it. + +Wraps evas_object_pass_events_set(). + +@param pass A boolean saying if this object passes events. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean saying if this object passes events. +*/ +static int +_elua_pass(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + if (lua_isboolean(L, 2)) // Stack usage [-0, +0, -] + { + evas_object_pass_events_set(elo->evas_obj, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + } + lua_pushboolean(L, evas_object_pass_events_get(elo->evas_obj)); + // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_precise evas_object:precise(precise) + +Get (and optionally set) whether to use precise (usually expensive) point +collision detection for this object. + +Wraps evas_object_precise_is_inside_set(). + +@param precise A boolean saying if this object is precisely detected. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean saying if this object is precisely detected. +*/ +static int +_elua_precise(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + if (lua_isboolean(L, 2)) // Stack usage [-0, +0, -] + { + evas_object_precise_is_inside_set(elo->evas_obj, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + } + lua_pushboolean(L, evas_object_precise_is_inside_get(elo->evas_obj)); + // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection evas_repeat evas_object:repeat(repeat) + +Get (and optionally set) whether this object repeats events. + +Wraps evas_object_repeat_events_set(). + +@param repeat A boolean saying if this object repeats events to lower objects. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean saying if this object repeats events. +*/ +static int +_elua_repeat(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + if (lua_isboolean(L, 2)) // Stack usage [-0, +0, -] + { + evas_object_repeat_events_set(elo->evas_obj, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + } + lua_pushboolean(L, evas_object_repeat_events_get(elo->evas_obj)); + // Stack usage [-0, +1, -] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection evas_colour evas_object:color(r, g, b, a) + +Gets (and optionally sets) this objects colour. + +Wraps evas_object_color_set(). + +@param r The new red value. +@param g The new green value. +@param b The new blue value. +@param a The new alpha value. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer r: The red value. + - integer g: The green value. + - integer b: The blue value. + - integer a: The alpha value. +*/ +static int +_elua_color(lua_State *L) // Stack usage [-(8|12), +(9|13), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int r, g, b, a; + + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (_elua_scan_params(L, 2, "%r %g %b %a", &r, &g, &b, &a) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + _elua_color_fix(&r, &g, &b, &a); + evas_object_color_set(elo->evas_obj, r, g, b, a); + } + evas_object_color_get(elo->evas_obj, &r, &g, &b, &a); + _elua_ret(L, "%r %g %b %a", r, g, b, a); + // Stack usage [-8, +9, em] + return 1; +} + +//------------- +/** +@page luaref +@subsubsection evas_map evas_object:map(map) + +Attach a map to this object. + +Wraps evas_object_map_set(). + +@param map The map to attach. + +@since 1.1.0 +*/ +static int +_elua_obj_map(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Edje_Lua_Obj *obj2 = (Edje_Lua_Obj *)lua_touserdata(L, 2); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj2; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + if (!_elua_isa(obj2, _elua_evas_map_meta)) return 0; + + evas_object_map_set(elo->evas_obj, elm->map); + + return 0; +} + +/** +@page luaref +@subsubsection evas_map_enable evas_object:map_enable(enable) + +Enable or disable the map attached to this object. + +Wraps evas_object_map_enable_set(). + +@param enable A booleon that controls if the attached map is enabled or not. + +@return A boolean reflecting the map enabled status of this object. + +@since 1.1.0 +*/ +static int +_elua_obj_map_enable(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!_elua_isa(obj, _elua_evas_meta)) return 0; + + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + evas_object_map_enable_set(elo->evas_obj, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + lua_pushboolean(L, evas_object_map_enable_get(elo->evas_obj)); + // Stack usage [-0, +1, -] + return 1; +} + +//------------- +//------------- +/** +@page luaref +@subsection ecore_animator Ecore animator class. + +The lua ecore animator class includes functions for dealing with ecore animator objects. +The ecore animator objects must have been previously created by lua using the lua +edje object creation function edje:animator() or edje:transition(). + +In the following, "animator_object" is a place holder for any lua variable that +holds a reference to an ecore animator object. +*/ +static const char *_elua_ecore_animator_api = "ecore_animator"; +static const struct luaL_Reg _elua_ecore_animator_funcs [] = +{ + {NULL, NULL} // end +}; + +//------------- +//------------- +/** +@page luaref +@subsection ecore_timer Ecore timer class. + +The lua ecore timer class includes functions for dealing with ecore timer objects. +The ecore timer objects must have been previously created by lua using the lua +edje object creation function edje:timer(). + +In the following, "timer_object" is a place holder for any lua variable that +holds a reference to an ecore timer object. +*/ + +static const char *_elua_ecore_timer_api = "ecore_timer"; +static const struct luaL_Reg _elua_ecore_timer_funcs [] = +{ + {NULL, NULL} // end +}; + +//------------- +//------------- +/** +@page luaref +@subsection evas_edje Evas edje class. + +The lua evas edje class includes functions for dealing with evas edje objects. +The evas edje objects must have been previously created by lua using the lua +edje object creation function edje:edje(). + +In the following, "edje_object" is a place holder for any lua variable that +holds a reference to an evas edje object. NOT the edje class specified earlier +though. + +@since 1.1.0 +*/ + +static int _elua_edje_file(lua_State *L); + +static const char *_elua_evas_edje_api = "evas_edje"; +static const char *_elua_evas_edje_parent = "evas_edje_parent"; +static const struct luaL_Reg _elua_evas_edje_funcs [] = +{ + {"file", _elua_edje_file}, // get or set edje file and group + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection edje_file edje_object:file(file, group) + +Load an edje group into this edje object. + +Wraps edje_object_file_set(). + +@param file An edje file name (ignored, sandboxed to the file this lua script is in). +@param group The group within the edje file to be loaded. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. The file argument is optional, and ignored anyway. + +@return A table with these fields: + - string file: The name of the edje file this edje's group is loaded from. + - string group: The name of the group this edje is loaded from. + +@since 1.1.0 +*/ +static int +_elua_edje_file(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + const char *file = NULL, *group = NULL; + int n = lua_gettop(L); // Stack usage [-0, +0, -] + + if (!_elua_isa(obj, _elua_evas_edje_meta)) return 0; + + n = _elua_scan_params(L, 2, "$file $group", &file, &group); + // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + if (0 >= n) + { + file = (char *) obj->ed->file->path; + group = (char *) lua_tostring(L, 2); // Stack usage [-0, +0, m] + n = 2; + } + + if (1 < n) + { + // Sandbox lua - Only allow access to groups within the same file. + // By the simple expedient of completely ignoring what file was requested. + file = (char *) obj->ed->file->path; + if (!edje_object_file_set(elo->evas_obj, file, group)) + { + Edje_Load_Error err = edje_object_load_error_get(elo->evas_obj); + + switch (err) + { + case EDJE_LOAD_ERROR_NONE : LE("Edje file loading errer %s %s - no error happened, but you should not see this.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_GENERIC : LE("Edje file loading errer %s %s - generic error.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_DOES_NOT_EXIST : LE("Edje file loading errer %s %s - file does not exist.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_PERMISSION_DENIED : LE("Edje file loading errer %s %s - permission denied reading the file.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED : LE("Edje file loading errer %s %s - resource allocation failed.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_CORRUPT_FILE : LE("Edje file loading errer %s %s - corrupt file.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_UNKNOWN_FORMAT : LE("Edje file loading errer %s %s - unknown file format.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_INCOMPATIBLE_FILE : LE("Edje file loading errer %s %s - incompatible file.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_UNKNOWN_COLLECTION : LE("Edje file loading errer %s %s - unknown group.", obj->ed->file->path, group); break; + case EDJE_LOAD_ERROR_RECURSIVE_REFERENCE : LE("Edje file loading errer %s %s - recursive reference in group.", obj->ed->file->path, group); break; + } + } + } + edje_object_file_get(elo->evas_obj, &file, &group); + _elua_ret(L, "$file $group", file, group); + // Stack usage [-4, +5, em] + return 1; +} + +//------------- +//------------- +/** +@page luaref +@subsection evas_image Evas image class. + +The lua evas image class includes functions for dealing with evas image objects. +The evas image objects must have been previously created by lua using the lua +image object creation function edje:image(). + +In the following, "image_object" is a place holder for any lua variable that +holds a reference to an evas image object. + +@since 1.1.0 +*/ + +static int _elua_image_fill(lua_State *L); +static int _elua_image_filled(lua_State *L); +static int _elua_image_image(lua_State *L); + +static const char *_elua_evas_image_api = "evas_image"; +static const char *_elua_evas_image_parent = "evas_image_parent"; +static const struct luaL_Reg _elua_evas_image_funcs [] = +{ + {"fill", _elua_image_fill}, // get or set the fill parameters + {"filled", _elua_image_filled}, // get or set the filled state (overrides fill()) + {"image", _elua_image_image}, // get or set image + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection image_fill image_object:fill(x, y, w, h) + +Gets (and optionally sets) how to fill this image's drawing rectangle given the +(real) image bound to it. + +Wraps evas_object_image_fill_set(). + +@param x The x coordinate (from the top left corner of the bound image) to start drawing from. +@param y The y coordinate (from the top left corner of the bound image) to start drawing from. +@param w The width the bound image will be displayed at. +@param h The height the bound image will be displayed at. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer x: The x coordinate (from the top left corner of the bound image) to start drawing from. + - integer y: The y coordinate (from the top left corner of the bound image) to start drawing from. + - integer w: The width the bound image will be displayed at. + - integer h: The height the bound image will be displayed at. + +@since 1.1.0 +*/ +static int +_elua_image_fill(lua_State *L) // Stack usage [-(8|12), +(9|13), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord x, y, w, h; + + if (!_elua_isa(obj, _elua_evas_image_meta)) return 0; + + if (_elua_scan_params(L, 2, "%x %y %w %h", &x, &y, &w, &h) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_object_image_fill_set(elo->evas_obj, x, y, w, h); + } + evas_object_image_fill_get(elo->evas_obj, &x, &y, &w, &h); + _elua_ret(L, "%x %y %w %h", x, y, w, h); + // Stack usage [-8, +9, em] + return 1; +} + +/** +@page luaref +@subsubsection image_filled image_object:filled(filled) + +Get (and optionally set) whether this image fills the object. + +Wraps evas_object_image_filled_set(). + +@param filled A boolean saying if this image fills the object. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean saying if this image fills the object. + +@since 1.1.0 +*/ +static int +_elua_image_filled(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + + if (!_elua_isa(obj, _elua_evas_image_meta)) return 0; + + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + evas_object_image_filled_set(elo->evas_obj, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + lua_pushboolean(L, evas_object_image_filled_get(elo->evas_obj)); + // Stack usage [-0, +0, -] + return 1; +} + +/** +@page luaref +@subsubsection image_image image_object:image(file, key) + +Load an image into this edje object. + +Wraps evas_object_image_file_set(). + +@param file An edje file name (ignored, sandboxed to the file this lua script is in). +@param group The name of an image. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. The file argument is optional, and ignored anyway. + +@return A table with these fields: + - string file: The name of the edje file the image is loaded from. + - string key: The name of the image within the edje file. + +@since 1.1.0 +*/ +static int +_elua_image_image(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + const char *file = NULL, *key = NULL; + int n, id = -1; + + if (!_elua_isa(obj, _elua_evas_image_meta)) return 0; + + n = _elua_scan_params(L, 2, "$file $key", &file, &key); + // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + if (0 >= n) + { + file = (char *) obj->ed->file->path; + key = (char *) lua_tostring(L, 2); // Stack usage [-0, +0, m] + n = 2; + } + + if (1 < n) + { + if (obj->ed->file->image_dir) + { + Edje_Image_Directory_Entry *de; + unsigned int i; + char *name; + + /* Image name */ + if ((name = strrchr(key, '/'))) name++; + else name = (char *)key; + + /* Loop through image directory to find if image exists */ + for (i = 0; i < obj->ed->file->image_dir->entries_count; ++i) + { + de = obj->ed->file->image_dir->entries + i; + + if (de->entry) + { + if (strcmp(name, de->entry) == 0) + { + char buf[32]; + + id = i; + // This is copied from _edje_image_recalc_apply()), dunno if it provides any benefit over sprintf(). + /* Replace snprint("edje/images/%i") == memcpy + itoa */ +#define IMAGES "edje/images/" + memcpy(buf, IMAGES, strlen(IMAGES)); + eina_convert_itoa(id, buf + strlen(IMAGES)); /* No need to check length as 2³² need only 10 characters. */ + evas_object_image_file_set(elo->evas_obj, obj->ed->file->path, buf); + break; + } + } + } + } + + if (-1 == id) + { + LE("Image %s not found in our edje file.", key); + /* Sandbox lua - Only allow access to images within the same edje file. I'm not so sure we need this level of sandboxing though. So leaving it here, just in case. + LI("Image %s not found in our edje file, trying external image file %s.", key, file); + evas_object_image_file_set(elo->evas_obj, file, key); + */ + } + } + evas_object_image_file_get(elo->evas_obj, &file, &key); + _elua_ret(L, "$file $key", file, key); + // Stack usage [-4, +5, em] + return 1; +} + +//------------- +//------------- +/** +@page luaref +@subsection evas_line Evas line class. + +The lua evas line class includes functions for dealing with evas line objects. +The evas line objects must have been previously created by lua using the lua +line object creation function edje:line(). + +In the following, "line_object" is a place holder for any lua variable that +holds a reference to an evas line object. + +@since 1.1.0 +*/ + +static int _elua_line_xy(lua_State *L); + +static const char *_elua_evas_line_api = "evas_line"; +static const char *_elua_evas_line_parent = "evas_line_parent"; +static const struct luaL_Reg _elua_evas_line_funcs [] = +{ + {"xy", _elua_line_xy}, // get or set line coords + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection line_xy line_object:xy(x1, y1, x2, y2) + +Sets the end points of this line. + +Wraps evas_object_line_xy_set(). + +@param x1 The X coordinate of the first line end. +@param y1 The Y coordinate of the first line end. +@param x2 The X coordinate of the other line end. +@param y2 The Y coordinate of the other line end. + +Note that the arguments are optional, without them this function just queries +the current values. The arguments can be separate values, or named fields in a +table. + +@return A table with these fields: + - integer x1: The X coordinate of the first line end. + - integer y1: The Y coordinate of the first line end. + - integer x2: The X coordinate of the other line end. + - integer y2: The Y coordinate of the other line end. + +@since 1.1.0 +*/ +static int _elua_line_xy(lua_State *L) // Stack usage [-(8|12), +(9|13), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord x1, y1, x2, y2; + + if (!_elua_isa(obj, _elua_evas_line_meta)) return 0; + + if (_elua_scan_params(L, 2, "%x1 %y1 %x2 %y2", &x1, &y1, &x2, &y2) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_object_line_xy_set(elo->evas_obj, x1, y1, x2, y2); + } + evas_object_line_xy_get(elo->evas_obj, &x1, &y1, &x2, &y2); + _elua_ret(L, "%x1 %y1 %x2 %y2", x1, y1, x2, y2); + // Stack usage [-8, +9, em] + return 1; +} + +//------------- +//------------- +/** +@page luaref +@subsection evas_object_map Evas map class. + +The lua evas map class includes functions for dealing with evas map objects. +The evas map objects must have been previously created by lua using the lua +map object creation function edje:map(). The evas map system is complex, rather +than repeat the copious documentation here, please refer to the evas map +documentation. It has pictures and everything. B-) + +In the following, "map_object" is a place holder for any lua variable that +holds a reference to an evas map object. + +@since 1.1.0 +*/ + +static int _elua_map_alpha(lua_State *L); +static int _elua_map_clockwise(lua_State *L); +static int _elua_map_colour(lua_State *L); +static int _elua_map_coord(lua_State *L); +static int _elua_map_lighting(lua_State *L); +static int _elua_map_perspective(lua_State *L); +static int _elua_map_populate(lua_State *L); +static int _elua_map_rotate(lua_State *L); +static int _elua_map_rotate3d(lua_State *L); +static int _elua_map_smooth(lua_State *L); +static int _elua_map_uv(lua_State *L); +static int _elua_map_zoom(lua_State *L); + +static const char *_elua_evas_map_api = "ewas_map"; +static const struct luaL_Reg _elua_evas_map_funcs [] = +{ + {"alpha", _elua_map_alpha}, +// {"dup", _elua_map_dup}, // not sure of proper api for this. + {"clockwise", _elua_map_clockwise}, + {"color", _elua_map_colour}, + {"coord", _elua_map_coord}, + {"lighting", _elua_map_lighting}, + {"perspective", _elua_map_perspective}, + {"populate", _elua_map_populate}, + {"rotate", _elua_map_rotate}, + {"rotate3d", _elua_map_rotate3d}, +// {"size", _elua_map_size}, // not sure of proper API for this + {"smooth", _elua_map_smooth}, + {"uv", _elua_map_uv}, + {"zoom", _elua_map_zoom}, + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection map_alpha map_object:alpha(alpha) + +Get (and optionally set) the maps alpha mode. + +Wraps evas_map_alpha_set(). + +@param alpha The alpha mode. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean reflecting the alpha mode. + +@since 1.1.0 +*/ +static int +_elua_map_alpha(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + evas_map_alpha_set(elm->map, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + lua_pushboolean(L, evas_map_alpha_get(elm->map)); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection map_clockwise map_object:clockwise() + +Get the maps clockwise state. + +Wraps evas_map_util_clockwise_get(). + +@return A boolean reflecting if the map is clockwise or not. + +@since 1.1.0 +*/ +static int +_elua_map_clockwise(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + lua_pushboolean(L, evas_map_util_clockwise_get(elm->map)); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection map_colour map_object:colour(index, r, g, b, a) + +Gets or sets colour information for the map. There are two variations, with or +without the index. With the index parameter it gets (and optionally sets) the +colour of the point the index refers to, without it sets the colour for the +entire map. + +Wraps evas_map_point_color_set() or evas_map_util_points_color_set() + +@param index Which point to change the colour of. +@param r The new red value. +@param g The new green value. +@param b The new blue value. +@param a The new alpha value. + +Note that the arguments are optional, without them this function just queries +the current values. The colour arguments can be separate values, or named +fields in a table. + +@return A table with these fields: + - integer r: The red value. + - integer g: The green value. + - integer b: The blue value. + - integer a: The alpha value. + +@since 1.1.0 +*/ +static int +_elua_map_colour(lua_State *L) // Stack usage [-(8|12), +(9|13), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + int r, g, b, a; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + + switch (n) + { + case 5 : + { + if (_elua_scan_params(L, 2, "%r %g %b %a", &r, &g, &b, &a) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_map_util_points_color_set(elm->map, r, g, b, a); + } + break; + } + + case 1 : + case 6 : + { + if (_elua_scan_params(L, 3, "%r %g %b %a", &r, &g, &b, &a) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_map_point_color_set(elm->map, lua_tointeger(L, 2), r, g, b, a); + // Stack usage [-0, +0, -] + } + evas_map_point_color_get(elm->map, lua_tointeger(L, 2), &r, &g, &b, &a); + // Stack usage [-0, +0, -] + _elua_ret(L, "%r %g %b %a", r, g, b, a); + // Stack usage [-8, +9, em] + return 1; + } + } + + return 0; +} + +/** +@page luaref +@subsubsection map_coord map_object:coord(index, x, y, z) + +Gets (and optionally sets) the 3D coordinates of a point on the map. + +Wraps evas_map_point_coord_set(). + +@param x The x coordinate of the point. +@param y The y coordinate of the point. +@param z The z coordinate of the point. + +Note that the arguments are optional, without them this function just queries +the current values. The coordinate arguments can be separate values, or named +fields in a table. + +@return A table with these fields: + - integer x: The x coordinate of the point. + - integer y: The y coordinate of the point. + - integer z: The z coordinate of the point. + +@since 1.1.0 +*/ +static int +_elua_map_coord(lua_State *L) // Stack usage [-(6|9), +(7|10), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + Evas_Coord x, y, z; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (2 > n) return 0; + + if (_elua_scan_params(L, 2, "%x %y %z", &x, &y, &z) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + evas_map_point_coord_set(elm->map, lua_tointeger(L, 2), x, y, z); + // Stack usage [-0, +0, -] + } + evas_map_point_coord_get(elm->map, lua_tointeger(L, 2), &x, &y, &z); + // Stack usage [-0, +0, -] + _elua_ret(L, "%x %y %z", x, y, z); + // Stack usage [-6, +7, em] + return 1; +} + +/** +@page luaref +@subsubsection map_lighting map_object:lighting(x, y, z, r, g, b, ar, ag, ab) + +Set the 3D lights for the map. The three triplets can be tables. + +Wraps evas_map_util_3d_lighting(). + +@param x The x coordinate of the light point. +@param y The y coordinate of the light point. +@param z The z coordinate of the light point. +@param r The new red value of the light point. +@param g The new green value of the light point. +@param b The new blue value of the light point. +@param ar The new red value of the ambient light. +@param ag The new green value of the ambient light. +@param ab The new blue value of the ambient light. + +@since 1.1.0 +*/ +static int +_elua_map_lighting(lua_State *L) // Stack usage [-(0|9), +(0|9), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + Evas_Coord x, y, z; + int r, g, b, r1, g1, b1; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + if ((n = _elua_scan_params(L, 2, "%x %y %z", &x, &y, &z)) > 0) + // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + if (n += _elua_scan_params(L, 2 + n, "%r %g %b", &r, &g, &b) > 0) + // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + if (_elua_scan_params(L, 2 + n, "%r %g %b", &r1, &g1, &b1) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + evas_map_util_3d_lighting(elm->map, x, y, z, r, g, b, r1, g1, b1); + } + return 0; +} + +/** +@page luaref +@subsubsection map_perspective map_object:perspective(x, y, z, f) + +Apply a perspective transform to the map. + +Wraps evas_map_util_3d_perspective(). + +The arguments can be separate values, or named fields in a table. + +@param x The perspective distance X coordinate +@param y The perspective distance Y coordinate +@param z The "0" z plane value +@param f The focal distance + +@since 1.1.0 +*/ +static int +_elua_map_perspective(lua_State *L) // Stack usage [-(0|4), +(0|4), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + Evas_Coord x, y, z, f; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + if (_elua_scan_params(L, 2, "%x %y %z %f", &x, &y, &z, &f) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_map_util_3d_perspective(elm->map, x, y, z, f); + } + return 0; +} + +/** +@page luaref +@subsubsection map_populate map_object:populate(...) + +Populate the points in a map, in one of three different methods. + +1) Wraps evas_map_util_points_populate_from_object(). + +@param source An evas object to copy points from. + +2) Wraps evas_map_util_paints_populate_from_object_full(). + +@param source An evas object to copy points from. +@param z Common Z coordinate hint for all four points. + +3) Wraps evas_map_util_points_populate_from_geometry(). + +The first four arguments can be separate values, or named fields in a table. + +@param x Point X coordinate +@param y Point Y coordinate +@param w Width to use to calculate second and third points. +@param h Height to use to calculate third and fourth points. +@param z Common Z coordinate hint for all four points. + +@since 1.1.0 +*/ +static int +_elua_map_populate(lua_State *L) // Stack usage [-(0|4), +(0|4), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + + switch (n) + { + case 2 : + { + Edje_Lua_Obj *obj2 = (Edje_Lua_Obj *)lua_touserdata(L, 2); // Stack usage [-0, +0, -] + const Edje_Lua_Evas_Object *source = (Edje_Lua_Evas_Object *)obj2; + + if (!_elua_isa(obj2, _elua_evas_meta)) return 0; + evas_map_util_points_populate_from_object(elm->map, source->evas_obj); + break; + } + + case 3 : + { + Edje_Lua_Obj *obj2 = (Edje_Lua_Obj *)lua_touserdata(L, 2); // Stack usage [-0, +0, -] + const Edje_Lua_Evas_Object *source = (Edje_Lua_Evas_Object *)obj2; + Evas_Coord z = lua_tointeger(L, 3); + + if (!_elua_isa(obj2, _elua_evas_meta)) return 0; + evas_map_util_points_populate_from_object_full(elm->map, source->evas_obj, z); + break; + } + + case 6 : + { + Evas_Coord x, y, w, h; + + if ((n = _elua_scan_params(L, 2, "%x %y %w %h", &x, &y, &w, &h)) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-4, +4, e] + evas_map_util_points_populate_from_geometry(elm->map, x, y, w, h, lua_tointeger(L, 2 + n)); + } + break; + } + } + return 0; +} + +/** +@page luaref +@subsubsection map_rotate map_object:rotate(degrees, x, y) + +Rotate the maps coordinates in 2D. + +Wraps evas_map_util_rotate(). + +The coordinates can be separate values, or named fields in a table. + +@param degrees Amount of degrees from 0.0 to 360.0 to rotate. +@param x Rotation's centre horizontal position. +@param y Rotation's centre vertical position. + +@since 1.1.0 +*/ +static int +_elua_map_rotate(lua_State *L) // Stack usage [-(0|2), +(0|2), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + double degrees; + Evas_Coord x, y; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (4 != n) return 0; + + degrees = lua_tonumber(L, 2); + if (_elua_scan_params(L, 3, "%x %y", &x, &y) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + evas_map_util_rotate(elm->map, degrees, x, y); + } + return 0; +} + +/** +@page luaref +@subsubsection map_rotate3d map_object:rotate3d(dx, dy, dz, x, y, z) + +Rotate the maps coordinates in 3D. + +Wraps evas_map_util_3d_rotate(). + +The coordinates can be separate values, or named fields in a table. The same +with the rotation. + +@param dx Amount of degrees from 0.0 to 360.0 to rotate around X axis. +@param dy Amount of degrees from 0.0 to 360.0 to rotate around Y axis. +@param dz Amount of degrees from 0.0 to 360.0 to rotate around Z axis. +@param x Rotation's centre horizontal position. +@param y Rotation's centre vertical position. +@param z Rotation's centre vertical position. + +@since 1.1.0 +*/ +static int +_elua_map_rotate3d(lua_State *L) // Stack usage [-(0|6), +(0|6), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + double zx, zy, zz; + Evas_Coord x, y, z; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + if ((n = _elua_scan_params(L, 2, "#x #y #z", &zx, &zy, &zz)) > 0) + // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + if (_elua_scan_params(L, 2 + n, "%x %y %z", &x, &y, &z) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-3, +3, e] + evas_map_util_3d_rotate(elm->map, zx, zy, zz, x, y, z); + } + return 0; +} + +/** +@page luaref +@subsubsection map_smooth map_object:smooth(smooth) + +Get (and optionally set) the maps smooth mode. + +Wraps evas_map_smooth_set(). + +@param smooth The smooth mode. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A boolean reflecting the smooth mode. + +@since 1.1.0 +*/ +static int +_elua_map_smooth(lua_State *L) // Stack usage [-0, +1, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + evas_map_smooth_set(elm->map, lua_toboolean(L, 2)); + // Stack usage [-0, +0, -] + } + lua_pushboolean(L, evas_map_smooth_get(elm->map)); // Stack usage [-0, +1, -] + return 1; +} + +/** +@page luaref +@subsubsection map_uv map_object:uv(index, u, v) + +Gets (and optionally sets) the texture U and V texture coordinates for this map. + +Wraps evas_map_point_image_uv_set(). + +@param index Index of the point to change. Must be smaller than map size. +@param u The X coordinate within the image/texture source. +@param v The Y coordinate within the image/texture source. + +Note that the U,V arguments are optional, without them this function just queries +the current values. The coordinate arguments can be separate values, or named +fields in a table. + +@return A table with these fields: + - number u: The X coordinate within the image/texture source. + - number v: The Y coordinate within the image/texture source. + +@since 1.1.0 +*/ +static int +_elua_map_uv(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + double u, v; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (2 > n) return 0; + + if (_elua_scan_params(L, 3, "#u #v", &u, &v) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + evas_map_point_image_uv_set(elm->map, lua_tonumber(L, 2), u, v); + // Stack usage [-0, +0, -] + } + evas_map_point_image_uv_get(elm->map, lua_tonumber(L, 2), &u, &v); + // Stack usage [-0, +0, -] + _elua_ret(L, "#u #v", u, v); + // Stack usage [-4, +5, em] + return 1; +} + +/** +@page luaref +@subsubsection map_zoom map_object:zoom(x, y, x, y) + +Apply a zoom to the map. + +Wraps evas_map_util_zoom(). + +The arguments can be two separate values, or named fields in a table. + +@param x The horizontal zoom amount. +@param y The vertical zoom amount. +@param x The X coordinate of the centre of the zoom. +@param y The Y coordinate of the centre of the zoom. + +@since 1.1.0 +*/ +static int +_elua_map_zoom(lua_State *L) // Stack usage [-(0|4), +(0|4), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Map *elm = (Edje_Lua_Map *)obj; + double zx, zy; + Evas_Coord x, y; + int n; + + if (!_elua_isa(obj, _elua_evas_map_meta)) return 0; + + if ((n = _elua_scan_params(L, 2, "#x #y", &zx, &zy)) > 0) + // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + if (_elua_scan_params(L, 2 + n, "%x %y", &x, &y) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + evas_map_util_zoom(elm->map, zx, zy, x, y); + } + return 0; +} + +//------------- +//------------- +/** +@page luaref +@subsection evas_polygon Evas polygon class. + +The lua evas polygon class includes functions for dealing with evas polygon objects. +The evas polygon objects must have been previously created by lua using the lua +polygon object creation function edje:polygon(). + +In the following, "polygon_object" is a place holder for any lua variable that +holds a reference to an evas polygon object. + +@since 1.1.0 +*/ + +static int _elua_polygon_clear(lua_State *L); +static int _elua_polygon_point(lua_State *L); + +static const char *_elua_evas_polygon_api = "evas_polygon"; +static const char *_elua_evas_polygon_parent = "evas_polygon_parent"; +static const struct luaL_Reg _elua_evas_polygon_funcs [] = +{ + {"clear", _elua_polygon_clear}, // clear all polygon points + {"point", _elua_polygon_point}, // add a polygon point + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection polygon_clear polygon_object:clear() + +Clears all points from the polygon. + +Wraps evas_object_polygon_points_clear(), + +@since 1.1.0 +*/ +static int +_elua_polygon_clear(lua_State *L) // Stack usage [-0, +0, -] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + + if (!_elua_isa(obj, _elua_evas_polygon_meta)) return 0; + evas_object_polygon_points_clear(elo->evas_obj); + return 0; +} + +/** +@page luaref +@subsubsection polygon_point polygon_object:point(x, y) + +Adds a point to this polygon. + +Wraps evas_object_polygon_point_add(). + +@param x The X coordinate of the point. +@param y The Y coordinate of the point. + +@since 1.1.0 +*/ +static int +_elua_polygon_point(lua_State *L) // Stack usage [-(0|2), +(0|2), e] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + Evas_Coord x, y; + + if (!_elua_isa(obj, _elua_evas_polygon_meta)) return 0; + + if (_elua_scan_params(L, 2, "%x %y", &x, &y) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + evas_object_polygon_point_add(elo->evas_obj, x, y); + } + + return 0; +} + +//------------- +//------------- +/** +@page luaref +@subsection evas_text Evas text class. + +The lua evas text class includes functions for dealing with evas text objects. +The evas text objects must have been previously created by lua using the lua +text object creation function edje:text(). + +In the following, "text_object" is a place holder for any lua variable that +holds a reference to an evas text object. + +@since 1.1.0 +*/ + +static int _elua_text_font(lua_State *L); +static int _elua_text_text(lua_State *L); + +static const char *_elua_evas_text_api = "evas_text"; +static const char *_elua_evas_text_parent = "evas_text_parent"; +static const struct luaL_Reg _elua_evas_text_funcs [] = +{ + {"font", _elua_text_font}, // get or set text font + {"text", _elua_text_text}, // get or set text +// {"text_class", _elua_object_text_class}, // get or set object text class + + {NULL, NULL} // end +}; + +/** +@page luaref +@subsubsection text_font text_object:font(font, size) + +Gets, (and optionally sets) the font for this text object. + +Wraps evas_object_text_font_set(). + +@param font The new font name. +@param size The new font size. + +Note that the font and size arguments are optional, without them this function +just queries the current values. The font and size arguments can be separate +values, or named fields in a table. The font name can refer to a font in the +edje file, or an external font. + +@return A table with these fields: + - string font: The font name. + - integer size: The font size. + +@since 1.1.0 +*/ +static int +_elua_text_font(lua_State *L) // Stack usage [-(4|6), +(5|7), em] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + char *font, *font2 = NULL; + Evas_Font_Size size; + int inlined_font = 0; + + if (!_elua_isa(obj, _elua_evas_text_meta)) return 0; + + if (_elua_scan_params(L, 2, "$font %size", &font, &size) > 0) + { // Stack usage [-0, +0, m] unless it's in a table [-2, +2, e] + /* Check if the font is embedded in the .edj + * This is a simple check. + * There is a much more complicated version in edje_text.c _edje_text_recalc_apply(). + * If we need to get more complicated, we can do that later, + * and maybe refactor things. + */ + if (obj->ed->file->fonts) + { + Edje_Font_Directory_Entry *fnt = eina_hash_find(obj->ed->file->fonts, font); + + if (fnt) + { + size_t len = strlen(font) + sizeof("edje/fonts/") + 1; + font2 = alloca(len); + sprintf(font2, "edje/fonts/%s", font); + font = font2; + inlined_font = 1; + font2 = NULL; + } + } + + if (inlined_font) evas_object_text_font_source_set(elo->evas_obj, obj->ed->path); + else evas_object_text_font_source_set(elo->evas_obj, NULL); + + evas_object_text_font_set(elo->evas_obj, font, size); + } + + // When one external API says it's gotta be const, and another one says not, then one of them's gotta be cast. :-P + evas_object_text_font_get(elo->evas_obj, (const char **) &font, &size); + _elua_ret(L, "$font %size", font, size); + // Stack usage [-4, +5, em] + return 1; +} + +/** +@page luaref +@subsubsection text_text text_object:text(text) + +Get (and optionally set) the actual text for this text object. + +Wraps evas_object_text_text_set(). + +@param text The text to set for this text object. + +Note that the argument is optional, without it this function just queries the +current value. + +@return A string of the text on this text object. + +@since 1.1.0 +*/ +static int +_elua_text_text(lua_State *L) // Stack usage [-0, +1, m] +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); // Stack usage [-0, +0, -] + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + + if (!_elua_isa(obj, _elua_evas_text_meta)) return 0; + n = lua_gettop(L); // Stack usage [-0, +0, -] + if (n == 2) + { + if (lua_isstring(L, 2)) + { + const char *str; + + if ((str = lua_tostring(L, 2))) // Extra parenthesis, coz Mikes compiler has a lisp. + // Stack usage [-0, +0, m] + evas_object_text_text_set(elo->evas_obj, str); + } + } + lua_pushstring(L, evas_object_text_text_get(elo->evas_obj)); // Stack usage [-0, +1, m] + return 1; +} + + +//--------------------------------------------------------------------------// + +// A metatable and functions so that calling non existant API does not crash Lua scripts. + +static int _elua_bogan_nilfunc(lua_State *L); +static int _elua_bogan_index(lua_State *L); + +static const struct luaL_Reg _elua_bogan_funcs [] = +{ + {"nilfunc", _elua_bogan_nilfunc}, // Just return a nil. + {"__index", _elua_bogan_index}, // Return the above func. + + {NULL, NULL} // end +}; + +static int +_elua_bogan_nilfunc(lua_State *L) +{ + lua_getglobal(L, "nil"); + return 1; +} + +static int +_elua_bogan_index(lua_State *L) +{ + const char *key; + + key = lua_tostring(L, 2); + LE("%s does not exist!", key); + lua_pushcfunction(L, _elua_bogan_nilfunc); + return 1; +} + +static void +_elua_bogan_protect(lua_State *L) // Stack usage [-3, +3, m] +{ + lua_pushnil(L); // Stack usage [-0, +1, -] + luaL_newmetatable(L, "bogan"); // Stack usage [-0, +1, m] + luaL_register(L, 0, _elua_bogan_funcs); // Stack usage [-1, +1, m] + lua_setmetatable(L, -2); // Stack usage [-1, +0, -] + lua_pop(L, 1); // Stack usage [-1, +0, -] +} + +//--------------------------------------------------------------------------// + +// Brain dead inheritance thingy, built for speed. Kinda. Part 1. +static void +_elua_add_functions(lua_State *L, const char *api, const luaL_Reg *funcs, const char *meta, const char *parent, const char *base) // Stack usage [-3, +5, m] if inheriting [-6, +11, em] +{ + // Create an api table, fill it full of the methods. + luaL_register(L, api, funcs); // Stack usage [-0, +1, m] + // Set the api metatable to the bogan metatable. + luaL_getmetatable(L, "bogan"); // Stack usage [-0, +1, -] + lua_setmetatable(L, -2); // Stack usage [-1, +0, -] + // Creat a meta metatable. + luaL_newmetatable(L, meta); // Stack usage [-0, +1, m] + // Put the gc functions in the metatable. + luaL_register(L, 0, _elua_edje_gc_funcs); // Stack usage [-1, +1, m] + // Create an __index entry in the metatable, make it point to the api table. + lua_pushliteral(L, "__index"); // Stack usage [-0, +1, m] + lua_pushvalue(L, -3); // Stack usage [-0, +1, -] + lua_rawset(L, -3); // Stack usage [-2, +0, m] + // Later this metatable is used as the metatable for newly created objects of this class. + + if (base && parent) + { + // Inherit from base + lua_getglobal(L, base); // Stack usage [-0, +1, e] + // Create a new parent metatable. + luaL_newmetatable(L, parent); // Stack usage [-0, +1, m] + // Create an __index entry in the metatable, make it point to the base table. + lua_pushliteral(L, "__index"); // Stack usage [-0, +1, m] + lua_pushvalue(L, -3); // Stack usage [-0, +1, -] + lua_rawset(L, -3); // Stack usage [-2, +0, m] + // Set the metatable for the api table to the parent metatable. + lua_getglobal(L, api); // Stack usage [-0, +1, e] + luaL_getmetatable(L, parent); // Stack usage [-0, +1, -] + lua_setmetatable(L, -2); // Stack usage [-1, +0, -] + } +} + +// Brain dead inheritance thingy, built for speed. Kinda. Part 2. +static Eina_Bool +_elua_isa(Edje_Lua_Obj *obj, const char *type) +{ + Eina_Bool isa = EINA_FALSE; + + if (!obj) return isa; + if (obj->meta == type) + isa = EINA_TRUE; + if (_elua_evas_meta == type) + { + if (obj->meta == _elua_evas_image_meta) + isa = EINA_TRUE; + else if (obj->meta == _elua_evas_text_meta) + isa = EINA_TRUE; + else if (obj->meta == _elua_evas_edje_meta) + isa = EINA_TRUE; + else if (obj->meta == _elua_evas_line_meta) + isa = EINA_TRUE; + else if (obj->meta == _elua_evas_polygon_meta) + isa = EINA_TRUE; + } + return isa; +} + +#ifndef RASTER_FORGOT_WHY +static void +_elua_init(void) // Stack usage [-16, +20, em] +{ + static Edje_Lua_Alloc ela = { MAX_LUA_MEM, 0 }; + const luaL_Reg *l; + lua_State *L; + + if (lstate) return; + + lstate = L = lua_newstate(_elua_alloc, &ela); // Stack usage [-0, +0, -] + lua_atpanic(L, _elua_custom_panic); // Stack usage [-0, +0, -] + +// FIXME: figure out optimal gc settings later +// lua_gc(L, LUA_GCSETPAUSE, 200); // Stack usage [-0, +0, e] +// lua_gc(L, LUA_GCSETSTEPMUL, 200); // Stack usage [-0, +0, e] + + for (l = _elua_libs; l->func; l++) // Currently * 4 + { + lua_pushcfunction(L, l->func); // Stack usage [-0, +1, m] + lua_pushstring(L, l->name); // Stack usage [-0, +1, m] + lua_call(L, 1, 0); // Stack usage [-2, +0, e] + } + + luaL_register(L, _elua_edje_api, _elua_edje_funcs); // Stack usage [-0, +1, m] + luaL_newmetatable(L, _elua_edje_meta); // Stack usage [-0, +1, m] + luaL_register(L, 0, _elua_edje_gc_funcs); // Stack usage [-1, +1, m] + + _elua_add_functions(L, _elua_evas_api, _elua_evas_funcs, _elua_evas_meta, NULL, NULL); // Stack usage [-3, +5, m] + + // weak table for our objects + lua_pushlightuserdata(L, &_elua_objs); // Stack usage [-0, +1, -] + lua_newtable(L); // Stack usage [-0, +1, m] + lua_pushstring(L, "__mode"); // Stack usage [-0, +1, m] + lua_pushstring(L, "v"); // Stack usage [-0, +1, m] + lua_rawset(L, -3); // Stack usage [-2, +0, m] + lua_rawset(L, LUA_REGISTRYINDEX); // Stack usage [-2, +0, m] +} +#endif + +void +_edje_lua2_script_init(Edje *ed) // Stack usage [-63, +99, em] +{ + static Edje_Lua_Alloc ela = { MAX_LUA_MEM, 0 }; + const luaL_Reg *l; + char buf[256]; + void *data; + int size; + lua_State *L; + + if (ed->L) return; + if (0 > _log_domain) + _log_domain = eina_log_domain_register("lua", NULL); + if (0 <= _log_domain) + { + _log_count++; + eina_log_domain_level_set("lua", EINA_LOG_LEVEL_WARN); + } + +#ifndef RASTER_FORGOT_WHY + _elua_init(); // This is actually truly pointless, even if raster remembers. +#endif + L = ed->L = lua_newstate(_elua_alloc, &ela); // Stack usage [-0, +0, -] + lua_atpanic(L, _elua_custom_panic); // Stack usage [-0, +0, -] + +// FIXME: figure out optimal gc settings later +// lua_gc(L, LUA_GCSETPAUSE, 200); // Stack usage [-0, +0, e] +// lua_gc(L, LUA_GCSETSTEPMUL, 200); // Stack usage [-0, +0, e] + + for (l = _elua_libs; l->func; l++) // Currently * 4 + { + lua_pushcfunction(L, l->func); // Stack usage [-0, +1, m] + lua_pushstring(L, l->name); // Stack usage [-0, +1, m] + lua_call(L, 1, 0); // Stack usage [-2, +0, m] + } + + _elua_bogan_protect(L); // Stack usage [+3, -3, m] + + luaL_register(L, _elua_edje_api, _elua_edje_funcs); // Stack usage [-0, +1, m] + luaL_getmetatable(L, "bogan"); // Stack usage [-0, +1, -] + lua_setmetatable(L, -2); // Stack usage [-1, +0, -] + luaL_newmetatable(L, _elua_edje_meta); // Stack usage [-0, +1, m] + luaL_register(L, 0, _elua_edje_gc_funcs); // Stack usage [-1, +1, m] + + lua_pop(L, 2); // Stack usage [-n, +0, -] + + _elua_add_functions(L, _elua_evas_api, _elua_evas_funcs, _elua_evas_meta, NULL, NULL); + // Stack usage [-3, +5, m] + _elua_add_functions(L, _elua_ecore_timer_api, _elua_ecore_timer_funcs, _elua_ecore_timer_meta, NULL, NULL); + // Stack usage [-3, +5, m] + _elua_add_functions(L, _elua_ecore_animator_api, _elua_ecore_animator_funcs, _elua_ecore_animator_meta, NULL, NULL); + // Stack usage [-6, +11, m] + _elua_add_functions(L, _elua_evas_edje_api, _elua_evas_edje_funcs, _elua_evas_edje_meta, _elua_evas_edje_parent, _elua_evas_api); + // Stack usage [-6, +11, em] + _elua_add_functions(L, _elua_evas_image_api, _elua_evas_image_funcs, _elua_evas_image_meta, _elua_evas_image_parent, _elua_evas_api); + // Stack usage [-6, +11, em] + _elua_add_functions(L, _elua_evas_line_api, _elua_evas_line_funcs, _elua_evas_line_meta, _elua_evas_line_parent, _elua_evas_api); + // Stack usage [-6, +11, em] + _elua_add_functions(L, _elua_evas_map_api, _elua_evas_map_funcs, _elua_evas_map_meta, NULL, NULL); + // Stack usage [-3, +5, m] + _elua_add_functions(L, _elua_evas_polygon_api, _elua_evas_polygon_funcs, _elua_evas_polygon_meta, _elua_evas_polygon_parent, _elua_evas_api); + // Stack usage [-6, +11, em] + _elua_add_functions(L, _elua_evas_text_api, _elua_evas_text_funcs, _elua_evas_text_meta, _elua_evas_text_parent, _elua_evas_api); + // Stack usage [-6, +11, em] + + // weak table for our objects + lua_pushlightuserdata(L, &_elua_objs); // Stack usage [-0, +1, -] + lua_newtable(L); // Stack usage [-0, +1, m] + lua_pushstring(L, "__mode"); // Stack usage [-0, +1, m] + lua_pushstring(L, "v"); // Stack usage [-0, +1, m] + lua_rawset(L, -3); // Stack usage [-2, +0, m] + lua_rawset(L, LUA_REGISTRYINDEX); // Stack usage [-2, +0, m] + + _elua_table_ptr_set(L, _elua_key, ed); // Stack usage [-2, +2, e] + + snprintf(buf, sizeof(buf), "edje/scripts/lua/%i", ed->collection->id); + data = eet_read(ed->file->ef, buf, &size); + + if (data) + { + int err; + + /* This ends up pushing a function onto the stack for the lua_pcall() below to use. + * The function is the compiled code. */ + err = luaL_loadbuffer(L, data, size, "edje_lua_script"); // Stack usage [-0, +1, m] + if (err) + { + if (err == LUA_ERRSYNTAX) + ERR("Lua load syntax error: %s", + lua_tostring(L, -1)); // Stack usage [-0, +0, m] + else if (err == LUA_ERRMEM) + ERR("Lua load memory allocation error: %s", + lua_tostring(L, -1)); // Stack usage [-0, +0, m] + } + free(data); + /* This is not needed, pcalls don't longjmp(), that's why they are protected. + if (setjmp(panic_jmp) == 1) + { + ERR("Lua script init panic"); + return; + } + */ + if ((err = lua_pcall(L, 0, 0, 0))) // Stack usage [-1, +0, -] + _edje_lua2_error(L, err); // Stack usage [-0, +0, m] + } +} + +void +_edje_lua2_script_shutdown(Edje *ed) +{ + if (!ed->L) return; + lua_close(ed->L); // Stack usage irrelevant, as it's all gone now. + ed->L = NULL; + while (ed->lua_objs) + { + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)ed->lua_objs; + if (obj->free_func) + { + ERR("uncollected Lua object %p", obj); + ed->lua_objs = eina_inlist_remove(ed->lua_objs, ed->lua_objs); + } + else + { + ERR("dangling Lua object %p", obj); + ed->lua_objs = eina_inlist_remove(ed->lua_objs, ed->lua_objs); + } + } + + if (0 <= _log_domain) + { + _log_count--; + if (0 >= _log_count) + { + eina_log_domain_unregister(_log_domain); + _log_domain = -1; + } + } +} + +void +_edje_lua2_script_load(Edje_Part_Collection *edc __UNUSED__, void *data __UNUSED__, int size __UNUSED__) // Stack usage [-16, +20, em] +{ +#ifndef RASTER_FORGOT_WHY + _elua_init(); // Stack usage [-16, +20, em] +#endif +} + +void +_edje_lua2_script_unload(Edje_Part_Collection *edc __UNUSED__) // Stack usage [-0, +0, e] +{ +#ifndef RASTER_FORGOT_WHY + lua_State *L; + + if (!lstate) return; + L = lstate; + lua_gc(L, LUA_GCCOLLECT, 0); // Stack usage [-0, +0, e] +#endif +} + +void +_edje_lua2_error_full(const char *file, const char *fnc, int line, + lua_State *L, int err_code) // Stack usage [-0, +0, m] +{ + const char *err_type; + + switch (err_code) + { + case LUA_ERRRUN: + err_type = "runtime"; + break; + case LUA_ERRSYNTAX: + err_type = "syntax"; + break; + case LUA_ERRMEM: + err_type = "memory allocation"; + break; + case LUA_ERRERR: + err_type = "error handler"; + break; + default: + err_type = "unknown"; + break; + } + eina_log_print + (_edje_default_log_dom, EINA_LOG_LEVEL_ERR, file, fnc, line, + "Lua %s error: %s", err_type, lua_tostring(L, -1)); // Stack usage [-0, +0, m] +} + +/** +@page luaref +@section callbacks Lua callbacks + +These are lua functions that are called by the lua edje system when certain +events occur. If the functions don't exist in the lua group, they don't get +called. + + */ + +/** +@page luaref +@subsection edje_shutdown Edje shutdown() callback. + +If a function called "shutdown" exists in a lua edje group, then it is called when +that edje gets deleted. +*/ +void +_edje_lua2_script_func_shutdown(Edje *ed) // Stack usage [-1, +1, em] +{ + int err; + + lua_getglobal(ed->L, "shutdown"); // Stack usage [-0, +1, e] + if (!lua_isnil(ed->L, -1)) // Stack usage [-0, +0, -] + { + if ((err = lua_pcall(ed->L, 0, 0, 0))) // Stack usage [-1, +0, -] + _edje_lua2_error(ed->L, err); // Stack usage [-0, +0, m] + } + else + lua_pop(ed->L, 1); // Stack usage [-n, +0, -] + _edje_lua2_script_shutdown(ed); +} + +/** +@page luaref +@subsection edje_show Edje show() callback. + +If a function called "show" exists in a lua edje group, then it is called when +that edje gets shown. +*/ +void +_edje_lua2_script_func_show(Edje *ed) // Stack usage [-1, +1, e] +{ + int err; + + lua_getglobal(ed->L, "show"); + if (!lua_isnil(ed->L, -1)) + { + if ((err = lua_pcall(ed->L, 0, 0, 0))) + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); +} + +/** +@page luaref +@subsection edje_hide Edje hide() callback. + +If a function called "hide" exists in a lua edje group, then it is called when +that edje gets hidden. +*/ +void +_edje_lua2_script_func_hide(Edje *ed) // Stack usage [-1, +1, e] +{ + int err; + + lua_getglobal(ed->L, "hide"); + if (!lua_isnil(ed->L, -1)) + { + if ((err = lua_pcall(ed->L, 0, 0, 0))) + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); +} + +/** +@page luaref +@subsection edje_move Edje move(x, y) callback. + +If a function called "move" exists in a lua edje group, then it is called when +that edje gets moved, with the new position passed to it. +*/ +void +_edje_lua2_script_func_move(Edje *ed) // Stack usage [-3, +3, e] or [-1, +1, e] if no matching function. +{ + int err; + + // FIXME: move all objects created by script + lua_getglobal(ed->L, "move"); // Stack usage [-0, +1, e] + if (!lua_isnil(ed->L, -1)) // Stack usage [-0, +0, -] + { + lua_pushinteger(ed->L, ed->x); // Stack usage [-0, +1, -] + lua_pushinteger(ed->L, ed->y); // Stack usage [-0, +1, -] + if ((err = lua_pcall(ed->L, 2, 0, 0))) // Stack usage [-3, +0, -] + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); // Stack usage [-n, +0, -] +} + +/** +@page luaref +@subsection edje_resize Edje resize(w, h) callback. + +If a function called "resize" exists in a lua edje group, then it is called when +that edje gets resized, with the new size passed to it. +*/ +void +_edje_lua2_script_func_resize(Edje *ed) // Stack usage [-3, +3, e] or [-1, +1, e] if no matching function. +{ + int err; + + lua_getglobal(ed->L, "resize"); + if (!lua_isnil(ed->L, -1)) + { + lua_pushinteger(ed->L, ed->w); + lua_pushinteger(ed->L, ed->h); + if ((err = lua_pcall(ed->L, 2, 0, 0))) + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); +} + +/** +@page luaref +@subsection edje_message Edje message(id, type, ...) callback. + +If a function called "message" exists in a lua edje group, then it is called when +that edje gets gets a message sent to it, with the message details passed to it. +See edje:messagesend() for details of what each type means. The arrays are +passed as a table. +*/ +void +_edje_lua2_script_func_message(Edje *ed, Edje_Message *em) // Stack usage [-?, +?, em] It's complicated, but it's even at least. +{ + int err, n, c, i; + + lua_getglobal(ed->L, "message"); // Stack usage [-0, +1, e] + if (!lua_isnil(ed->L, -1)) // Stack usage [-0, +0, -] + { + n = 2; + lua_pushinteger(ed->L, em->id); // Stack usage [-0, +1, -] + switch (em->type) + { + case EDJE_MESSAGE_NONE: + lua_pushstring(ed->L, "none"); // Stack usage [-0, +1, m] + break; + case EDJE_MESSAGE_SIGNAL: + break; + case EDJE_MESSAGE_STRING: + lua_pushstring(ed->L, "str"); // Stack usage [-0, +1, m] + lua_pushstring(ed->L, ((Edje_Message_String *)em->msg)->str); + // Stack usage [-0, +1, m] + n += 1; + break; + case EDJE_MESSAGE_INT: + lua_pushstring(ed->L, "int"); // Stack usage [-0, +1, m] + lua_pushinteger(ed->L, ((Edje_Message_Int *)em->msg)->val); + // Stack usage [-0, +1, -] + n += 1; + break; + case EDJE_MESSAGE_FLOAT: + lua_pushstring(ed->L, "float"); // Stack usage [-0, +1, m] + lua_pushnumber(ed->L, ((Edje_Message_Float *)em->msg)->val); + // Stack usage [-0, +1, -] + n += 1; + break; + case EDJE_MESSAGE_STRING_SET: + lua_pushstring(ed->L, "strset"); // Stack usage [-0, +1, m] + c = ((Edje_Message_String_Set *)em->msg)->count; + lua_createtable(ed->L, c, 0); // Stack usage [-0, +1, m] + for (i = 0; i < c; i++) + { + lua_pushstring(ed->L, ((Edje_Message_String_Set *)em->msg)->str[i]); + // Stack usage [-0, +1, m] + // It's OK to bypass the metatable in these cases, + // we create the table, and know there is no metatable. B-) + lua_rawseti(ed->L, -2, i + 1); // Stack usage [-1, +0, m] + } + n += 1; + break; + case EDJE_MESSAGE_INT_SET: + lua_pushstring(ed->L, "intset"); // Stack usage [-0, +1, m] + c = ((Edje_Message_Int_Set *)em->msg)->count; + lua_createtable(ed->L, c, 0); // Stack usage [-0, +1, m] + for (i = 0; i < c; i++) + { + lua_pushinteger(ed->L, ((Edje_Message_Int_Set *)em->msg)->val[i]); + // Stack usage [-0, +1, -] + lua_rawseti(ed->L, -2, i + 1); // Stack usage [-1, +0, m] + } + n += 1; + break; + case EDJE_MESSAGE_FLOAT_SET: + lua_pushstring(ed->L, "floatset"); // Stack usage [-0, +1, m] + c = ((Edje_Message_Float_Set *)em->msg)->count; + lua_createtable(ed->L, c, 0); // Stack usage [-0, +1, m] + for (i = 0; i < c; i++) + { + lua_pushnumber(ed->L, ((Edje_Message_Float_Set *)em->msg)->val[i]); + // Stack usage [-0, +1, -] + lua_rawseti(ed->L, -2, i + 1); // Stack usage [-1, +0, m] + } + n += 1; + break; + case EDJE_MESSAGE_STRING_INT: + lua_pushstring(ed->L, "strint"); // Stack usage [-0, +1, m] + lua_pushstring(ed->L, ((Edje_Message_String_Int *)em->msg)->str); + // Stack usage [-0, +1, m] + lua_pushinteger(ed->L, ((Edje_Message_String_Int *)em->msg)->val); + // Stack usage [-0, +1, -] + n += 2; + break; + case EDJE_MESSAGE_STRING_FLOAT: + lua_pushstring(ed->L, "strfloat"); // Stack usage [-0, +1, m] + lua_pushstring(ed->L, ((Edje_Message_String_Float *)em->msg)->str); + // Stack usage [-0, +1, m] + lua_pushnumber(ed->L, ((Edje_Message_String_Float *)em->msg)->val); + // Stack usage [-0, +1, -] + n += 2; + break; + case EDJE_MESSAGE_STRING_INT_SET: + lua_pushstring(ed->L, "strintset"); // Stack usage [-0, +1, m] + lua_pushstring(ed->L, ((Edje_Message_String_Int_Set *)em->msg)->str); + // Stack usage [-0, +1, m] + c = ((Edje_Message_String_Int_Set *)em->msg)->count; + lua_createtable(ed->L, c, 0); // Stack usage [-0, +1, m] + for (i = 0; i < c; i++) + { + lua_pushinteger(ed->L, ((Edje_Message_String_Int_Set *)em->msg)->val[i]); + // Stack usage [-0, +1, -] + lua_rawseti(ed->L, -2, i + 1); // Stack usage [-1, +0, m] + } + n += 2; + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + lua_pushstring(ed->L, "strfloatset"); // Stack usage [-0, +1, m] + lua_pushstring(ed->L, ((Edje_Message_String_Float_Set *)em->msg)->str); + // Stack usage [-0, +1, m] + c = ((Edje_Message_String_Float_Set *)em->msg)->count; + lua_createtable(ed->L, c, 0); // Stack usage [-0, +1, m] + for (i = 0; i < c; i++) + { + lua_pushnumber(ed->L, ((Edje_Message_String_Float_Set *)em->msg)->val[i]); + // Stack usage [-0, +1, -] + lua_rawseti(ed->L, -2, i + 1); // Stack usage [-1, +0, m] + } + n += 2; + break; + default: + break; + } + if ((err = lua_pcall(ed->L, n, 0, 0))) // Stack usage [-n+1, +0, -] + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); // Stack usage [-n, +0, -] +} + +/** +@page luaref +@subsection edje_signal Edje signal(signal, source) callback. + +If a function called "signal" exists in a lua edje group, then it is called when +ever a signal arrives, with the signal details passed to it. + +*/ +void +_edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src) // Stack usage [-3, +3, em] or [-1, +1, e] if no matching function. +{ + int err; + + lua_getglobal(ed->L, "signal"); + if (!lua_isnil(ed->L, -1)) + { + lua_pushstring(ed->L, sig); + lua_pushstring(ed->L, src); + if ((err = lua_pcall(ed->L, 2, 0, 0))) + _edje_lua2_error(ed->L, err); + } + else + lua_pop(ed->L, 1); +} diff --git a/src/lib/edje_lua_script_only.c b/src/lib/edje_lua_script_only.c new file mode 100644 index 0000000..e283c83 --- /dev/null +++ b/src/lib/edje_lua_script_only.c @@ -0,0 +1,59 @@ +#include "edje_private.h" + +Eina_Bool +_edje_lua_script_only(Edje *ed) +{ + if ((ed->collection) && (ed->collection->lua_script_only)) + return EINA_TRUE; + return EINA_FALSE; +} + +void +_edje_lua_script_only_init(Edje *ed) +{ + if (ed->collection) + _edje_lua2_script_init(ed); +} + +void +_edje_lua_script_only_shutdown(Edje *ed) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_shutdown(ed); +} + +void +_edje_lua_script_only_show(Edje * ed) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_show(ed); +} + +void +_edje_lua_script_only_hide(Edje * ed) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_hide(ed); +} + +void +_edje_lua_script_only_move(Edje * ed) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_move(ed); +} + +void +_edje_lua_script_only_resize(Edje * ed) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_resize(ed); +} + +void +_edje_lua_script_only_message(Edje * ed, Edje_Message * em) +{ + if (ed->collection && ed->L) + _edje_lua2_script_func_message(ed, em); +} + diff --git a/src/lib/edje_main.c b/src/lib/edje_main.c new file mode 100644 index 0000000..f9b8eab --- /dev/null +++ b/src/lib/edje_main.c @@ -0,0 +1,296 @@ +#include "edje_private.h" + +static Edje_Version _version = { VMAJ, VMIN, VMIC, VREV }; +EAPI Edje_Version *edje_version = &_version; + +static int _edje_init_count = 0; +int _edje_default_log_dom = -1; +Eina_Mempool *_edje_real_part_mp = NULL; +Eina_Mempool *_edje_real_part_state_mp = NULL; + +/*============================================================================* + * API * + *============================================================================*/ + + +EAPI int +edje_init(void) +{ + if (++_edje_init_count != 1) + return _edje_init_count; + + srand(time(NULL)); + + if (!eina_init()) + return --_edje_init_count; + + _edje_default_log_dom = eina_log_domain_register + ("edje", EDJE_DEFAULT_LOG_COLOR); + if (_edje_default_log_dom < 0) + { + EINA_LOG_ERR("Edje Can not create a general log domain."); + goto shutdown_eina; + } + + if (!ecore_init()) + { + ERR("Ecore init failed"); + goto unregister_log_domain; + } + + if (!embryo_init()) + { + ERR("Embryo init failed"); + goto shutdown_ecore; + } + + if (!eet_init()) + { + ERR("Eet init failed"); + goto shutdown_embryo; + } + +#ifdef HAVE_EIO + if (!eio_init()) + { + ERR("Eio init failed"); + goto shutdown_eet; + } +#endif + + _edje_scale = FROM_DOUBLE(1.0); + + _edje_edd_init(); + _edje_text_init(); + _edje_box_init(); + _edje_external_init(); + _edje_module_init(); + _edje_message_init(); + _edje_multisense_init(); + + _edje_real_part_mp = eina_mempool_add("chained_mempool", + "Edje_Real_Part", NULL, + sizeof (Edje_Real_Part), 32); + if (!_edje_real_part_mp) + { + ERR("Mempool for Edje_Real_Part cannot be allocated."); + goto shutdown_all; + } + + _edje_real_part_state_mp = eina_mempool_add("chained_mempool", + "Edje_Real_Part_State", NULL, + sizeof (Edje_Real_Part_State), 32); + if (!_edje_real_part_state_mp) + { + ERR("Mempool for Edje_Real_Part_State cannot be allocated."); + goto shutdown_all; + } + + return _edje_init_count; + + shutdown_all: + eina_mempool_del(_edje_real_part_state_mp); + eina_mempool_del(_edje_real_part_mp); + _edje_real_part_state_mp = NULL; + _edje_real_part_mp = NULL; + _edje_message_shutdown(); + _edje_module_shutdown(); + _edje_external_shutdown(); + _edje_box_shutdown(); + _edje_text_class_members_free(); + _edje_text_class_hash_free(); + _edje_edd_shutdown(); +#ifdef HAVE_EIO + eio_shutdown(); + shutdown_eet: +#endif + eet_shutdown(); + shutdown_embryo: + embryo_shutdown(); + shutdown_ecore: + ecore_shutdown(); + unregister_log_domain: + eina_log_domain_unregister(_edje_default_log_dom); + _edje_default_log_dom = -1; + shutdown_eina: + eina_shutdown(); + return --_edje_init_count; +} + +static int _edje_users = 0; + +static void +_edje_shutdown_core(void) +{ + if (_edje_users > 0) return; + + _edje_file_cache_shutdown(); + _edje_color_class_members_free(); + _edje_color_class_hash_free(); + + eina_mempool_del(_edje_real_part_state_mp); + eina_mempool_del(_edje_real_part_mp); + _edje_real_part_state_mp = NULL; + _edje_real_part_mp = NULL; + + _edje_multisense_shutdown(); + _edje_message_shutdown(); + _edje_module_shutdown(); + _edje_external_shutdown(); + _edje_box_shutdown(); + _edje_text_class_members_free(); + _edje_text_class_hash_free(); + _edje_edd_shutdown(); + +#ifdef HAVE_EIO + eio_shutdown(); +#endif + eet_shutdown(); + embryo_shutdown(); + ecore_shutdown(); + eina_log_domain_unregister(_edje_default_log_dom); + _edje_default_log_dom = -1; + eina_shutdown(); +} + +void +_edje_lib_ref(void) +{ + _edje_users++; +} + +void +_edje_lib_unref(void) +{ + _edje_users--; + if (_edje_users != 0) return; + if (_edje_init_count == 0) _edje_shutdown_core(); +} + +EAPI int +edje_shutdown(void) +{ + if (_edje_init_count <= 0) + { + ERR("Init count not greater than 0 in shutdown."); + return 0; + } + if (--_edje_init_count != 0) + return _edje_init_count; + + if (_edje_timer) + ecore_animator_del(_edje_timer); + _edje_timer = NULL; + + _edje_shutdown_core(); + + return _edje_init_count; +} + +/* Private Routines */ +static void +_class_member_free(Eina_Hash *hash, + void (*_edje_class_member_direct_del)(const char *class, void *l)) +{ + const char *color_class; + Eina_Iterator *it; + Eina_List *class_kill = NULL; + + if (hash) + { + it = eina_hash_iterator_key_new(hash); + EINA_ITERATOR_FOREACH(it, color_class) + class_kill = eina_list_append(class_kill, color_class); + eina_iterator_free(it); + EINA_LIST_FREE(class_kill, color_class) + { + void *l; + + l = eina_hash_find(hash, color_class); + _edje_class_member_direct_del(color_class, l); + } + eina_hash_free(hash); + } +} + +void +_edje_del(Edje *ed) +{ + Edje_Running_Program *runp; + Edje_Pending_Program *pp; + Edje_Signal_Callback *escb; + Edje_Text_Class *tc; + Edje_Text_Insert_Filter_Callback *cb; + + if (ed->processing_messages) + { + ed->delete_me = 1; + return; + } + _edje_message_del(ed); + _edje_callbacks_patterns_clean(ed); + _edje_file_del(ed); + if (ed->path) eina_stringshare_del(ed->path); + if (ed->group) eina_stringshare_del(ed->group); + if (ed->parent) eina_stringshare_del(ed->parent); + ed->path = NULL; + ed->group = NULL; + if ((ed->actions) || (ed->pending_actions)) + { + _edje_animators = eina_list_remove(_edje_animators, ed); + } + EINA_LIST_FREE(ed->actions, runp) + free(runp); + EINA_LIST_FREE(ed->pending_actions, pp) + free(pp); + EINA_LIST_FREE(ed->callbacks, escb) + { + if (escb->signal) eina_stringshare_del(escb->signal); + if (escb->source) eina_stringshare_del(escb->source); + free(escb); + } + eina_hash_free(ed->color_classes); + EINA_LIST_FREE(ed->text_classes, tc) + { + if (tc->name) eina_stringshare_del(tc->name); + if (tc->font) eina_stringshare_del(tc->font); + free(tc); + } + EINA_LIST_FREE(ed->text_insert_filter_callbacks, cb) + { + eina_stringshare_del(cb->part); + free(cb); + } + EINA_LIST_FREE(ed->markup_filter_callbacks, cb) + { + eina_stringshare_del(cb->part); + free(cb); + } + + _class_member_free(ed->members.text_class, _edje_text_class_member_direct_del); + _class_member_free(ed->members.color_class, _edje_color_class_member_direct_del); + free(ed); +} + +void +_edje_clean_objects(Edje *ed) +{ + evas_object_del(ed->base.clipper); + ed->base.evas = NULL; + ed->obj = NULL; + ed->base.clipper = NULL; +} + +void +_edje_ref(Edje *ed) +{ + if (ed->references <= 0) return; + ed->references++; +} + +void +_edje_unref(Edje *ed) +{ + ed->references--; + if (ed->references == 0) _edje_del(ed); +} diff --git a/src/lib/edje_match.c b/src/lib/edje_match.c new file mode 100644 index 0000000..6cb4139 --- /dev/null +++ b/src/lib/edje_match.c @@ -0,0 +1,829 @@ +#include "edje_private.h" + +/* States manipulations. */ + +typedef struct _Edje_State Edje_State; +struct _Edje_State +{ + size_t idx; + size_t pos; +}; + +struct _Edje_States +{ + size_t size; + Edje_State *states; + Eina_Bool *has; +}; + +static void +_edje_match_states_free(Edje_States *states, + size_t states_size) +{ + (void) states_size; + free(states); +} + +#define ALIGN(Size) \ + { \ + Size--; \ + Size |= sizeof (void*) - 1; \ + Size++; \ + }; + +static int +_edje_match_states_alloc(Edje_Patterns *ppat, int n) +{ + Edje_States *l; + + const size_t patterns_size = ppat->patterns_size; + const size_t patterns_max_length = ppat->max_length; + + const size_t array_len = (patterns_max_length + 1) * patterns_size; + + size_t states_size; + size_t has_size; + size_t states_has_size; + size_t struct_size; + + unsigned char *states; + unsigned char *has; + + int i; + + states_size = sizeof (*l->states) * array_len; + ALIGN(states_size); + + has_size = sizeof (*l->has) * array_len; + ALIGN(has_size); + + states_has_size = states_size + has_size; + + struct_size = sizeof (*l); + ALIGN(struct_size); + struct_size += states_has_size; + + l = malloc(n * struct_size); + if (!l) return 0; + + ppat->states = l; + ppat->states->size = 0; + + states = (unsigned char *) (l + n); + has = states + states_size; + + for (i = 0; i < n; ++i) + { + l[i].states = (Edje_State *) states; + l[i].has = (Eina_Bool *) has; + l[i].size = 0; + + memset(l[i].has, 0, has_size); + + states += states_has_size; + has += states_has_size; + } + + return 1; +} + +static void +_edje_match_states_insert(Edje_States *list, + size_t patterns_max_length, + size_t idx, + size_t pos) +{ + size_t i; + + i = (idx * (patterns_max_length + 1)) + pos; + + if (i < list->size) + { + if (list->has[i]) return; + } + list->has[i] = 1; + + i = list->size; + list->states[i].idx = idx; + list->states[i].pos = pos; + list->has[i] = 0; + list->size++; +} + +static void +_edje_match_states_clear(Edje_States *list, + __UNUSED__ size_t patterns_size, + __UNUSED__ size_t patterns_max_length) +{ + list->size = 0; +} + +/* Token manipulation. */ + +enum status +{ + patterns_not_found = 0, + patterns_found = 1, + patterns_syntax_error = 2 +}; + +static size_t +_edje_match_patterns_exec_class_token(enum status *status, + const char *cl_tok, + char c) +{ + if (! *cl_tok) + { + *status = patterns_syntax_error; + return 0; + } + else if (cl_tok[1] == '-' && cl_tok[2] != ']') + { + if (*cl_tok <= c && c <= cl_tok[2]) + *status = patterns_found; + return 3; + } + else + { + if (c == *cl_tok) + *status = patterns_found; + return 1; + } +} + +static Edje_Match_Error +_edje_match_patterns_exec_class_complement(const char *cl_tok, size_t *ret) +{ + switch (*cl_tok) + { + case 0: + return EDJE_MATCH_SYNTAX_ERROR; + + case '!': + *ret = 1; + return EDJE_MATCH_OK; + + default: + *ret = 0; + return EDJE_MATCH_OK; + } +} + +static Edje_Match_Error +_edje_match_patterns_exec_class(const char *cl, + char c, + size_t *ret) +{ + enum status status = patterns_not_found; + int pos = 1; + size_t neg; + + if (_edje_match_patterns_exec_class_complement(cl + 1, &neg) != EDJE_MATCH_OK) + return EDJE_MATCH_SYNTAX_ERROR; + + pos += neg; + + do + { + pos += _edje_match_patterns_exec_class_token(&status, cl + pos, c); + } + while (cl[pos] && cl[pos] != ']'); + + if (status == patterns_syntax_error || ! cl[pos]) + return EDJE_MATCH_SYNTAX_ERROR; + + if (status == patterns_found) + *ret = neg ? 0 : pos + 1; + else + *ret = neg ? pos + 1 : 0; + + return EDJE_MATCH_OK; +} + +static Edje_Match_Error +_edje_match_patterns_exec_token(const char *tok, + char c, + size_t *ret) +{ + switch (*tok) + { + case '\\': + if (tok[1]) + { + *ret = tok[1] == c ? 2 : 0; + return EDJE_MATCH_OK; + } + return EDJE_MATCH_SYNTAX_ERROR; + + case '?': + *ret = 1; + return EDJE_MATCH_OK; + + case '[': + return _edje_match_patterns_exec_class(tok, c, ret); + + default: + *ret = *tok == c ? 1 : 0; + return EDJE_MATCH_OK; + } +} + +static void +_edje_match_patterns_exec_init_states(Edje_States *states, + size_t patterns_size, + size_t patterns_max_length) +{ + size_t i; + + states->size = patterns_size; + + for (i = 0; i < patterns_size; ++i) + { + states->states[i].idx = i; + states->states[i].pos = 0; + states->has[i * (patterns_max_length + 1)] = 1; + } +} + +/* Exported function. */ + +#define EDJE_MATCH_INIT_LIST(Func, Type, Source, Show) \ + Edje_Patterns* \ + Func(const Eina_List *lst) \ + { \ + Edje_Patterns *r; \ + size_t i; \ + \ + if (!lst || eina_list_count(lst) <= 0) \ + return NULL; \ + \ + r = malloc(sizeof (Edje_Patterns) + \ + eina_list_count(lst) \ + * sizeof(*r->finals) \ + * sizeof(*r->patterns)); \ + if (!r) return NULL; \ + \ + r->ref = 1; \ + r->delete_me = 0; \ + r->patterns_size = eina_list_count(lst); \ + r->max_length = 0; \ + r->patterns = (const char **) r->finals + r->patterns_size + 1; \ + \ + for (i = 0; lst; ++i) \ + { \ + const char *str; \ + Type *data; \ + size_t j; \ + int special = 0; \ + \ + data = eina_list_data_get(lst); \ + if (!data) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + str = data->Source; \ + if (!str) str = ""; \ + r->patterns[i] = str; \ + \ + if (Show) \ + INF("%lu [%s]", (unsigned long)i, str); \ + \ + r->finals[i] = 0; \ + for (j = 0; str[j]; ++j) \ + if (str[j] != '*') \ + { \ + r->finals[i] = j + 1; \ + special++; \ + } \ + j += special ? special + 1 : 0; \ + \ + if (j > r->max_length) \ + r->max_length = j; \ + \ + lst = eina_list_next(lst); \ + } \ + \ + if (!_edje_match_states_alloc(r, 2)) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + return r; \ + } + +#define EDJE_MATCH_INIT_ARRAY(Func, Type, Source, Show) \ + Edje_Patterns* \ + Func(Type * const *lst, unsigned int count) \ + { \ + Edje_Patterns *r; \ + size_t i; \ + \ + if (!lst || count == 0) \ + return NULL; \ + \ + r = malloc(sizeof (Edje_Patterns) + \ + count \ + * sizeof(*r->finals) \ + * sizeof(*r->patterns)); \ + if (!r) return NULL; \ + \ + r->ref = 1; \ + r->delete_me = 0; \ + r->patterns_size = count; \ + r->max_length = 0; \ + r->patterns = (const char **) r->finals + r->patterns_size + 1; \ + \ + for (i = 0; i < count; ++i) \ + { \ + const char *str; \ + size_t j; \ + int special = 0; \ + \ + if (!lst[i]) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + str = lst[i]->Source; \ + if (!str) str = ""; \ + r->patterns[i] = str; \ + \ + if (Show) \ + INF("%lu [%s]", (unsigned long)i, str); \ + \ + r->finals[i] = 0; \ + for (j = 0; str[j]; ++j) \ + if (str[j] != '*') \ + { \ + r->finals[i] = j + 1; \ + special++; \ + } \ + j += special ? special + 1 : 0; \ + \ + if (j > r->max_length) \ + r->max_length = j; \ + } \ + \ + if (!_edje_match_states_alloc(r, 2)) \ + { \ + free(r); \ + return NULL; \ + } \ + \ + return r; \ + } + +EDJE_MATCH_INIT_LIST(edje_match_collection_dir_init, + Edje_Part_Collection_Directory_Entry, + entry, 0); +EDJE_MATCH_INIT_ARRAY(edje_match_programs_signal_init, + Edje_Program, + signal, 0); +EDJE_MATCH_INIT_ARRAY(edje_match_programs_source_init, + Edje_Program, + source, 0); +EDJE_MATCH_INIT_LIST(edje_match_callback_signal_init, + Edje_Signal_Callback, + signal, 0); +EDJE_MATCH_INIT_LIST(edje_match_callback_source_init, + Edje_Signal_Callback, + source, 0); + +static Eina_Bool +_edje_match_collection_dir_exec_finals(const size_t *finals, + const Edje_States *states) +{ + size_t i; + + for (i = 0; i < states->size; ++i) + { + if (states->states[i].pos >= finals[states->states[i].idx]) + return EINA_TRUE; + } + return EINA_FALSE; +} + +static Eina_Bool +edje_match_programs_exec_check_finals(const size_t *signal_finals, + const size_t *source_finals, + const Edje_States *signal_states, + const Edje_States *source_states, + Edje_Program **programs, + Eina_Bool (*func)(Edje_Program *pr, void *data), + void *data, + Eina_Bool prop __UNUSED__) +{ + size_t i; + size_t j; + + /* when not enought memory, they could be NULL */ + if (!signal_finals || !source_finals) return EINA_TRUE; + + for (i = 0; i < signal_states->size; ++i) + { + if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx]) + { + for (j = 0; j < source_states->size; ++j) + { + if (signal_states->states[i].idx == source_states->states[j].idx + && source_states->states[j].pos >= source_finals[source_states->states[j].idx]) + { + Edje_Program *pr; + + pr = programs[signal_states->states[i].idx]; + if (pr) + { + if (func(pr, data)) + return EINA_FALSE; + } + } + } + } + } + + return EINA_TRUE; +} + +static int +edje_match_callback_exec_check_finals(const Edje_Patterns *signal_ppat, + const Edje_Patterns *source_ppat, + const size_t *signal_finals, + const size_t *source_finals, + const Edje_States *signal_states, + const Edje_States *source_states, + const char *sig, + const char *source, + Eina_List *callbacks, + Edje *ed, + Eina_Bool prop + ) +{ + Edje_Signal_Callback *escb; + Eina_Array run; + size_t i; + size_t j; + int r = 1; + + eina_array_step_set(&run, sizeof (Eina_Array), 4); + + for (i = 0; i < signal_states->size; ++i) + { + if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx]) + { + for (j = 0; j < source_states->size; ++j) + { + if (signal_states->states[i].idx == source_states->states[j].idx + && source_states->states[j].pos >= source_finals[source_states->states[j].idx]) + { + escb = eina_list_nth(callbacks, signal_states->states[i].idx); + if (escb) + { + if ((prop) && (escb->propagate)) continue; + if ((!escb->just_added) + && (!escb->delete_me)) + { + eina_array_push(&run, escb); + r = 2; + } + } + } + } + } + } + + while ((escb = eina_array_pop(&run))) + { + escb->func(escb->data, ed->obj, sig, source); + if (_edje_block_break(ed)) + { + r = 0; + break; + } + if ((signal_ppat->delete_me) || (source_ppat->delete_me)) + { + r = 0; + break; + } + } + + eina_array_flush(&run); + + return r; +} + + +static Edje_States* +_edje_match_fn(const Edje_Patterns *ppat, + const char *string, + Edje_States *states) +{ + Edje_States *new_states = states + 1; + const char *c; + + for (c = string; *c && states->size; ++c) + { + size_t i; + + _edje_match_states_clear(new_states, ppat->patterns_size, ppat->max_length); + + for (i = 0; i < states->size; ++i) + { + const size_t idx = states->states[i].idx; + const size_t pos = states->states[i].pos; + + if (!ppat->patterns[idx][pos]) + continue; + else if (ppat->patterns[idx][pos] == '*') + { + _edje_match_states_insert(states, ppat->max_length, idx, pos + 1); + _edje_match_states_insert(new_states, ppat->max_length, idx, pos); + } + else + { + size_t m; + + if (_edje_match_patterns_exec_token(ppat->patterns[idx] + pos, + *c, + &m) != EDJE_MATCH_OK) + return NULL; + + if (m) + _edje_match_states_insert(new_states, ppat->max_length, idx, pos + m); + } + } + { + Edje_States *tmp = states; + + states = new_states; + new_states = tmp; + } + } + + return states; +} + +Eina_Bool +edje_match_collection_dir_exec(const Edje_Patterns *ppat, + const char *string) +{ + Edje_States *result; + Eina_Bool r = EINA_FALSE; + + /* under high memory presure, it could be NULL */ + if (!ppat) return EINA_FALSE; + + _edje_match_patterns_exec_init_states(ppat->states, ppat->patterns_size, ppat->max_length); + + result = _edje_match_fn(ppat, string, ppat->states); + + if (result) + r = _edje_match_collection_dir_exec_finals(ppat->finals, result); + + return r; +} + +Eina_Bool +edje_match_programs_exec(const Edje_Patterns *ppat_signal, + const Edje_Patterns *ppat_source, + const char *sig, + const char *source, + Edje_Program **programs, + Eina_Bool (*func)(Edje_Program *pr, void *data), + void *data, + Eina_Bool prop) +{ + Edje_States *signal_result; + Edje_States *source_result; + Eina_Bool r = EINA_FALSE; + + /* under high memory presure, they could be NULL */ + if (!ppat_source || !ppat_signal) return EINA_FALSE; + + _edje_match_patterns_exec_init_states(ppat_signal->states, + ppat_signal->patterns_size, + ppat_signal->max_length); + _edje_match_patterns_exec_init_states(ppat_source->states, + ppat_source->patterns_size, + ppat_source->max_length); + + signal_result = _edje_match_fn(ppat_signal, sig, ppat_signal->states); + source_result = _edje_match_fn(ppat_source, source, ppat_source->states); + + if (signal_result && source_result) + r = edje_match_programs_exec_check_finals(ppat_signal->finals, + ppat_source->finals, + signal_result, + source_result, + programs, + func, + data, + prop); + return r; +} + +int +edje_match_callback_exec(Edje_Patterns *ppat_signal, + Edje_Patterns *ppat_source, + const char *sig, + const char *source, + Eina_List *callbacks, + Edje *ed, + Eina_Bool prop + ) +{ + Edje_States *signal_result; + Edje_States *source_result; + int r = 0; + + /* under high memory presure, they could be NULL */ + if (!ppat_source || !ppat_signal) return 0; + + ppat_signal->ref++; + ppat_source->ref++; + _edje_match_patterns_exec_init_states(ppat_signal->states, + ppat_signal->patterns_size, + ppat_signal->max_length); + _edje_match_patterns_exec_init_states(ppat_source->states, + ppat_source->patterns_size, + ppat_source->max_length); + + signal_result = _edje_match_fn(ppat_signal, sig, ppat_signal->states); + source_result = _edje_match_fn(ppat_source, source, ppat_source->states); + + if (signal_result && source_result) + r = edje_match_callback_exec_check_finals(ppat_signal, + ppat_source, + ppat_signal->finals, + ppat_source->finals, + signal_result, + source_result, + sig, + source, + callbacks, + ed, + prop); + ppat_signal->ref--; + ppat_source->ref--; + if (ppat_signal->ref <= 0) edje_match_patterns_free(ppat_signal); + if (ppat_source->ref <= 0) edje_match_patterns_free(ppat_source); + return r; +} + +void +edje_match_patterns_free(Edje_Patterns *ppat) +{ + if (!ppat) return ; + + ppat->delete_me = 1; + ppat->ref--; + if (ppat->ref > 0) return; + _edje_match_states_free(ppat->states, 2); + free(ppat); +} + +void +_edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp) +{ + if (!ssp->signals_patterns) + return; + + edje_match_patterns_free(ssp->signals_patterns); + edje_match_patterns_free(ssp->sources_patterns); + ssp->signals_patterns = NULL; + ssp->sources_patterns = NULL; +} + +static Eina_Rbtree_Direction +_edje_signal_source_node_cmp(const Edje_Signal_Source_Char *n1, + const Edje_Signal_Source_Char *n2, + __UNUSED__ void *data) +{ + int cmp; + + cmp = strcmp(n1->signal, n2->signal); + if (cmp) return cmp < 0 ? EINA_RBTREE_LEFT : EINA_RBTREE_RIGHT; + + return strcmp(n1->source, n2->source) < 0 ? EINA_RBTREE_LEFT : EINA_RBTREE_RIGHT; +} + +static int +_edje_signal_source_key_cmp(const Edje_Signal_Source_Char *node, + const char *sig, + __UNUSED__ int length, + const char *source) +{ + int cmp; + + cmp = strcmp(node->signal, sig); + if (cmp) return cmp; + + return strcmp(node->source, source); +} + + +Eina_List * +edje_match_program_hash_build(Edje_Program * const *programs, + unsigned int count, + Eina_Rbtree **tree) +{ + Eina_List *result = NULL; + Eina_Rbtree *new = NULL; + unsigned int i; + + for (i = 0; i < count; ++i) + { + if (programs[i]->signal && !strpbrk(programs[i]->signal, "*?[\\") + && programs[i]->source && !strpbrk(programs[i]->source, "*?[\\")) + { + Edje_Signal_Source_Char *item; + + item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, programs[i]->signal, 0, + EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), programs[i]->source); + if (!item) + { + item = malloc(sizeof (Edje_Signal_Source_Char)); + if (!item) continue; + + item->signal = programs[i]->signal; + item->source = programs[i]->source; + item->list = NULL; + + new = eina_rbtree_inline_insert(new, EINA_RBTREE_GET(item), + EINA_RBTREE_CMP_NODE_CB(_edje_signal_source_node_cmp), NULL); + } + + item->list = eina_list_prepend(item->list, programs[i]); + } + else + result = eina_list_prepend(result, programs[i]); + } + + *tree = new; + return result; +} + +Eina_List * +edje_match_callback_hash_build(const Eina_List *callbacks, + Eina_Rbtree **tree) +{ + Eina_List *result = NULL; + Eina_Rbtree *new = NULL; + Edje_Signal_Callback *callback; + const Eina_List *l; + + EINA_LIST_FOREACH(callbacks, l, callback) + { + if (callback->signal && !strpbrk(callback->signal, "*?[\\") + && callback->source && !strpbrk(callback->source, "*?[\\")) + { + Edje_Signal_Source_Char *item; + + item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, callback->signal, 0, + EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), callback->source); + if (!item) + { + item = malloc(sizeof (Edje_Signal_Source_Char)); + if (!item) continue; + + item->signal = callback->signal; + item->source = callback->source; + item->list = NULL; + + new = eina_rbtree_inline_insert(new, EINA_RBTREE_GET(item), + EINA_RBTREE_CMP_NODE_CB(_edje_signal_source_node_cmp), NULL); + } + + item->list = eina_list_prepend(item->list, callback); + } + else + result = eina_list_prepend(result, callback); + } + + *tree = new; + return result; +} + +const Eina_List * +edje_match_signal_source_hash_get(const char *sig, + const char *source, + const Eina_Rbtree *tree) +{ + Edje_Signal_Source_Char *lookup; + + lookup = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(tree, sig, 0, + EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), source); + + if (lookup) return lookup->list; + return NULL; +} + +void +edje_match_signal_source_free(Edje_Signal_Source_Char *key, __UNUSED__ void *data) +{ + eina_list_free(key->list); + free(key); +} diff --git a/src/lib/edje_message_queue.c b/src/lib/edje_message_queue.c new file mode 100644 index 0000000..b6cd636 --- /dev/null +++ b/src/lib/edje_message_queue.c @@ -0,0 +1,868 @@ +#include "edje_private.h" + +static void _edje_object_message_popornot_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg, Eina_Bool prop); + +static int _injob = 0; +static Ecore_Job *_job = NULL; +static Ecore_Timer *_job_loss_timer = NULL; + +static Eina_List *msgq = NULL; +static Eina_List *tmp_msgq = NULL; +static int tmp_msgq_processing = 0; +static int tmp_msgq_restart = 0; + +/*============================================================================* + * API * + *============================================================================*/ + +static void +_edje_object_message_popornot_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg, Eina_Bool prop) +{ + Edje *ed; + Eina_List *l; + Evas_Object *o; + + ed = _edje_fetch(obj); + if (!ed) return; + _edje_message_propornot_send(ed, EDJE_QUEUE_SCRIPT, type, id, msg, prop); + EINA_LIST_FOREACH(ed->subobjs, l, o) + { + _edje_object_message_popornot_send(o, type, id, msg, EINA_TRUE); + } +} + +EAPI void +edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg) +{ + _edje_object_message_popornot_send(obj, type, id, msg, EINA_FALSE); +} + + +EAPI void +edje_object_message_handler_set(Evas_Object *obj, Edje_Message_Handler_Cb func, void *data) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return; + _edje_message_cb_set(ed, func, data); +} + +EAPI void +edje_object_message_signal_process(Evas_Object *obj) +{ + Eina_List *l, *ln, *tmpq = NULL; + Edje *ed; + Edje *lookup_ed; + Eina_List *lg; + Edje_Message *em; + Eina_List *groups = NULL; + int gotos = 0; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return; + + groups = ed->groups; + + EINA_LIST_FOREACH_SAFE(msgq, l, ln, em) + { + EINA_LIST_FOREACH(groups, lg, lookup_ed) + if (em->edje == lookup_ed) + { + tmpq = eina_list_append(tmpq, em); + msgq = eina_list_remove_list(msgq, l); + break; + } + } + /* a temporary message queue */ + if (tmp_msgq) + { + EINA_LIST_FREE(tmpq, em) + tmp_msgq = eina_list_append(tmp_msgq, em); + } + else + { + tmp_msgq = tmpq; + tmpq = NULL; + } + + tmp_msgq_processing++; +again: + EINA_LIST_FOREACH_SAFE(tmp_msgq, l, ln, em) + { + EINA_LIST_FOREACH(groups, lg, lookup_ed) + if (em->edje == lookup_ed) + break; + if (em->edje != lookup_ed) continue; + tmp_msgq = eina_list_remove_list(tmp_msgq, l); + if (!lookup_ed->delete_me) + { + lookup_ed->processing_messages++; + _edje_message_process(em); + _edje_message_free(em); + lookup_ed->processing_messages--; + } + else + _edje_message_free(em); + if (lookup_ed->processing_messages == 0) + { + if (lookup_ed->delete_me) _edje_del(lookup_ed); + } + // if some child callback in _edje_message_process called + // edje_object_message_signal_process() or + // edje_message_signal_process() then those will mark the restart + // flag when they finish - it mabsicammyt means tmp_msgq and + // any item in it has potentially become invalid - so that means l + // and ln could be rogue pointers, so start again from the beginning + // and skip anything that is not this object and process only what is. + // to avoid self-feeding loops allow a max of 1024 loops. + if (tmp_msgq_restart) + { + tmp_msgq_restart = 0; + gotos++; + if (gotos < 1024) goto again; + else + { + WRN("Edje is in a self-feeding message loop (> 1024 gotos needed in a row)"); + goto end; + } + } + } +end: + tmp_msgq_processing--; + if (tmp_msgq_processing == 0) + tmp_msgq_restart = 0; + else + tmp_msgq_restart = 1; +} + +EAPI void +edje_message_signal_process(void) +{ + _edje_message_queue_process(); +} + + +static Eina_Bool +_edje_dummy_timer(void *data __UNUSED__) +{ + return ECORE_CALLBACK_CANCEL; +} + +static void +_edje_job(void *data __UNUSED__) +{ + if (_job_loss_timer) + { + ecore_timer_del(_job_loss_timer); + _job_loss_timer = NULL; + } + _job = NULL; + _injob++; + _edje_message_queue_process(); + _injob--; +} + +static Eina_Bool +_edje_job_loss_timer(void *data __UNUSED__) +{ + _job_loss_timer = NULL; + if (!_job) + { + _job = ecore_job_add(_edje_job, NULL); + } + return ECORE_CALLBACK_CANCEL; +} + +void +_edje_message_init(void) +{ +} + +void +_edje_message_shutdown(void) +{ + _edje_message_queue_clear(); + if (_job_loss_timer) + { + ecore_timer_del(_job_loss_timer); + _job_loss_timer = NULL; + } + if (_job) + { + ecore_job_del(_job); + _job = NULL; + } +} + +void +_edje_message_cb_set(Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data) +{ + Eina_List *l; + Evas_Object *o; + + ed->message.func = func; + ed->message.data = data; + EINA_LIST_FOREACH(ed->subobjs, l, o) + { + Edje *edj2 = _edje_fetch(o); + if (!edj2) continue; + _edje_message_cb_set(edj2, func, data); + } +} + +Edje_Message * +_edje_message_new(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id) +{ + Edje_Message *em; + + em = calloc(1, sizeof(Edje_Message)); + if (!em) return NULL; + em->edje = ed; + em->queue = queue; + em->type = type; + em->id = id; + em->edje->message.num++; + return em; +} + +void +_edje_message_free(Edje_Message *em) +{ + if (em->msg) + { + int i; + + switch (em->type) + { + case EDJE_MESSAGE_STRING: + { + Edje_Message_String *emsg; + + emsg = (Edje_Message_String *)em->msg; + free(emsg->str); + free(emsg); + } + break; + case EDJE_MESSAGE_INT: + { + Edje_Message_Int *emsg; + + emsg = (Edje_Message_Int *)em->msg; + free(emsg); + } + break; + case EDJE_MESSAGE_FLOAT: + { + Edje_Message_Float *emsg; + + emsg = (Edje_Message_Float *)em->msg; + free(emsg); + } + break; + case EDJE_MESSAGE_INT_SET: + { + Edje_Message_Int_Set *emsg; + + emsg = (Edje_Message_Int_Set *)em->msg; + free(emsg); + } + break; + case EDJE_MESSAGE_FLOAT_SET: + { + Edje_Message_Float_Set *emsg; + + emsg = (Edje_Message_Float_Set *)em->msg; + free(emsg); + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + { + Edje_Message_String_Float *emsg; + + emsg = (Edje_Message_String_Float *)em->msg; + free(emsg->str); + free(emsg); + } + break; + case EDJE_MESSAGE_STRING_INT: + { + Edje_Message_String_Int *emsg; + + emsg = (Edje_Message_String_Int *)em->msg; + free(emsg->str); + free(emsg); + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + { + Edje_Message_String_Float_Set *emsg; + + emsg = (Edje_Message_String_Float_Set *)em->msg; + free(emsg->str); + free(emsg); + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + { + Edje_Message_String_Int_Set *emsg; + + emsg = (Edje_Message_String_Int_Set *)em->msg; + free(emsg->str); + free(emsg); + } + break; + case EDJE_MESSAGE_SIGNAL: + { + Edje_Message_Signal *emsg; + + emsg = (Edje_Message_Signal *)em->msg; + if (emsg->sig) eina_stringshare_del(emsg->sig); + if (emsg->src) eina_stringshare_del(emsg->src); + if (emsg->data && (--(emsg->data->ref) == 0)) + { + if (emsg->data->free_func) + { + emsg->data->free_func(emsg->data->data); + } + free(emsg->data); + } + free(emsg); + } + break; + case EDJE_MESSAGE_STRING_SET: + { + Edje_Message_String_Set *emsg; + + emsg = (Edje_Message_String_Set *)em->msg; + for (i = 0; i < emsg->count; i++) + free(emsg->str[i]); + free(emsg); + } + break; + case EDJE_MESSAGE_NONE: + default: + break; + } + } + free(em); +} + +void +_edje_message_propornot_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg, Eina_Bool prop) +{ + /* FIXME: check all malloc & strdup fails and gracefully unroll and exit */ + Edje_Message *em; + int i; + unsigned char *msg = NULL; + + em = _edje_message_new(ed, queue, type, id); + if (!em) return; + em->propagated = prop; + if (_job) + { + ecore_job_del(_job); + _job = NULL; + } + if (_injob > 0) + { + if (!_job_loss_timer) + _job_loss_timer = ecore_timer_add(0.001, _edje_job_loss_timer, NULL); + } + else + { + if (!_job) + { + _job = ecore_job_add(_edje_job, NULL); + } + if (_job_loss_timer) + { + ecore_timer_del(_job_loss_timer); + _job_loss_timer = NULL; + } + } + switch (em->type) + { + case EDJE_MESSAGE_NONE: + break; + case EDJE_MESSAGE_SIGNAL: + { + Edje_Message_Signal *emsg2, *emsg3; + + emsg2 = (Edje_Message_Signal *)emsg; + emsg3 = calloc(1, sizeof(Edje_Message_Signal)); + if (emsg2->sig) emsg3->sig = eina_stringshare_add(emsg2->sig); + if (emsg2->src) emsg3->src = eina_stringshare_add(emsg2->src); + if (emsg2->data) + { + emsg3->data = emsg2->data; + emsg3->data->ref++; + } + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING: + { + Edje_Message_String *emsg2, *emsg3; + + emsg2 = (Edje_Message_String *)emsg; + + emsg3 = malloc(sizeof(Edje_Message_String)); + emsg3->str = strdup(emsg2->str); + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_INT: + { + Edje_Message_Int *emsg2, *emsg3; + + emsg2 = (Edje_Message_Int *)emsg; + emsg3 = malloc(sizeof(Edje_Message_Int)); + emsg3->val = emsg2->val; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_FLOAT: + { + Edje_Message_Float *emsg2, *emsg3; + + emsg2 = (Edje_Message_Float *)emsg; + emsg3 = malloc(sizeof(Edje_Message_Float)); + emsg3->val = emsg2->val; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING_SET: + { + Edje_Message_String_Set *emsg2, *emsg3; + + emsg2 = (Edje_Message_String_Set *)emsg; + emsg3 = malloc(sizeof(Edje_Message_String_Set) + ((emsg2->count - 1) * sizeof(char *))); + emsg3->count = emsg2->count; + for (i = 0; i < emsg3->count; i++) + emsg3->str[i] = strdup(emsg2->str[i]); + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_INT_SET: + { + Edje_Message_Int_Set *emsg2, *emsg3; + + emsg2 = (Edje_Message_Int_Set *)emsg; + emsg3 = malloc(sizeof(Edje_Message_Int_Set) + ((emsg2->count - 1) * sizeof(int))); + emsg3->count = emsg2->count; + for (i = 0; i < emsg3->count; i++) + emsg3->val[i] = emsg2->val[i]; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_FLOAT_SET: + { + Edje_Message_Float_Set *emsg2, *emsg3; + + emsg2 = (Edje_Message_Float_Set *)emsg; + emsg3 = malloc(sizeof(Edje_Message_Float_Set) + ((emsg2->count - 1) * sizeof(double))); + emsg3->count = emsg2->count; + for (i = 0; i < emsg3->count; i++) + emsg3->val[i] = emsg2->val[i]; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING_INT: + { + Edje_Message_String_Int *emsg2, *emsg3; + + emsg2 = (Edje_Message_String_Int *)emsg; + emsg3 = malloc(sizeof(Edje_Message_String_Int)); + emsg3->str = strdup(emsg2->str); + emsg3->val = emsg2->val; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + { + Edje_Message_String_Float *emsg2, *emsg3; + + emsg2 = (Edje_Message_String_Float *)emsg; + emsg3 = malloc(sizeof(Edje_Message_String_Float)); + emsg3->str = strdup(emsg2->str); + emsg3->val = emsg2->val; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + { + Edje_Message_String_Int_Set *emsg2, *emsg3; + + emsg2 = (Edje_Message_String_Int_Set *)emsg; + emsg3 = malloc(sizeof(Edje_Message_String_Int_Set) + ((emsg2->count - 1) * sizeof(int))); + emsg3->str = strdup(emsg2->str); + emsg3->count = emsg2->count; + for (i = 0; i < emsg3->count; i++) + emsg3->val[i] = emsg2->val[i]; + msg = (unsigned char *)emsg3; + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + { + Edje_Message_String_Float_Set *emsg2, *emsg3; + + emsg2 = (Edje_Message_String_Float_Set *)emsg; + emsg3 = malloc(sizeof(Edje_Message_String_Float_Set) + ((emsg2->count - 1) * sizeof(double))); + emsg3->str = strdup(emsg2->str); + emsg3->count = emsg2->count; + for (i = 0; i < emsg3->count; i++) + emsg3->val[i] = emsg2->val[i]; + msg = (unsigned char *)emsg3; + } + break; + default: + break; + } + + em->msg = msg; + msgq = eina_list_append(msgq, em); +} + +void +_edje_message_send(Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg) +{ + _edje_message_propornot_send(ed, queue, type, id, emsg, EINA_FALSE); +} + +void +_edje_message_parameters_push(Edje_Message *em) +{ + int i; + + /* these params ALWAYS go on */ + /* first param is the message type - always */ + embryo_parameter_cell_push(em->edje->collection->script, + (Embryo_Cell)em->type); + /* 2nd param is the integer of the event id - always there */ + embryo_parameter_cell_push(em->edje->collection->script, + (Embryo_Cell)em->id); + /* the rest is varags of whatever is in the msg */ + switch (em->type) + { + case EDJE_MESSAGE_NONE: + break; + case EDJE_MESSAGE_STRING: + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String *)em->msg)->str); + break; + case EDJE_MESSAGE_INT: + { + Embryo_Cell v; + + v = (Embryo_Cell)((Edje_Message_Int *)em->msg)->val; + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_FLOAT: + { + Embryo_Cell v; + float fv; + + fv = ((Edje_Message_Float *)em->msg)->val; + v = EMBRYO_FLOAT_TO_CELL(fv); + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_STRING_SET: + for (i = 0; i < ((Edje_Message_String_Set *)em->msg)->count; i++) + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String_Set *)em->msg)->str[i]); + break; + case EDJE_MESSAGE_INT_SET: + for (i = 0; i < ((Edje_Message_Int_Set *)em->msg)->count; i++) + { + Embryo_Cell v; + + v = (Embryo_Cell)((Edje_Message_Int_Set *)em->msg)->val[i]; + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_FLOAT_SET: + for (i = 0; i < ((Edje_Message_Float_Set *)em->msg)->count; i++) + { + Embryo_Cell v; + float fv; + + fv = ((Edje_Message_Float_Set *)em->msg)->val[i]; + v = EMBRYO_FLOAT_TO_CELL(fv); + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_STRING_INT: + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String_Int *)em->msg)->str); + { + Embryo_Cell v; + + v = (Embryo_Cell)((Edje_Message_String_Int *)em->msg)->val; + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_STRING_FLOAT: + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String_Float *)em->msg)->str); + { + Embryo_Cell v; + float fv; + + fv = ((Edje_Message_String_Float *)em->msg)->val; + v = EMBRYO_FLOAT_TO_CELL(fv); + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_STRING_INT_SET: + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String_Int_Set *)em->msg)->str); + for (i = 0; i < ((Edje_Message_String_Int_Set *)em->msg)->count; i++) + { + Embryo_Cell v; + + v = (Embryo_Cell)((Edje_Message_String_Int_Set *)em->msg)->val[i]; + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + case EDJE_MESSAGE_STRING_FLOAT_SET: + embryo_parameter_string_push(em->edje->collection->script, + ((Edje_Message_String_Float_Set *)em->msg)->str); + for (i = 0; i < ((Edje_Message_String_Float_Set *)em->msg)->count; i++) + { + Embryo_Cell v; + float fv; + + fv = ((Edje_Message_String_Float_Set *)em->msg)->val[i]; + v = EMBRYO_FLOAT_TO_CELL(fv); + embryo_parameter_cell_array_push(em->edje->collection->script, &v, 1); + } + break; + default: + break; + } +} + +void +_edje_message_process(Edje_Message *em) +{ + Embryo_Function fn; + void *pdata; + int ret; + + /* signals are only handled one way */ + if (em->type == EDJE_MESSAGE_SIGNAL) + { + _edje_emit_handle(em->edje, + ((Edje_Message_Signal *)em->msg)->sig, + ((Edje_Message_Signal *)em->msg)->src, + ((Edje_Message_Signal *)em->msg)->data, + em->propagated); + return; + } + /* if this has been queued up for the app then just call the callback */ + if (em->queue == EDJE_QUEUE_APP) + { + if (em->edje->message.func) + em->edje->message.func(em->edje->message.data, em->edje->obj, + em->type, em->id, em->msg); + return; + } + /* now this message is destined for the script message handler fn */ + if (!(em->edje->collection)) return; + if ((em->edje->collection->script) && _edje_script_only (em->edje)) + { + _edje_script_only_message(em->edje, em); + return; + } + if (em->edje->L) + { + _edje_lua_script_only_message(em->edje, em); + return; + } + fn = embryo_program_function_find(em->edje->collection->script, "message"); + if (fn == EMBRYO_FUNCTION_NONE) return; + /* reset the engine */ + _edje_embryo_script_reset(em->edje); + + _edje_message_parameters_push(em); + + embryo_program_vm_push(em->edje->collection->script); + _edje_embryo_globals_init(em->edje); + pdata = embryo_program_data_get(em->edje->collection->script); + embryo_program_data_set(em->edje->collection->script, em->edje); + embryo_program_max_cycle_run_set(em->edje->collection->script, 5000000); + ret = embryo_program_run(em->edje->collection->script, fn); + if (ret == EMBRYO_PROGRAM_FAIL) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "ERROR: '%s'", + em->edje->collection->part, + em->edje->file->path, + "message", + embryo_error_string_get(embryo_program_error_get(em->edje->collection->script))); + } + else if (ret == EMBRYO_PROGRAM_TOOLONG) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "ERROR: 'Script exceeded maximum allowed cycle count of %i'", + em->edje->collection->part, + em->edje->file->path, + "message", + embryo_program_max_cycle_run_get(em->edje->collection->script)); + } + + embryo_program_data_set(em->edje->collection->script, pdata); + embryo_program_vm_pop(em->edje->collection->script); +} + +void +_edje_message_queue_process(void) +{ + int i; + + if (!msgq) return; + + /* allow the message queue to feed itself up to 8 times before forcing */ + /* us to go back to normal processing and let a 0 timeout deal with it */ + for (i = 0; (i < 8) && (msgq); i++) + { + /* a temporary message queue */ + if (tmp_msgq) + { + while (msgq) + { + tmp_msgq = eina_list_append(tmp_msgq, msgq->data); + msgq = eina_list_remove_list(msgq, msgq); + } + } + else + { + tmp_msgq = msgq; + msgq = NULL; + } + + tmp_msgq_processing++; + while (tmp_msgq) + { + Edje_Message *em; + Edje *ed; + + em = tmp_msgq->data; + ed = em->edje; + tmp_msgq = eina_list_remove_list(tmp_msgq, tmp_msgq); + em->edje->message.num--; + if (!ed->delete_me) + { + ed->processing_messages++; + _edje_message_process(em); + _edje_message_free(em); + ed->processing_messages--; + } + else + _edje_message_free(em); + if (ed->processing_messages == 0) + { + if (ed->delete_me) _edje_del(ed); + } + } + tmp_msgq_processing--; + if (tmp_msgq_processing == 0) + tmp_msgq_restart = 0; + else + tmp_msgq_restart = 1; + } + + /* if the message queue filled again set a timer to expire in 0.0 sec */ + /* to get the idle enterer to be run again */ + if (msgq) + { + static int self_feed_debug = -1; + + if (self_feed_debug == -1) + { + const char *s = getenv("EDJE_SELF_FEED_DEBUG"); + if (s) self_feed_debug = atoi(s); + else self_feed_debug = 0; + } + if (self_feed_debug) + { + WRN("Edje is in a self-feeding message loop (> 8 loops needed)"); + } + ecore_timer_add(0.0, _edje_dummy_timer, NULL); + } +} + +void +_edje_message_queue_clear(void) +{ + while (msgq) + { + Edje_Message *em; + + em = msgq->data; + msgq = eina_list_remove_list(msgq, msgq); + em->edje->message.num--; + _edje_message_free(em); + } + while (tmp_msgq) + { + Edje_Message *em; + + em = tmp_msgq->data; + tmp_msgq = eina_list_remove_list(tmp_msgq, tmp_msgq); + em->edje->message.num--; + _edje_message_free(em); + } +} + +void +_edje_message_del(Edje *ed) +{ + Eina_List *l; + + if (ed->message.num <= 0) return; + /* delete any messages on the main queue for this edje object */ + for (l = msgq; l; ) + { + Edje_Message *em; + Eina_List *lp; + + em = eina_list_data_get(l); + lp = l; + l = eina_list_next(l); + if (em->edje == ed) + { + msgq = eina_list_remove_list(msgq, lp); + em->edje->message.num--; + _edje_message_free(em); + } + if (ed->message.num <= 0) return; + } + /* delete any on the processing queue */ + for (l = tmp_msgq; l; ) + { + Edje_Message *em; + Eina_List *lp; + + em = eina_list_data_get(l); + lp = l; + l = eina_list_next(l); + if (em->edje == ed) + { + tmp_msgq = eina_list_remove_list(tmp_msgq, lp); + em->edje->message.num--; + _edje_message_free(em); + } + if (ed->message.num <= 0) return; + } +} diff --git a/src/lib/edje_misc.c b/src/lib/edje_misc.c new file mode 100644 index 0000000..32a4dd1 --- /dev/null +++ b/src/lib/edje_misc.c @@ -0,0 +1 @@ +#include "edje_private.h" diff --git a/src/lib/edje_module.c b/src/lib/edje_module.c new file mode 100644 index 0000000..358295b --- /dev/null +++ b/src/lib/edje_module.c @@ -0,0 +1,154 @@ +#include "edje_private.h" + +Eina_Hash *_registered_modules = NULL; +Eina_List *_modules_paths = NULL; + +Eina_List *_modules_found = NULL; + +#if defined(__CEGCC__) || defined(__MINGW32CE__) +# define EDJE_MODULE_NAME "edje_%s.dll" +# define EDJE_EXTRA_MODULE_NAME 1 +#elif _WIN32 +# define EDJE_MODULE_NAME "module.dll" +#else +# define EDJE_MODULE_NAME "module.so" +#endif + +EAPI Eina_Bool +edje_module_load(const char *module) +{ + if (_edje_module_handle_load(module)) return EINA_TRUE; + return EINA_FALSE; +} + +Eina_Module * +_edje_module_handle_load(const char *module) +{ + const char *path; + Eina_List *l; + Eina_Module *em = NULL; + + EINA_SAFETY_ON_NULL_RETURN_VAL(module, NULL); + + em = (Eina_Module *)eina_hash_find(_registered_modules, module); + if (em) return em; + + EINA_LIST_FOREACH(_modules_paths, l, path) + { + char tmp[PATH_MAX]; + + snprintf(tmp, sizeof (tmp), "%s/%s/%s/" EDJE_MODULE_NAME, path, module, MODULE_ARCH +#ifdef EDJE_EXTRA_MODULE_NAME + , module +#endif + ); + em = eina_module_new(tmp); + if (!em) continue; + + if (!eina_module_load(em)) + { + eina_module_free(em); + continue; + } + if (eina_hash_add(_registered_modules, module, em)) + return em; + } + + return NULL; +} + +void +_edje_module_init(void) +{ + char *paths[4] = { NULL, NULL, NULL, NULL }; + unsigned int i; + unsigned int j; + + _registered_modules = eina_hash_string_small_new(EINA_FREE_CB(eina_module_free)); + + /* 1. ~/.edje/modules/ */ + paths[0] = eina_module_environment_path_get("HOME", "/.edje/modules"); + /* 2. $(EDJE_MODULE_DIR)/edje/modules/ */ + paths[1] = eina_module_environment_path_get("EDJE_MODULES_DIR", "/edje/modules"); + /* 3. libedje.so/../edje/modules/ */ + paths[2] = eina_module_symbol_path_get(_edje_module_init, "/edje/modules"); + /* 4. PREFIX/edje/modules/ */ +#ifndef _MSC_VER + paths[3] = strdup(PACKAGE_LIB_DIR "/edje/modules"); +#endif + + for (j = 0; j < ((sizeof (paths) / sizeof (char*)) - 1); ++j) + for (i = j + 1; i < sizeof (paths) / sizeof (char*); ++i) + if (paths[i] && paths[j] && !strcmp(paths[i], paths[j])) + { + free(paths[i]); + paths[i] = NULL; + } + + for (i = 0; i < sizeof (paths) / sizeof (char*); ++i) + if (paths[i]) + _modules_paths = eina_list_append(_modules_paths, paths[i]); +} + +void +_edje_module_shutdown(void) +{ + char *path; + + if (_registered_modules) + { + eina_hash_free(_registered_modules); + _registered_modules = NULL; + } + + EINA_LIST_FREE(_modules_paths, path) + free(path); + + EINA_LIST_FREE(_modules_found, path) + eina_stringshare_del(path); +} + +EAPI const Eina_List * +edje_available_modules_get(void) +{ + Eina_File_Direct_Info *info; + Eina_Iterator *it; + Eina_List *l; + const char *path; + Eina_List *result = NULL; + + /* FIXME: Stat each possible dir and check if they did change, before starting a huge round of readdir/stat */ + if (_modules_found) + { + EINA_LIST_FREE(_modules_found, path) + eina_stringshare_del(path); + } + + EINA_LIST_FOREACH(_modules_paths, l, path) + { + it = eina_file_direct_ls(path); + + if (it) + { + EINA_ITERATOR_FOREACH(it, info) + { + char tmp[PATH_MAX]; + + snprintf(tmp, sizeof (tmp), "%s/%s/" EDJE_MODULE_NAME, info->path, MODULE_ARCH +#ifdef EDJE_EXTRA_MODULE_NAME + , info->path + info->name_start +#endif + ); + + if (ecore_file_exists(tmp)) + result = eina_list_append(result, eina_stringshare_add(info->path + info->name_start)); + } + + eina_iterator_free(it); + } + } + + _modules_found = result; + + return result; +} diff --git a/src/lib/edje_multisense.c b/src/lib/edje_multisense.c new file mode 100644 index 0000000..4c6fa14 --- /dev/null +++ b/src/lib/edje_multisense.c @@ -0,0 +1,422 @@ +#include "edje_private.h" + +typedef struct _Multisense_Data +{ + Edje_Multisense_Env *msenv; +#ifdef HAVE_LIBREMIX + RemixDeck *deck; + RemixTrack *track; + RemixLayer *snd_layer, *player_layer; + RemixBase *player; + RemixBase *player_snd; + int remaining; + int offset; + Eina_List *snd_src_list; + + MULTISENSE_SOUND_PLAYER_GET_FUNC multisense_sound_player_get; +#endif +}Multisense_Data; + +#define BUF_LEN 64 +#define SND_PROCESS_LENGTH 2048 + +#ifdef HAVE_LIBREMIX +static Ecore_Thread *player_thread = NULL; +static int command_pipe[2]; +static Eina_Bool pipe_initialized = EINA_FALSE; +#endif + +typedef enum _Edje_Sound_Action_Type +{ + EDJE_PLAY_SAMPLE = 0, + EDJE_PLAY_TONE, + /* + EDJE_PLAY_PATTERN, + EDJE_PLAY_INSTRUMENT, + EDJE_PLAY_SONG, + */ + EDJE_SOUND_LAST +} Edje_Sound_Action_Type; + +typedef struct _Edje_Sample_Action Edje_Sample_Action; +typedef struct _Edje_Tone_Action Edje_Tone_Action; +typedef struct _Edje_Multisense_Sound_Action Edje_Multisense_Sound_Action; + +struct _Edje_Sample_Action +{ + char sample_name[BUF_LEN]; + double speed; +}; + +struct _Edje_Tone_Action +{ + char tone_name[BUF_LEN]; + double duration; +}; + +struct _Edje_Multisense_Sound_Action +{ + Edje *ed; + Edje_Sound_Action_Type action; + union { + Edje_Sample_Action sample; + Edje_Tone_Action tone; + } type; +}; + +#ifdef HAVE_LIBREMIX +static Multisense_Data * +init_multisense_environment(void) +{ + Multisense_Data *msdata; + char ms_factory[BUF_LEN]; + char *ms_factory_env; + Eina_Module *m = NULL; + MULTISENSE_FACTORY_INIT_FUNC multisense_factory_init; + + msdata = calloc(1, sizeof(Multisense_Data)); + if (!msdata) goto err; + + msdata->msenv = calloc(1, sizeof(Edje_Multisense_Env)); + if (!msdata->msenv) goto err; + + ms_factory_env = getenv("MULTISENSE_FACTORY"); + if (ms_factory_env) + strncpy(ms_factory, ms_factory_env, BUF_LEN); + else + strcpy(ms_factory, "multisense_factory"); + + m = _edje_module_handle_load(ms_factory); + if (!m) goto err; + + msdata->msenv->remixenv = remix_init(); + + multisense_factory_init = + eina_module_symbol_get(m, "multisense_factory_init"); + if (multisense_factory_init) multisense_factory_init(msdata->msenv); + + msdata->multisense_sound_player_get = + eina_module_symbol_get(m, "multisense_sound_player_get"); + if (!msdata->multisense_sound_player_get) goto err; + + msdata->deck = remix_deck_new(msdata->msenv->remixenv); + msdata->track = remix_track_new(msdata->msenv->remixenv, msdata->deck); + msdata->snd_layer = remix_layer_new_ontop(msdata->msenv->remixenv, + msdata->track, + REMIX_TIME_SAMPLES); + msdata->player_layer = remix_layer_new_ontop(msdata->msenv->remixenv, + msdata->track, + REMIX_TIME_SAMPLES); + msdata->player = msdata->multisense_sound_player_get(msdata->msenv); + if (!msdata->player) goto err; + msdata->player_snd = remix_sound_new(msdata->msenv->remixenv, + msdata->player, msdata->player_layer, + REMIX_SAMPLES(0), + REMIX_SAMPLES(REMIX_COUNT_INFINITE)); + return msdata; + +err: + if (msdata) + { + if (msdata->deck) remix_destroy(msdata->msenv->remixenv, msdata->deck); + if (msdata->msenv->remixenv) remix_purge(msdata->msenv->remixenv); + if (msdata->msenv) free(msdata->msenv); + free(msdata); + } + return NULL; +} +#endif + +#ifdef HAVE_LIBREMIX +static RemixBase * +eet_sound_reader_get(Edje_Multisense_Env *msenv, const char *path, const char *sound_id, const double speed) +{ + RemixPlugin *sf_plugin = NULL; + RemixBase * eet_snd_reader = NULL; + int sf_path_key = 0; + int sf_sound_id_key = 0; + int sf_speed_key = 0; + CDSet *sf_parms = NULL; + RemixEnv *env = msenv->remixenv; + + if (sf_plugin == NULL) + { + sf_plugin = remix_find_plugin(env, "eet_sndfile_reader"); + if (sf_plugin == NULL) + { + ERR ("Multisense EET Sound reader plugin NULL\n"); + return NULL; + } + + sf_path_key = remix_get_init_parameter_key(env, sf_plugin, "path"); + sf_sound_id_key = remix_get_init_parameter_key(env, sf_plugin, "sound_id"); + sf_speed_key = remix_get_init_parameter_key(env, sf_plugin, "speed"); + } + sf_parms = cd_set_replace(env, sf_parms, sf_path_key, CD_STRING(path)); + sf_parms = cd_set_replace(env, sf_parms, sf_sound_id_key, CD_STRING(sound_id)); + sf_parms = cd_set_replace(env, sf_parms, sf_speed_key, CD_DOUBLE(speed)); + eet_snd_reader = remix_new(env, sf_plugin, sf_parms); + + return eet_snd_reader; +} + + +static RemixBase * +edje_remix_sample_create(Multisense_Data *msdata, Edje*ed, Edje_Sample_Action *action) +{ + RemixBase *remix_snd = NULL; + Edje_Sound_Sample *sample; + int i; + char snd_id_str[16]; + + if ((!ed) || (!ed->file) || (!ed->file->sound_dir)) + return NULL; + + for (i = 0; i < (int)ed->file->sound_dir->samples_count; i++) + { + sample = &ed->file->sound_dir->samples[i]; + if (!strcmp(sample->name, action->sample_name)) + { + snprintf(snd_id_str, sizeof(snd_id_str), "edje/sounds/%i", sample->id); + remix_snd = eet_sound_reader_get(msdata->msenv, ed->file->path, + snd_id_str, action->speed); + break; + } + } + return remix_snd; +} + +static RemixBase * +edje_remix_tone_create(Multisense_Data *msdata, Edje*ed, Edje_Tone_Action *action) +{ + Edje_Sound_Tone *tone; + RemixSquareTone *square = NULL; + unsigned int i; + + if ((!ed) || (!ed->file) || (!ed->file->sound_dir)) + return NULL; + + for (i = 0; i < ed->file->sound_dir->tones_count; i++) + { + tone = &ed->file->sound_dir->tones[i]; + if (!strcmp(tone->name, action->tone_name)) + { + square = remix_squaretone_new (msdata->msenv->remixenv, tone->value); + break; + } + } + return square; +} + +static void +sound_command_handler(Multisense_Data *msdata) +{ + RemixCount length; + Edje_Multisense_Sound_Action command; + RemixBase *base = NULL; + RemixBase *sound; + + if (read(command_pipe[0], &command, sizeof(command)) <= 0) return; + switch (command.action) + { + case EDJE_PLAY_SAMPLE: + base = edje_remix_sample_create(msdata, command.ed, + &command.type.sample); + length = remix_length(msdata->msenv->remixenv, base); + break; + case EDJE_PLAY_TONE: + base = edje_remix_tone_create(msdata, command.ed, &command.type.tone); + length = (command.type.tone.duration * + remix_get_samplerate(msdata->msenv->remixenv)); + break; + default: + ERR("Invalid Sound Play Command\n"); + break; + } + if (base) + { + sound = remix_sound_new(msdata->msenv->remixenv, base, msdata->snd_layer, + REMIX_SAMPLES(msdata->offset), + REMIX_SAMPLES(length)); + if (msdata->remaining < length) msdata->remaining = length; + msdata->snd_src_list = eina_list_append(msdata->snd_src_list, sound); + msdata->snd_src_list = eina_list_append(msdata->snd_src_list, base); + } +} +#endif + +#ifdef HAVE_LIBREMIX +// msdata outside of thread due to thread issues in dlsym etc. +static Multisense_Data *msdata = NULL; + +static void +_msdata_free(void) +{ + // cleanup msdata outside of thread due to thread issues in dlsym etc. + if (!msdata) return; + //cleanup Remix stuffs + remix_destroy(msdata->msenv->remixenv, msdata->player); + remix_destroy(msdata->msenv->remixenv, msdata->deck); + remix_purge(msdata->msenv->remixenv); + + free(msdata->msenv); + free(msdata); + msdata = NULL; +} + +static void +_player_job(void *data __UNUSED__, Ecore_Thread *th) +{ + fd_set wait_fds; + RemixBase *sound; + RemixCount process_len; +// disable and move outside of thread due to dlsym etc. thread issues +// Multisense_Data * msdata = init_multisense_environment(); + + if (!msdata) return; + + fcntl(command_pipe[0], F_SETFL, O_NONBLOCK); + FD_ZERO(&wait_fds); + FD_SET(command_pipe[0], &wait_fds); + + while (!ecore_thread_check(th)) + { + if (!msdata->remaining) + { + int err; + + //Cleanup already played sound sources + EINA_LIST_FREE(msdata->snd_src_list, sound) + { + remix_destroy(msdata->msenv->remixenv, sound); + } + //wait for new sound + err = select(command_pipe[0] + 1, &wait_fds, NULL, NULL, 0); + if (ecore_thread_check(th)) + break; + } + //read sound command , if any + sound_command_handler(msdata); + process_len = MIN(msdata->remaining, SND_PROCESS_LENGTH); + remix_process(msdata->msenv->remixenv, msdata->deck, process_len, + RemixNone, RemixNone); + msdata->offset += process_len; + msdata->remaining -= process_len; + } + + //Cleanup last played sound sources + EINA_LIST_FREE(msdata->snd_src_list, sound) + { + remix_destroy(msdata->msenv->remixenv, sound); + } +} +#endif + +#ifdef HAVE_LIBREMIX +static void +_player_cancel(void *data __UNUSED__, Ecore_Thread *th __UNUSED__) +{ + // cleanup msdata outside of thread due to thread issues in dlsym etc. + _msdata_free(); + player_thread = NULL; +} +#endif + +#ifdef HAVE_LIBREMIX +static void +_player_end(void *data __UNUSED__, Ecore_Thread *th __UNUSED__) +{ + // cleanup msdata outside of thread due to thread issues in dlsym etc. + _msdata_free(); + player_thread = NULL; +} +#endif + +Eina_Bool +_edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, const double speed) +{ + ssize_t size = 0; +#ifdef ENABLE_MULTISENSE + Edje_Multisense_Sound_Action command; + + if ((!pipe_initialized) && (!player_thread)) return EINA_FALSE; + if (!sample_name) + { + ERR("Given Sample Name is NULL\n"); + return EINA_FALSE; + } + + command.action = EDJE_PLAY_SAMPLE; + command.ed = ed; + strncpy(command.type.sample.sample_name, sample_name, BUF_LEN); + command.type.sample.speed = speed; + size = write(command_pipe[1], &command, sizeof(command)); +#else + // warning shh + (void) ed; + (void) sample_name; + (void) speed; +#endif + return (size == sizeof(Edje_Multisense_Sound_Action)); +} + +Eina_Bool +_edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const double duration) +{ + ssize_t size = 0; +#ifdef ENABLE_MULTISENSE + Edje_Multisense_Sound_Action command; + + if ((!pipe_initialized) && (!player_thread)) return EINA_FALSE; + if (!tone_name) + { + ERR("Given Tone Name is NULL\n"); + return EINA_FALSE; + } + + command.action = EDJE_PLAY_TONE; + command.ed = ed; + strncpy(command.type.tone.tone_name, tone_name, BUF_LEN); + command.type.tone.duration = duration; + size = write(command_pipe[1], &command, sizeof(command)); +#else + // warning shh + (void) ed; + (void) duration; + (void) tone_name; +#endif + return (size == sizeof(Edje_Multisense_Sound_Action)); + +} + +/* Initialize the modules in main thread. to avoid dlopen issue in the Threads */ +void +_edje_multisense_init(void) +{ +#ifdef ENABLE_MULTISENSE + if (!pipe_initialized && (pipe(command_pipe) != -1)) + pipe_initialized = EINA_TRUE; + + // init msdata outside of thread due to thread issues in dlsym etc. + if (!msdata) msdata = init_multisense_environment(); + + if (!player_thread) + player_thread = ecore_thread_feedback_run(_player_job, NULL, _player_end, _player_cancel, NULL, EINA_TRUE); +#endif +} + +void +_edje_multisense_shutdown(void) +{ +#ifdef ENABLE_MULTISENSE + if (player_thread) ecore_thread_cancel(player_thread); + if (pipe_initialized) + { + int i = 42; + + write(command_pipe[1], &i, sizeof (int)); + close(command_pipe[1]); + close(command_pipe[0]); + } +#endif +} diff --git a/src/lib/edje_private.h b/src/lib/edje_private.h new file mode 100644 index 0000000..9d5bb01 --- /dev/null +++ b/src/lib/edje_private.h @@ -0,0 +1,2177 @@ +#ifndef _EDJE_PRIVATE_H +#define _EDJE_PRIVATE_H + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifndef _WIN32 +# define _GNU_SOURCE +#endif + +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_ALLOCA_H +# include +#elif !defined alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# elif !defined HAVE_ALLOCA +# ifdef __cplusplus +extern "C" +# endif +void *alloca (size_t); +# endif +#endif + +#include +#include +#include +#include +#include +#include + +#ifndef _MSC_VER +# include +# include +#endif + +#include + +#include +#include +#include +#include + +#ifdef HAVE_LOCALE_H +# include +#endif + +#ifdef HAVE_EVIL +# include +#endif + +#include +#include +#include +#include +#include +#include +#include +#ifdef HAVE_ECORE_IMF +# include +# include +#endif +#include + +#ifdef HAVE_EIO +# include +#endif + +#include "Edje.h" + +EAPI extern int _edje_default_log_dom ; + +#ifdef EDJE_DEFAULT_LOG_COLOR +# undef EDJE_DEFAULT_LOG_COLOR +#endif +#define EDJE_DEFAULT_LOG_COLOR EINA_COLOR_CYAN +#ifdef ERR +# undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_edje_default_log_dom, __VA_ARGS__) +#ifdef INF +# undef INF +#endif +#define INF(...) EINA_LOG_DOM_INFO(_edje_default_log_dom, __VA_ARGS__) +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_edje_default_log_dom, __VA_ARGS__) +#ifdef CRIT +# undef CRIT +#endif +#define CRIT(...) EINA_LOG_DOM_CRIT(_edje_default_log_dom, __VA_ARGS__) +#ifdef DBG +# undef DBG +#endif +#define DBG(...) EINA_LOG_DOM_DBG(_edje_default_log_dom, __VA_ARGS__) +#ifdef __GNUC__ +# if __GNUC__ >= 4 +// BROKEN in gcc 4 on amd64 +//# pragma GCC visibility push(hidden) +# endif +#endif + +#ifndef ABS +#define ABS(x) ((x) < 0 ? -(x) : (x)) +#endif + +#ifndef CLAMP +#define CLAMP(x, min, max) (((x) > (max)) ? (max) : (((x) < (min)) ? (min) : (x))) +#endif + +#ifndef MIN +#define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + + +#ifdef BUILD_EDJE_FP + +#define FLOAT_T Eina_F32p32 +#define EDJE_T_FLOAT EET_T_F32P32 +#define MUL(a, b) eina_f32p32_mul(a, b) +#define SCALE(a, b) eina_f32p32_scale(a, b) +#define DIV(a, b) eina_f32p32_div(a, b) +#define DIV2(a) ((a) >> 1) +#define ADD(a, b) eina_f32p32_add(a, b) +#define SUB(a, b) eina_f32p32_sub(a, b) +#define SQRT(a) eina_f32p32_sqrt(a) +#define TO_DOUBLE(a) eina_f32p32_double_to(a) +#define FROM_DOUBLE(a) eina_f32p32_double_from(a) +#define FROM_INT(a) eina_f32p32_int_from(a) +#define TO_INT(a) eina_f32p32_int_to(a) +#define ZERO 0 +#define COS(a) eina_f32p32_cos(a) +#define SIN(a) eina_f32p32_sin(a) +#define PI EINA_F32P32_PI + +#else + +#define FLOAT_T double +#define EDJE_T_FLOAT EET_T_DOUBLE +#define MUL(a, b) ((a) * (b)) +#define SCALE(a, b) ((a) * (double)(b)) +#define DIV(a, b) ((a) / (b)) +#define DIV2(a) ((a) / 2.0) +#define ADD(a, b) ((a) + (b)) +#define SUB(a, b) ((a) - (b)) +#define SQRT(a) sqrt(a) +#define TO_DOUBLE(a) (double)(a) +#define FROM_DOUBLE(a) (a) +#define FROM_INT(a) (double)(a) +#define TO_INT(a) (int)(a) +#define ZERO 0.0 +#define COS(a) cos(a) +#define SIN(a) sin(a) +#define PI 3.14159265358979323846 + +#endif + +/* Inheritable Edje Smart API. For now private so only Edje Edit makes + * use of this, but who knows what will be possible in the future */ +#define EDJE_SMART_API_VERSION 1 + +typedef struct _Edje_Smart_Api Edje_Smart_Api; + +struct _Edje_Smart_Api +{ + Evas_Smart_Class base; + int version; + Eina_Bool (*file_set)(Evas_Object *obj, const char *file, const char *group); +}; + +/* Basic macro to init the Edje Smart API */ +#define EDJE_SMART_API_INIT(smart_class_init) {smart_class_init, EDJE_SMART_API_VERSION, NULL} + +#define EDJE_SMART_API_INIT_NULL EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NULL) +#define EDJE_SMART_API_INIT_VERSION EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_VERSION) +#define EDJE_SMART_API_INIT_NAME_VERSION(name) EDJE_SMART_API_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name)) + +/* increment this when the EET data descriptors have changed and old + * EETs cannot be loaded/used correctly anymore. + */ +#define EDJE_FILE_VERSION 3 +/* increment this when you add new feature to edje file format without + * breaking backward compatibility. + */ +#define EDJE_FILE_MINOR 4 + +/* FIXME: + * + * More example Edje files + * + * ? programs can do multiple actions from one signal + * ? add containering (hbox, vbox, table, wrapping multi-line hbox & vbox) + * ? text entry widget (single line only) + * + * ? recursions, unsafe callbacks outside Edje etc. with freeze, ref/unref and block/unblock and break_programs needs to be redesigned & fixed + * ? all unsafe calls that may result in callbacks must be marked and dealt with + */ + +typedef enum +{ + EDJE_ASPECT_PREFER_NONE, + EDJE_ASPECT_PREFER_VERTICAL, + EDJE_ASPECT_PREFER_HORIZONTAL, + EDJE_ASPECT_PREFER_BOTH, + EDJE_ASPECT_PREFER_SOURCE +} Edje_Internal_Aspect; + +struct _Edje_Perspective +{ + Evas_Object *obj; + Evas *e; + Evas_Coord px, py, z0, foc; + Eina_List *users; + Eina_Bool global : 1; +}; + +struct _Edje_Position_Scale +{ + FLOAT_T x, y; +}; + +struct _Edje_Position +{ + int x, y; +}; + +struct _Edje_Size +{ + int w, h; + Eina_Bool limit; /* should we limit ourself to the size of the source */ +}; + +struct _Edje_Rectangle +{ + int x, y, w, h; +}; + +struct _Edje_Color +{ + unsigned char r, g, b, a; +}; + +struct _Edje_Aspect_Prefer +{ + FLOAT_T min, max; + char prefer; +}; + +struct _Edje_Aspect +{ + int w, h; + Edje_Aspect_Control mode; +}; + +struct _Edje_String +{ + const char *str; + unsigned int id; +}; + +typedef struct _Edje_Position_Scale Edje_Alignment; +typedef struct _Edje_Position_Scale Edje_Position_Scale; +typedef struct _Edje_Position Edje_Position; +typedef struct _Edje_Size Edje_Size; +typedef struct _Edje_Rectangle Edje_Rectangle; +typedef struct _Edje_Color Edje_Color; +typedef struct _Edje_Aspect_Prefer Edje_Aspect_Prefer; +typedef struct _Edje_Aspect Edje_Aspect; +typedef struct _Edje_String Edje_String; + +typedef struct _Edje_File Edje_File; +typedef struct _Edje_Style Edje_Style; +typedef struct _Edje_Style_Tag Edje_Style_Tag; +typedef struct _Edje_External_Directory Edje_External_Directory; +typedef struct _Edje_External_Directory_Entry Edje_External_Directory_Entry; +typedef struct _Edje_Font_Directory_Entry Edje_Font_Directory_Entry; +typedef struct _Edje_Image_Directory Edje_Image_Directory; +typedef struct _Edje_Image_Directory_Entry Edje_Image_Directory_Entry; +typedef struct _Edje_Image_Directory_Set Edje_Image_Directory_Set; +typedef struct _Edje_Image_Directory_Set_Entry Edje_Image_Directory_Set_Entry; +typedef struct _Edje_Limit Edje_Limit; +typedef struct _Edje_Sound_Sample Edje_Sound_Sample; +typedef struct _Edje_Sound_Tone Edje_Sound_Tone; +typedef struct _Edje_Sound_Directory Edje_Sound_Directory; +typedef struct _Edje_Program Edje_Program; +typedef struct _Edje_Program_Target Edje_Program_Target; +typedef struct _Edje_Program_After Edje_Program_After; +typedef struct _Edje_Part_Collection_Directory_Entry Edje_Part_Collection_Directory_Entry; +typedef struct _Edje_Pack_Element Edje_Pack_Element; +typedef struct _Edje_Part_Collection Edje_Part_Collection; +typedef struct _Edje_Part Edje_Part; +typedef struct _Edje_Part_Api Edje_Part_Api; +typedef struct _Edje_Part_Dragable Edje_Part_Dragable; +typedef struct _Edje_Part_Image_Id Edje_Part_Image_Id; +typedef struct _Edje_Part_Description_Image Edje_Part_Description_Image; +typedef struct _Edje_Part_Description_Proxy Edje_Part_Description_Proxy; +typedef struct _Edje_Part_Description_Text Edje_Part_Description_Text; +typedef struct _Edje_Part_Description_Box Edje_Part_Description_Box; +typedef struct _Edje_Part_Description_Table Edje_Part_Description_Table; +typedef struct _Edje_Part_Description_External Edje_Part_Description_External; +typedef struct _Edje_Part_Description_Common Edje_Part_Description_Common; +typedef struct _Edje_Part_Description_Spec_Fill Edje_Part_Description_Spec_Fill; +typedef struct _Edje_Part_Description_Spec_Border Edje_Part_Description_Spec_Border; +typedef struct _Edje_Part_Description_Spec_Image Edje_Part_Description_Spec_Image; +typedef struct _Edje_Part_Description_Spec_Proxy Edje_Part_Description_Spec_Proxy; +typedef struct _Edje_Part_Description_Spec_Text Edje_Part_Description_Spec_Text; +typedef struct _Edje_Part_Description_Spec_Box Edje_Part_Description_Spec_Box; +typedef struct _Edje_Part_Description_Spec_Table Edje_Part_Description_Spec_Table; +typedef struct _Edje_Patterns Edje_Patterns; +typedef struct _Edje_Part_Box_Animation Edje_Part_Box_Animation; +typedef struct _Edje_Part_Limit Edje_Part_Limit; + +typedef struct _Edje Edje; +typedef struct _Edje_Real_Part_State Edje_Real_Part_State; +typedef struct _Edje_Real_Part_Drag Edje_Real_Part_Drag; +typedef struct _Edje_Real_Part_Set Edje_Real_Part_Set; +typedef struct _Edje_Real_Part Edje_Real_Part; +typedef struct _Edje_Running_Program Edje_Running_Program; +typedef struct _Edje_Signal_Callback Edje_Signal_Callback; +typedef struct _Edje_Calc_Params Edje_Calc_Params; +typedef struct _Edje_Pending_Program Edje_Pending_Program; +typedef struct _Edje_Text_Style Edje_Text_Style; +typedef struct _Edje_Color_Class Edje_Color_Class; +typedef struct _Edje_Text_Class Edje_Text_Class; +typedef struct _Edje_Var Edje_Var; +typedef struct _Edje_Var_Int Edje_Var_Int; +typedef struct _Edje_Var_Float Edje_Var_Float; +typedef struct _Edje_Var_String Edje_Var_String; +typedef struct _Edje_Var_List Edje_Var_List; +typedef struct _Edje_Var_Hash Edje_Var_Hash; +typedef struct _Edje_Var_Animator Edje_Var_Animator; +typedef struct _Edje_Var_Timer Edje_Var_Timer; +typedef struct _Edje_Var_Pool Edje_Var_Pool; +typedef struct _Edje_Signal_Source_Char Edje_Signal_Source_Char; +typedef struct _Edje_Text_Insert_Filter_Callback Edje_Text_Insert_Filter_Callback; +typedef struct _Edje_Markup_Filter_Callback Edje_Markup_Filter_Callback; + +#define EDJE_INF_MAX_W 100000 +#define EDJE_INF_MAX_H 100000 + +#define EDJE_IMAGE_SOURCE_TYPE_NONE 0 +#define EDJE_IMAGE_SOURCE_TYPE_INLINE_PERFECT 1 +#define EDJE_IMAGE_SOURCE_TYPE_INLINE_LOSSY 2 +#define EDJE_IMAGE_SOURCE_TYPE_EXTERNAL 3 +#define EDJE_IMAGE_SOURCE_TYPE_LAST 4 + +#define EDJE_SOUND_SOURCE_TYPE_NONE 0 +#define EDJE_SOUND_SOURCE_TYPE_INLINE_RAW 1 +#define EDJE_SOUND_SOURCE_TYPE_INLINE_COMP 2 +#define EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY 3 +#define EDJE_SOUND_SOURCE_TYPE_INLINE_AS_IS 4 + +#define EDJE_VAR_NONE 0 +#define EDJE_VAR_INT 1 +#define EDJE_VAR_FLOAT 2 +#define EDJE_VAR_STRING 3 +#define EDJE_VAR_LIST 4 +#define EDJE_VAR_HASH 5 + +#define EDJE_VAR_MAGIC_BASE 0x12fe84ba + +#define EDJE_STATE_PARAM_NONE 0 +#define EDJE_STATE_PARAM_ALIGNMENT 1 +#define EDJE_STATE_PARAM_MIN 2 +#define EDJE_STATE_PARAM_MAX 3 +#define EDJE_STATE_PARAM_STEP 4 +#define EDJE_STATE_PARAM_ASPECT 5 +#define EDJE_STATE_PARAM_ASPECT_PREF 6 +#define EDJE_STATE_PARAM_COLOR 7 +#define EDJE_STATE_PARAM_COLOR2 8 +#define EDJE_STATE_PARAM_COLOR3 9 +#define EDJE_STATE_PARAM_COLOR_CLASS 10 +#define EDJE_STATE_PARAM_REL1 11 +#define EDJE_STATE_PARAM_REL1_TO 12 +#define EDJE_STATE_PARAM_REL1_OFFSET 13 +#define EDJE_STATE_PARAM_REL2 14 +#define EDJE_STATE_PARAM_REL2_TO 15 +#define EDJE_STATE_PARAM_REL2_OFFSET 16 +#define EDJE_STATE_PARAM_IMAGE 17 +#define EDJE_STATE_PARAM_BORDER 18 +#define EDJE_STATE_PARAM_FILL_SMOOTH 19 +#define EDJE_STATE_PARAM_FILL_POS 20 +#define EDJE_STATE_PARAM_FILL_SIZE 21 +#define EDJE_STATE_PARAM_TEXT 22 +#define EDJE_STATE_PARAM_TEXT_CLASS 23 +#define EDJE_STATE_PARAM_TEXT_FONT 24 +#define EDJE_STATE_PARAM_TEXT_STYLE 25 +#define EDJE_STATE_PARAM_TEXT_SIZE 26 +#define EDJE_STATE_PARAM_TEXT_FIT 27 +#define EDJE_STATE_PARAM_TEXT_MIN 28 +#define EDJE_STATE_PARAM_TEXT_MAX 29 +#define EDJE_STATE_PARAM_TEXT_ALIGN 30 +#define EDJE_STATE_PARAM_VISIBLE 31 +#define EDJE_STATE_PARAM_MAP_OM 32 +#define EDJE_STATE_PARAM_MAP_PERSP 33 +#define EDJE_STATE_PARAM_MAP_LIGNT 34 +#define EDJE_STATE_PARAM_MAP_ROT_CENTER 35 +#define EDJE_STATE_PARAM_MAP_ROT_X 36 +#define EDJE_STATE_PARAM_MAP_ROT_Y 37 +#define EDJE_STATE_PARAM_MAP_ROT_Z 38 +#define EDJE_STATE_PARAM_MAP_BACK_CULL 39 +#define EDJE_STATE_PARAM_MAP_PERSP_ON 40 +#define EDJE_STATE_PARAM_PERSP_ZPLANE 41 +#define EDJE_STATE_PARAM_PERSP_FOCAL 42 +#define EDJE_STATE_PARAM_LAST 43 + +#define EDJE_ENTRY_EDIT_MODE_NONE 0 +#define EDJE_ENTRY_EDIT_MODE_SELECTABLE 1 +#define EDJE_ENTRY_EDIT_MODE_EDITABLE 2 +#define EDJE_ENTRY_EDIT_MODE_PASSWORD 3 + +#define EDJE_ENTRY_SELECTION_MODE_DEFAULT 0 +#define EDJE_ENTRY_SELECTION_MODE_EXPLICIT 1 + +#define EDJE_ENTRY_CURSOR_MODE_UNDER 0 +#define EDJE_ENTRY_CURSOR_MODE_BEFORE 1 + +#define EDJE_ORIENTATION_AUTO 0 +#define EDJE_ORIENTATION_LTR 1 +#define EDJE_ORIENTATION_RTL 2 + +#define EDJE_PART_PATH_SEPARATOR ':' +#define EDJE_PART_PATH_SEPARATOR_STRING ":" +#define EDJE_PART_PATH_SEPARATOR_INDEXL '[' +#define EDJE_PART_PATH_SEPARATOR_INDEXR ']' + +#define FLAG_NONE 0 +#define FLAG_X 0x01 +#define FLAG_Y 0x02 +#define FLAG_XY (FLAG_X | FLAG_Y) + +/*----------*/ + +struct _Edje_File +{ + const char *path; + time_t mtime; + + Edje_External_Directory *external_dir; + Edje_Image_Directory *image_dir; + Edje_Sound_Directory *sound_dir; + Eina_List *styles; + + Eina_List *color_classes; + Eina_Hash *color_hash; + + int references; + const char *compiler; + int version; + int minor; + int feature_ver; + + Eina_Hash *data; + Eina_Hash *fonts; + + Eina_Hash *collection; + Eina_List *collection_cache; + + Edje_Patterns *collection_patterns; + + Eet_File *ef; + +#ifdef HAVE_EIO + Eio_Monitor *monitor; + Eina_List *edjes; + Eina_List *handlers; + Ecore_Timer *timeout; +#endif + + unsigned char free_strings : 1; + unsigned char dangling : 1; + unsigned char warning : 1; +}; + +struct _Edje_Style +{ + char *name; + Eina_List *tags; + Evas_Textblock_Style *style; +}; + +struct _Edje_Style_Tag +{ + const char *key; + const char *value; + const char *font; + double font_size; + const char *text_class; +}; + +/*----------*/ + + +struct _Edje_Font_Directory_Entry +{ + const char *entry; /* the name of the font */ + const char *file; /* the name of the file */ +}; + +/*----------*/ + +struct _Edje_External_Directory +{ + Edje_External_Directory_Entry *entries; /* a list of Edje_External_Directory_Entry */ + unsigned int entries_count; +}; + +struct _Edje_External_Directory_Entry +{ + const char *entry; /* the name of the external */ +}; + + +/*----------*/ + + + +/*----------*/ + +struct _Edje_Image_Directory +{ + Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */ + unsigned int entries_count; + + Edje_Image_Directory_Set *sets; + unsigned int sets_count; /* an array of Edje_Image_Directory_Set */ +}; + +struct _Edje_Image_Directory_Entry +{ + const char *entry; /* the nominal name of the image - if any */ + int source_type; /* alternate source mode. 0 = none */ + int source_param; /* extra params on encoding */ + int id; /* the id no. of the image */ +}; + +struct _Edje_Image_Directory_Set +{ + char *name; + Eina_List *entries; + + int id; +}; + +struct _Edje_Image_Directory_Set_Entry +{ + const char *name; + int id; + + struct { + struct { + int w; + int h; + } min, max; + } size; +}; + +struct _Edje_Sound_Sample /*Sound Sample*/ +{ + const char *name; /* the nominal name of the sound */ + const char *snd_src; /* Sound source Wav file */ + int compression; /* Compression - RAW, LOSSLESS COMP , LOSSY ) */ + int mode; /* alternate source mode. 0 = none */ + double quality; + int id; /* the id no. of the sound */ +}; + +struct _Edje_Sound_Tone /*Sound Sample*/ +{ + const char *name; /* the nominal name of the sound - if any */ + int value; /* alternate source mode. 0 = none */ + int id; /* the id no. of the sound */ +}; + +struct _Edje_Sound_Directory +{ + + Edje_Sound_Sample *samples; /* an array of Edje_Sound_Sample entries */ + unsigned int samples_count; + + Edje_Sound_Tone *tones; /* an array of Edje_Sound_Tone entries */ + unsigned int tones_count; +}; + +/*----------*/ + +struct _Edje_Program /* a conditional program to be run */ +{ + int id; /* id of program */ + const char *name; /* name of the action */ + + const char *signal; /* if signal emission name matches the glob here... */ + const char *source; /* if part that emitted this (name) matches this glob */ + const char *sample_name; + const char *tone_name; + double duration; + double speed; + + struct { + const char *part; + const char *state; /* if state is not set, we will try with source */ + } filter; /* the part filter.part should be in state filter.state for signal to be accepted */ + + struct { + double from; + double range; + } in; + + int action; /* type - set state, stop action, set drag pos etc. */ + const char *state; /* what state of alternates to apply, NULL = default */ + const char *state2; /* what other state to use - for signal emit action */ + double value; /* value of state to apply (if multiple names match) */ + double value2; /* other value for drag actions */ + + struct { + int mode; /* how to tween - linear, sinusoidal etc. */ + FLOAT_T time; /* time to graduate between current and new state */ + FLOAT_T v1; /* other value for drag actions */ + FLOAT_T v2; /* other value for drag actions */ + } tween; + + Eina_List *targets; /* list of target parts to apply the state to */ + + Eina_List *after; /* list of actions to run at the end of this, for looping */ + + struct { + const char *name; + const char *description; + } api; + + /* used for PARAM_COPY (param names in state and state2 above!) */ + struct { + int src; /* part where parameter is being retrieved */ + int dst; /* part where parameter is being stored */ + } param; + + Eina_Bool exec : 1; +}; + +struct _Edje_Program_Target /* the target of an action */ +{ + int id; /* just the part id no, or action id no */ +}; + +struct _Edje_Program_After /* the action to run after another action */ +{ + int id; +}; + +/*----------*/ +struct _Edje_Limit +{ + const char *name; + int value; +}; + +/*----------*/ +#define PART_TYPE_FIELDS(TYPE) \ + TYPE RECTANGLE; \ + TYPE TEXT; \ + TYPE IMAGE; \ + TYPE PROXY; \ + TYPE SWALLOW; \ + TYPE TEXTBLOCK; \ + TYPE GROUP; \ + TYPE BOX; \ + TYPE TABLE; \ + TYPE SPACER; \ + TYPE EXTERNAL; + +struct _Edje_Part_Collection_Directory_Entry +{ + const char *entry; /* the nominal name of the part collection */ + int id; /* the id of this named part collection */ + + struct + { + PART_TYPE_FIELDS(int) + int part; + } count; + + struct + { + PART_TYPE_FIELDS(Eina_Mempool *) + Eina_Mempool *part; + } mp; + + struct + { + PART_TYPE_FIELDS(Eina_Mempool *) + } mp_rtl; /* For Right To Left interface */ + + Edje_Part_Collection *ref; +}; + +/*----------*/ + +/*----------*/ + +struct _Edje_Pack_Element +{ + unsigned char type; /* only GROUP supported for now */ + Edje_Real_Part *parent; /* pointer to the table/box that hold it, set at runtime */ + const char *name; /* if != NULL, will be set with evas_object_name_set */ + const char *source; /* group name to use as source for this element */ + Edje_Size min, prefer, max; + struct { + int l, r, t, b; + } padding; + Edje_Alignment align; + Edje_Alignment weight; + Edje_Aspect aspect; + const char *options; /* extra options for custom objects */ + /* table specific follows */ + int col, row; + unsigned short colspan, rowspan; +}; + +typedef enum { + EDJE_PART_LIMIT_UNKNOWN = 0, + EDJE_PART_LIMIT_BELOW, + EDJE_PART_LIMIT_ZERO, + EDJE_PART_LIMIT_OVER +} Edje_Part_Limit_State; + +struct _Edje_Part_Limit +{ + int part; + + Edje_Part_Limit_State width; /* -1, 0 or 1 */ + Edje_Part_Limit_State height; /* -1, 0, or 1 */ +}; + +/*----------*/ + +struct _Edje_Part_Collection +{ + struct { /* list of Edje_Program */ + Edje_Program **fnmatch; /* complex match with "*?[\" */ + unsigned int fnmatch_count; + + Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */ + unsigned int strcmp_count; + + Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */ + unsigned int strncmp_count; + + Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */ + unsigned int strrncmp_count; + + Edje_Program **nocmp; /* Empty signal/source that will never match */ + unsigned int nocmp_count; + } programs; + + struct { /* list of limit that need to be monitored */ + Edje_Limit **vertical; + unsigned int vertical_count; + + Edje_Limit **horizontal; + unsigned int horizontal_count; + + Edje_Part_Limit *parts; + unsigned int parts_count; + } limits; + + Edje_Part **parts; /* an array of Edje_Part */ + unsigned int parts_count; + + Eina_Hash *data; + + int id; /* the collection id */ + + Eina_Hash *alias; /* aliasing part */ + Eina_Hash *aliased; /* invert match of alias */ + + struct { + Edje_Size min, max; + unsigned char orientation; + } prop; + + int references; + +#ifdef EDJE_PROGRAM_CACHE + struct { + Eina_Hash *no_matches; + Eina_Hash *matches; + } prog_cache; +#endif + + Embryo_Program *script; /* all the embryo script code for this group */ + const char *part; + + unsigned char script_only; + + unsigned char lua_script_only; + + unsigned char broadcast_signal; + + unsigned char checked : 1; +}; + +struct _Edje_Part_Dragable +{ + int step_x; /* drag jumps n pixels (0 = no limit) */ + int step_y; /* drag jumps n pixels (0 = no limit) */ + + int count_x; /* drag area divided by n (0 = no limit) */ + int count_y; /* drag area divided by n (0 = no limit) */ + + int confine_id; /* dragging within this bit, -1 = no */ + + /* davinchi */ + int event_id; /* If it is used as scrollbar */ + + signed char x; /* can u click & drag this bit in x dir */ + signed char y; /* can u click & drag this bit in y dir */ +}; + +struct _Edje_Part_Api +{ + const char *name; + const char *description; +}; + +typedef struct _Edje_Part_Description_List Edje_Part_Description_List; +struct _Edje_Part_Description_List +{ + Edje_Part_Description_Common **desc; + Edje_Part_Description_Common **desc_rtl; /* desc for Right To Left interface */ + unsigned int desc_count; +}; + +struct _Edje_Part +{ + const char *name; /* the name if any of the part */ + Edje_Part_Description_Common *default_desc; /* the part descriptor for default */ + Edje_Part_Description_Common *default_desc_rtl; /* default desc for Right To Left interface */ + + Edje_Part_Description_List other; /* other possible descriptors */ + + const char *source, *source2, *source3, *source4, *source5, *source6; + int id; /* its id number */ + int clip_to_id; /* the part id to clip this one to */ + Edje_Part_Dragable dragable; + Edje_Pack_Element **items; /* packed items for box and table */ + unsigned int items_count; + unsigned char type; /* what type (image, rect, text) */ + unsigned char effect; /* 0 = plain... */ + unsigned char mouse_events; /* it will affect/respond to mouse events */ + unsigned char repeat_events; /* it will repeat events to objects below */ + Evas_Event_Flags ignore_flags; + unsigned char scale; /* should certain properties scale with edje scale factor? */ + unsigned char precise_is_inside; + unsigned char use_alternate_font_metrics; + unsigned char pointer_mode; + unsigned char entry_mode; + unsigned char select_mode; + unsigned char cursor_mode; + unsigned char multiline; + unsigned char access; /* it will be used accessibility feature */ + Edje_Part_Api api; +}; + +struct _Edje_Part_Image_Id +{ + int id; + Eina_Bool set; +}; + +struct _Edje_Part_Description_Common +{ + struct { + double value; /* the value of the state (for ranges) */ + const char *name; /* the named state if any */ + } state; + + Edje_Alignment align; /* 0 <-> 1.0 alignment within allocated space */ + + struct { + unsigned char w, h; /* width or height is fixed in side (cannot expand with Edje object size) */ + } fixed; + + struct { // only during recalc + unsigned char have; + FLOAT_T w, h; + } minmul; + + Edje_Size min, max; + Edje_Position step; /* size stepping by n pixels, 0 = none */ + Edje_Aspect_Prefer aspect; + + char *color_class; /* how to modify the color */ + Edje_Color color; + Edje_Color color2; + + struct { + FLOAT_T relative_x; + FLOAT_T relative_y; + int offset_x; + int offset_y; + int id_x; /* -1 = whole part collection, or part ID */ + int id_y; /* -1 = whole part collection, or part ID */ + } rel1, rel2; + + struct { + int id_persp; + int id_light; + struct { + int id_center; + FLOAT_T x, y, z; + } rot; + unsigned char backcull; + unsigned char on; + unsigned char persp_on; + unsigned char smooth; + unsigned char alpha; + } map; + + struct { + int zplane; + int focal; + } persp; + + unsigned char visible; /* is it shown */ + unsigned char limit; /* 0 == no, 1 = width, 2 = height, 3 = both */ +}; + +struct _Edje_Part_Description_Spec_Fill +{ + FLOAT_T pos_rel_x; /* fill offset x relative to area */ + FLOAT_T rel_x; /* relative size compared to area */ + FLOAT_T pos_rel_y; /* fill offset y relative to area */ + FLOAT_T rel_y; /* relative size compared to area */ + int pos_abs_x; /* fill offset x added to fill offset */ + int abs_x; /* size of fill added to relative fill */ + int pos_abs_y; /* fill offset y added to fill offset */ + int abs_y; /* size of fill added to relative fill */ + int angle; /* angle of fill -- currently only used by grads */ + int spread; /* spread of fill -- currently only used by grads */ + char smooth; /* fill with smooth scaling or not */ + unsigned char type; /* fill coordinate from container (SCALE) or from source image (TILE) */ +}; + +struct _Edje_Part_Description_Spec_Border +{ + int l, r, t, b; /* border scaling on image fill */ + unsigned char no_fill; /* do we fill the center of the image if bordered? 1 == NO!!!! */ + unsigned char scale; /* scale image border by same as scale factor */ + FLOAT_T scale_by; /* when border scale above is enabled, border width OUTPUT is scaled by the object or global scale factor. this value adds another multiplier that the global scale is multiplued by first. if <= 0.0 it is not used, and if 1.0 it i s "ineffective" */ +}; + +struct _Edje_Part_Description_Spec_Image +{ + Edje_Part_Description_Spec_Fill fill; + + Edje_Part_Image_Id **tweens; /* list of Edje_Part_Image_Id */ + unsigned int tweens_count; /* number of tweens */ + + int id; /* the image id to use */ + int scale_hint; /* evas scale hint */ + Eina_Bool set; /* if image condition it's content */ + + Edje_Part_Description_Spec_Border border; +}; + +struct _Edje_Part_Description_Spec_Proxy +{ + Edje_Part_Description_Spec_Fill fill; + + int id; /* the part id to use as a source for this state */ +}; + +struct _Edje_Part_Description_Spec_Text +{ + Edje_String text; /* if "" or NULL, then leave text unchanged */ + char *text_class; /* how to apply/modify the font */ + Edje_String style; /* the text style if a textblock */ + Edje_String font; /* if a specific font is asked for */ + Edje_String repch; /* replacement char for password mode entry */ + + Edje_Alignment align; /* text alignment within bounds */ + Edje_Color color3; + + double elipsis; /* 0.0 - 1.0 defining where the elipsis align */ + int size; /* 0 = use user set size */ + int id_source; /* -1 if none */ + int id_text_source; /* -1 if none */ + + unsigned char fit_x; /* resize font size down to fit in x dir */ + unsigned char fit_y; /* resize font size down to fit in y dir */ + unsigned char min_x; /* if text size should be part min size */ + unsigned char min_y; /* if text size should be part min size */ + unsigned char max_x; /* if text size should be part max size */ + unsigned char max_y; /* if text size should be part max size */ + int size_range_min; + int size_range_max; /* -1 means, no bound. */ +}; + +struct _Edje_Part_Description_Spec_Box +{ + char *layout, *alt_layout; + Edje_Alignment align; + struct { + int x, y; + } padding; + struct { + unsigned char h, v; + } min; +}; + +struct _Edje_Part_Description_Spec_Table +{ + unsigned char homogeneous; + Edje_Alignment align; + struct { + int x, y; + } padding; + struct { + unsigned char h, v; + } min; +}; + +struct _Edje_Part_Description_Image +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Image image; +}; + +struct _Edje_Part_Description_Proxy +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Proxy proxy; +}; + +struct _Edje_Part_Description_Text +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Text text; +}; + +struct _Edje_Part_Description_Box +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Box box; +}; + +struct _Edje_Part_Description_Table +{ + Edje_Part_Description_Common common; + Edje_Part_Description_Spec_Table table; +}; + +struct _Edje_Part_Description_External +{ + Edje_Part_Description_Common common; + Eina_List *external_params; /* parameters for external objects */ +}; + +/*----------*/ + +struct _Edje_Signal_Source_Char +{ + EINA_RBTREE; + + const char *signal; + const char *source; + + Eina_List *list; +}; + +struct _Edje_Signals_Sources_Patterns + +{ + Edje_Patterns *signals_patterns; + Edje_Patterns *sources_patterns; + + Eina_Rbtree *exact_match; + + union { + struct { + Edje_Program **globing; + unsigned int count; + } programs; + struct { + Eina_List *globing; + } callbacks; + } u; +}; + +typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns; + +struct _Edje +{ + Evas_Object_Smart_Clipped_Data base; + /* This contains (or should): + Evas_Object *clipper; // a big rect to clip this Edje to + Evas *evas; // the Evas this Edje belongs to + */ + const Edje_Smart_Api *api; + const char *path; + const char *group; + const char *parent; + + Evas_Coord x, y, w, h; + Edje_Size min; + double paused_at; + Evas_Object *obj; /* the smart object */ + Edje_File *file; /* the file the data comes form */ + Edje_Part_Collection *collection; /* the description being used */ + Eina_List *actions; /* currently running actions */ + Eina_List *callbacks; + Eina_List *pending_actions; + Eina_Hash *color_classes; + Eina_List *text_classes; + /* variable pool for Edje Embryo scripts */ + Edje_Var_Pool *var_pool; + /* for faster lookups to avoid nth list walks */ + Edje_Real_Part **table_parts; + Edje_Program **table_programs; + Edje_Real_Part *focused_part; + Eina_List *subobjs; + Eina_List *text_insert_filter_callbacks; + Eina_List *markup_filter_callbacks; + void *script_only_data; + + int table_programs_size; + unsigned int table_parts_size; + + Eina_List *groups; + + struct { + Eina_Hash *text_class; + Eina_Hash *color_class; + } members; + + Edje_Perspective *persp; + + struct { + Edje_Signals_Sources_Patterns callbacks; + Edje_Signals_Sources_Patterns programs; + } patterns; + + int references; + int block; + int load_error; + int freeze; + FLOAT_T scale; + Eina_Bool is_rtl : 1; + + struct { + Edje_Text_Change_Cb func; + void *data; + } text_change; + + struct { + Edje_Message_Handler_Cb func; + void *data; + int num; + } message; + int processing_messages; + + int state; + + int preload_count; + + lua_State *L; + Eina_Inlist *lua_objs; + int lua_ref; + + struct { + Edje_Item_Provider_Cb func; + void *data; + } item_provider; + + Eina_List *user_defined; + + int walking_callbacks; + + unsigned int dirty : 1; + unsigned int recalc : 1; + unsigned int delete_callbacks : 1; + unsigned int just_added_callbacks : 1; + unsigned int have_objects : 1; + unsigned int paused : 1; + unsigned int no_anim : 1; + unsigned int calc_only : 1; + unsigned int walking_actions : 1; + unsigned int block_break : 1; + unsigned int delete_me : 1; + unsigned int postponed : 1; + unsigned int freeze_calc : 1; + unsigned int has_entries : 1; + unsigned int entries_inited : 1; +#ifdef EDJE_CALC_CACHE + unsigned int text_part_change : 1; + unsigned int all_part_change : 1; +#endif + unsigned int have_mapped_part : 1; + unsigned int recalc_call : 1; + unsigned int update_hints : 1; + unsigned int recalc_hints : 1; +}; + +struct _Edje_Calc_Params +{ + int x, y, w, h; // 16 + Edje_Rectangle req; // 16 + Edje_Rectangle req_drag; // 16 + Edje_Color color; // 4 + union { + struct { + struct { + int x, y, w, h; // 16 + int angle; // 4 + int spread; // 4 + } fill; // 24 + + union { + struct { + int l, r, t, b; // 16 + FLOAT_T border_scale_by; + } image; // 16 + } spec; // 16 + } common; // 40 + struct { + Edje_Alignment align; /* text alignment within bounds */ // 16 + double elipsis; // 8 + int size; // 4 + Edje_Color color2, color3; // 8 + } text; // 36 + } type; // 40 + struct { + struct { + int x, y, z; + } center; // 12 + struct { + FLOAT_T x, y, z; + } rotation; // 24 + struct { + int x, y, z; + int r, g, b; + int ar, ag, ab; + } light; // 36 + struct { + int x, y, z; + int focal; + } persp; + } map; + unsigned char persp_on : 1; + unsigned char lighted : 1; + unsigned char mapped : 1; + unsigned char visible : 1; + unsigned char smooth : 1; // 1 +}; // 96 + +struct _Edje_Real_Part_Set +{ + Edje_Image_Directory_Set_Entry *entry; // 4 + Edje_Image_Directory_Set *set; // 4 + + int id; // 4 +}; + +struct _Edje_Real_Part_State +{ + Edje_Part_Description_Common *description; // 4 + Edje_Part_Description_Common *description_rtl; // 4 + Edje_Real_Part *rel1_to_x; // 4 + Edje_Real_Part *rel1_to_y; // 4 + Edje_Real_Part *rel2_to_x; // 4 + Edje_Real_Part *rel2_to_y; // 4 +#ifdef EDJE_CALC_CACHE + int state; // 4 + Edje_Calc_Params p; // 96 +#endif + void *external_params; // 4 + Edje_Real_Part_Set *set; // 4 +}; // 32 +// WITH EDJE_CALC_CACHE 132 + +struct _Edje_Real_Part_Drag +{ + FLOAT_T x, y; // 16 + Edje_Position_Scale val, size, step, page; // 64 + struct { + unsigned int count; // 4 + int x, y; // 8 + } down; + struct { + int x, y; // 8 + } tmp; + unsigned char need_reset : 1; // 4 + Edje_Real_Part *confine_to; // 4 +}; // 104 + +struct _Edje_Real_Part +{ + Edje *edje; // 4 + Edje_Part *part; // 4 + Evas_Object *object; // 4 + int x, y, w, h; // 16 + Edje_Rectangle req; // 16 + + Eina_List *items; // 4 //FIXME: only if table/box + Edje_Part_Box_Animation *anim; // 4 //FIXME: Used only if box + void *entry_data; // 4 // FIXME: move to entry section + + Evas_Object *swallowed_object; // 4 // FIXME: move with swallow_params data + struct { + Edje_Size min, max; // 16 + Edje_Aspect aspect; // 12 + } swallow_params; // 28 // FIXME: only if type SWALLOW + + Edje_Real_Part_Drag *drag; // 4 + Edje_Real_Part *events_to; // 4 + + struct { + Edje_Real_Part *source; // 4 + Edje_Real_Part *text_source; // 4 + const char *text; // 4 + Edje_Position offset; // 8 text only + const char *font; // 4 text only + const char *style; // 4 text only + int size; // 4 text only + struct { + double in_w, in_h; // 16 text only + int in_size; // 4 text only + const char *in_str; // 4 text only + const char *out_str; // 4 text only + int out_size; // 4 text only + FLOAT_T align_x, align_y; // 16 text only + double elipsis; // 8 text only + int fit_x, fit_y; // 8 text only + } cache; // 64 + } text; // 86 // FIXME make text a potiner to struct and alloc at end + // if part type is TEXT move common members textblock + + // text to front and have smaller struct for textblock + + FLOAT_T description_pos; // 8 + Edje_Part_Description_Common *chosen_description; // 4 + Edje_Real_Part_State param1; // 20 + // WITH EDJE_CALC_CACHE: 140 + Edje_Real_Part_State *param2, *custom; // 8 + Edje_Calc_Params *current; // 4 + +#ifdef EDJE_CALC_CACHE + int state; // 4 +#endif + + Edje_Real_Part *clip_to; // 4 + + Edje_Running_Program *program; // 4 + + int clicked_button; // 4 + + unsigned char calculated; // 1 + unsigned char calculating; // 1 + + unsigned char still_in : 1; // 1 +#ifdef EDJE_CALC_CACHE + unsigned char invalidate : 1; // 0 +#endif +}; // 264 +// WITH EDJE_CALC_CACHE: 404 + +struct _Edje_Running_Program +{ + Edje *edje; + Edje_Program *program; + double start_time; + char delete_me : 1; +}; + +struct _Edje_Signal_Callback +{ + const char *signal; + const char *source; + Edje_Signal_Cb func; + void *data; + unsigned char just_added : 1; + unsigned char delete_me : 1; + unsigned char propagate : 1; +}; + +struct _Edje_Text_Insert_Filter_Callback +{ + const char *part; + Edje_Text_Filter_Cb func; + void *data; +}; + +struct _Edje_Markup_Filter_Callback +{ + const char *part; + Edje_Markup_Filter_Cb func; + void *data; +}; + +struct _Edje_Pending_Program +{ + Edje *edje; + Edje_Program *program; + Ecore_Timer *timer; +}; + +struct _Edje_Text_Style +{ + struct { + unsigned char x, y; + } offset; + struct { + unsigned char l, r, t, b; + } pad; + int num; + struct { + unsigned char color; /* 0 = color, 1, 2 = color2, color3 */ + signed char x, y; /* offset */ + unsigned char alpha; + } members[32]; +}; + +struct _Edje_Color_Class +{ + const char *name; + unsigned char r, g, b, a; + unsigned char r2, g2, b2, a2; + unsigned char r3, g3, b3, a3; +}; + +struct _Edje_Text_Class +{ + const char *name; + const char *font; + Evas_Font_Size size; +}; + +struct _Edje_Var_Int +{ + int v; +}; + +struct _Edje_Var_Float +{ + double v; +}; + +struct _Edje_Var_String +{ + char *v; +}; + +struct _Edje_Var_List +{ + Eina_List *v; +}; + +struct _Edje_Var_Hash +{ + Eina_Hash *v; +}; + +struct _Edje_Var_Timer +{ + Edje *edje; + int id; + Embryo_Function func; + int val; + Ecore_Timer *timer; +}; + +struct _Edje_Var_Animator +{ + Edje *edje; + int id; + Embryo_Function func; + int val; + double start, len; + char delete_me; +}; + +struct _Edje_Var_Pool +{ + int id_count; + Eina_List *timers; + Eina_List *animators; + int size; + Edje_Var *vars; + int walking_list; +}; + +struct _Edje_Var +{ + union { + Edje_Var_Int i; + Edje_Var_Float f; + Edje_Var_String s; + Edje_Var_List l; + Edje_Var_Hash h; + } data; + unsigned char type; +}; + +typedef enum _Edje_Queue +{ + EDJE_QUEUE_APP, + EDJE_QUEUE_SCRIPT +} Edje_Queue; + +typedef struct _Edje_Message_Signal Edje_Message_Signal; +typedef struct _Edje_Message Edje_Message; + +typedef struct _Edje_Message_Signal_Data Edje_Message_Signal_Data; +struct _Edje_Message_Signal_Data +{ + int ref; + void *data; + void (*free_func)(void *); +}; + +struct _Edje_Message_Signal +{ + const char *sig; + const char *src; + Edje_Message_Signal_Data *data; +}; + +struct _Edje_Message +{ + Edje *edje; + Edje_Queue queue; + Edje_Message_Type type; + int id; + unsigned char *msg; + Eina_Bool propagated : 1; +}; + +typedef enum _Edje_Fill +{ + EDJE_FILL_TYPE_SCALE = 0, + EDJE_FILL_TYPE_TILE +} Edje_Fill; + +typedef enum _Edje_Match_Error +{ + EDJE_MATCH_OK, + EDJE_MATCH_ALLOC_ERROR, + EDJE_MATCH_SYNTAX_ERROR + +} Edje_Match_Error; + +typedef struct _Edje_States Edje_States; +struct _Edje_Patterns +{ + const char **patterns; + + Edje_States *states; + + int ref; + Eina_Bool delete_me : 1; + + size_t patterns_size; + size_t max_length; + size_t finals[]; +}; + +typedef enum _Edje_User_Defined_Type +{ + EDJE_USER_SWALLOW, + EDJE_USER_BOX_PACK, + EDJE_USER_TABLE_PACK, + EDJE_USER_STRING, + EDJE_USER_DRAG_STEP, + EDJE_USER_DRAG_PAGE, + EDJE_USER_DRAG_VALUE, + EDJE_USER_DRAG_SIZE +} Edje_User_Defined_Type; + +typedef struct _Edje_User_Defined Edje_User_Defined; +struct _Edje_User_Defined +{ + Edje_User_Defined_Type type; + const char *part; + Edje *ed; + + union { + struct { + const char *text; + } string; + struct { + Evas_Object *child; + } swallow; + struct { + Evas_Object *child; + int index; + } box; + struct { + Evas_Object *child; + unsigned short col; + unsigned short row; + unsigned short colspan; + unsigned short rowspan; + } table; + struct { + double x, y; + } drag_position; + struct { + double w, h; + } drag_size; + } u; +}; + +Edje_Patterns *edje_match_collection_dir_init(const Eina_List *lst); +Edje_Patterns *edje_match_programs_signal_init(Edje_Program * const *array, + unsigned int count); +Edje_Patterns *edje_match_programs_source_init(Edje_Program * const *array, + unsigned int count); +Edje_Patterns *edje_match_callback_signal_init(const Eina_List *lst); +Edje_Patterns *edje_match_callback_source_init(const Eina_List *lst); + +Eina_Bool edje_match_collection_dir_exec(const Edje_Patterns *ppat, + const char *string); +Eina_Bool edje_match_programs_exec(const Edje_Patterns *ppat_signal, + const Edje_Patterns *ppat_source, + const char *signal, + const char *source, + Edje_Program **programs, + Eina_Bool (*func)(Edje_Program *pr, void *data), + void *data, + Eina_Bool prop); +int edje_match_callback_exec(Edje_Patterns *ppat_signal, + Edje_Patterns *ppat_source, + const char *signal, + const char *source, + Eina_List *callbacks, + Edje *ed, + Eina_Bool prop); + +void edje_match_patterns_free(Edje_Patterns *ppat); + +Eina_List *edje_match_program_hash_build(Edje_Program * const * programs, + unsigned int count, + Eina_Rbtree **tree); +Eina_List *edje_match_callback_hash_build(const Eina_List *callbacks, + Eina_Rbtree **tree); +const Eina_List *edje_match_signal_source_hash_get(const char *signal, + const char *source, + const Eina_Rbtree *tree); +void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data); + +// FIXME remove below 2 eapi decls when edje_convert goes +EAPI void _edje_edd_init(void); +EAPI void _edje_edd_shutdown(void); + +EAPI extern Eet_Data_Descriptor *_edje_edd_edje_file; +EAPI extern Eet_Data_Descriptor *_edje_edd_edje_part_collection; + +extern int _edje_anim_count; +extern Ecore_Animator *_edje_timer; +extern Eina_List *_edje_animators; +extern Eina_List *_edje_edjes; + +extern char *_edje_fontset_append; +extern FLOAT_T _edje_scale; +extern int _edje_freeze_val; +extern int _edje_freeze_calc_count; +extern Eina_List *_edje_freeze_calc_list; + +extern Eina_Bool _edje_password_show_last; +extern FLOAT_T _edje_password_show_last_timeout; + +extern Eina_Mempool *_edje_real_part_mp; +extern Eina_Mempool *_edje_real_part_state_mp; + +extern Eina_Mempool *_emp_RECTANGLE; +extern Eina_Mempool *_emp_TEXT; +extern Eina_Mempool *_emp_IMAGE; +extern Eina_Mempool *_emp_PROXY; +extern Eina_Mempool *_emp_SWALLOW; +extern Eina_Mempool *_emp_TEXTBLOCK; +extern Eina_Mempool *_emp_GROUP; +extern Eina_Mempool *_emp_BOX; +extern Eina_Mempool *_emp_TABLE; +extern Eina_Mempool *_emp_EXTERNAL; +extern Eina_Mempool *_emp_SPACER; +extern Eina_Mempool *_emp_part; + +void _edje_part_pos_set(Edje *ed, Edje_Real_Part *ep, int mode, FLOAT_T pos, FLOAT_T v1, FLOAT_T v2); +Edje_Part_Description_Common *_edje_part_description_find(Edje *ed, + Edje_Real_Part *rp, + const char *name, double val); +void _edje_part_description_apply(Edje *ed, Edje_Real_Part *ep, const char *d1, double v1, const char *d2, double v2); +void _edje_recalc(Edje *ed); +void _edje_recalc_do(Edje *ed); +void _edje_part_recalc_1(Edje *ed, Edje_Real_Part *ep); +int _edje_part_dragable_calc(Edje *ed, Edje_Real_Part *ep, FLOAT_T *x, FLOAT_T *y); +void _edje_dragable_pos_set(Edje *ed, Edje_Real_Part *ep, FLOAT_T x, FLOAT_T y); + +Eina_Bool _edje_timer_cb(void *data); +Eina_Bool _edje_pending_timer_cb(void *data); +void _edje_callbacks_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp); +void _edje_callbacks_focus_add(Evas_Object *obj, Edje *ed, Edje_Real_Part *rp); +void _edje_callbacks_del(Evas_Object *obj, Edje *ed); +void _edje_callbacks_focus_del(Evas_Object *obj, Edje *ed); + +void _edje_edd_init(void); +void _edje_edd_shutdown(void); + +int _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *group, const char *parent, Eina_List *group_path); + +void _edje_file_add(Edje *ed); +void _edje_file_del(Edje *ed); +void _edje_file_free(Edje_File *edf); +void _edje_file_cache_shutdown(void); +void _edje_collection_free(Edje_File *edf, + Edje_Part_Collection *ec, + Edje_Part_Collection_Directory_Entry *ce); +void _edje_collection_free_part_description_clean(int type, + Edje_Part_Description_Common *desc, + Eina_Bool free_strings); +void _edje_collection_free_part_description_free(int type, + Edje_Part_Description_Common *desc, + Edje_Part_Collection_Directory_Entry *ce, + Eina_Bool free_strings); + +void _edje_object_smart_set(Edje_Smart_Api *sc); +const Edje_Smart_Api * _edje_object_smart_class_get(void); + +void _edje_del(Edje *ed); +void _edje_ref(Edje *ed); +void _edje_unref(Edje *ed); +void _edje_clean_objects(Edje *ed); +void _edje_ref(Edje *ed); +void _edje_unref(Edje *ed); + +Eina_Bool _edje_program_run_iterate(Edje_Running_Program *runp, double tim); +void _edje_program_end(Edje *ed, Edje_Running_Program *runp); +void _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, const char *ssrc); +void _edje_programs_patterns_clean(Edje *ed); +void _edje_programs_patterns_init(Edje *ed); +void _edje_emit(Edje *ed, const char *sig, const char *src); +void _edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, void (*free_func)(void *)); +void _edje_emit_handle(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Data *data, Eina_Bool prop); +void _edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp); +void _edje_callbacks_patterns_clean(Edje *ed); + +void _edje_text_init(void); +void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep); +void _edje_text_part_on_del(Edje *ed, Edje_Part *ep); +void _edje_text_recalc_apply(Edje *ed, + Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Text *chosen_desc); +Evas_Font_Size _edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc); +const char * _edje_text_class_font_get(Edje *ed, + Edje_Part_Description_Text *chosen_desc, + int *size, char **free_later); + + +Edje_Real_Part *_edje_real_part_get(const Edje *ed, const char *part); +Edje_Real_Part *_edje_real_part_recursive_get(const Edje *ed, const char *part); +Edje_Color_Class *_edje_color_class_find(Edje *ed, const char *color_class); +void _edje_color_class_member_direct_del(const char *color_class, void *lookup); +void _edje_color_class_member_add(Edje *ed, const char *color_class); +void _edje_color_class_member_del(Edje *ed, const char *color_class); +void _edje_color_class_on_del(Edje *ed, Edje_Part *ep); +void _edje_color_class_members_free(void); +void _edje_color_class_hash_free(void); + +Edje_Text_Class *_edje_text_class_find(Edje *ed, const char *text_class); +void _edje_text_class_member_add(Edje *ed, const char *text_class); +void _edje_text_class_member_del(Edje *ed, const char *text_class); +void _edje_text_class_member_direct_del(const char *text_class, void *lookup); +void _edje_text_class_members_free(void); +void _edje_text_class_hash_free(void); + +Edje *_edje_fetch(const Evas_Object *obj) EINA_PURE; +int _edje_freeze(Edje *ed); +int _edje_thaw(Edje *ed); +int _edje_block(Edje *ed); +int _edje_unblock(Edje *ed); +int _edje_block_break(Edje *ed); +void _edje_block_violate(Edje *ed); +void _edje_object_part_swallow_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +void _edje_object_part_swallow_changed_hints_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +void _edje_real_part_swallow(Edje_Real_Part *rp, Evas_Object *obj_swallow, Eina_Bool hints_update); +void _edje_real_part_swallow_clear(Edje_Real_Part *rp); +void _edje_box_init(void); +void _edje_box_shutdown(void); +Eina_Bool _edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)); +void _edje_box_recalc_apply(Edje *ed __UNUSED__, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edje_Part_Description_Box *chosen_desc); +Eina_Bool _edje_box_layout_add_child(Edje_Real_Part *rp, Evas_Object *child_obj); +void _edje_box_layout_remove_child(Edje_Real_Part *rp, Evas_Object *child_obj); +Edje_Part_Box_Animation * _edje_box_layout_anim_new(Evas_Object *box); +void _edje_box_layout_free_data(void *data); + +Eina_Bool _edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj); +Eina_Bool _edje_real_part_box_prepend(Edje_Real_Part *rp, Evas_Object *child_obj); +Eina_Bool _edje_real_part_box_insert_before(Edje_Real_Part *rp, Evas_Object *child_obj, const Evas_Object *ref); +Eina_Bool _edje_real_part_box_insert_at(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned int pos); +Evas_Object *_edje_real_part_box_remove(Edje_Real_Part *rp, Evas_Object *child_obj); +Evas_Object *_edje_real_part_box_remove_at(Edje_Real_Part *rp, unsigned int pos); +Eina_Bool _edje_real_part_box_remove_all(Edje_Real_Part *rp, Eina_Bool clear); +Eina_Bool _edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan); +Eina_Bool _edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj); +void _edje_real_part_table_clear(Edje_Real_Part *rp, Eina_Bool clear); +Evas_Object *_edje_children_get(Edje_Real_Part *rp, const char *partid); + +Eina_Bool _edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text); +char *_edje_text_escape(const char *text); +char *_edje_text_unescape(const char *text); + +void _edje_embryo_script_init (Edje_Part_Collection *edc); +void _edje_embryo_script_shutdown (Edje_Part_Collection *edc); +void _edje_embryo_script_reset (Edje *ed); +void _edje_embryo_test_run (Edje *ed, const char *fname, const char *sig, const char *src); +Edje_Var *_edje_var_new (void); +void _edje_var_free (Edje_Var *var); +void _edje_var_init (Edje *ed); +void _edje_var_shutdown (Edje *ed); +int _edje_var_string_id_get (Edje *ed, const char *string); +int _edje_var_var_int_get (Edje *ed, Edje_Var *var); +void _edje_var_var_int_set (Edje *ed, Edje_Var *var, int v); +double _edje_var_var_float_get (Edje *ed, Edje_Var *var); +void _edje_var_var_float_set (Edje *ed, Edje_Var *var, double v); +const char *_edje_var_var_str_get (Edje *ed, Edje_Var *var); +void _edje_var_var_str_set (Edje *ed, Edje_Var *var, const char *str); +int _edje_var_int_get (Edje *ed, int id); +void _edje_var_int_set (Edje *ed, int id, int v); +double _edje_var_float_get (Edje *ed, int id); +void _edje_var_float_set (Edje *ed, int id, double v); +const char *_edje_var_str_get (Edje *ed, int id); +void _edje_var_str_set (Edje *ed, int id, const char *str); + +void _edje_var_list_var_append(Edje *ed, int id, Edje_Var *var); +void _edje_var_list_var_prepend(Edje *ed, int id, Edje_Var *var); +void _edje_var_list_var_append_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative); +void _edje_var_list_var_prepend_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative); +Edje_Var *_edje_var_list_nth(Edje *ed, int id, int n); + +int _edje_var_list_count_get(Edje *ed, int id); +void _edje_var_list_remove_nth(Edje *ed, int id, int n); + +int _edje_var_list_nth_int_get(Edje *ed, int id, int n); +void _edje_var_list_nth_int_set(Edje *ed, int id, int n, int v); +void _edje_var_list_int_append(Edje *ed, int id, int v); +void _edje_var_list_int_prepend(Edje *ed, int id, int v); +void _edje_var_list_int_insert(Edje *ed, int id, int n, int v); + +double _edje_var_list_nth_float_get(Edje *ed, int id, int n); +void _edje_var_list_nth_float_set(Edje *ed, int id, int n, double v); +void _edje_var_list_float_append(Edje *ed, int id, double v); +void _edje_var_list_float_prepend(Edje *ed, int id, double v); +void _edje_var_list_float_insert(Edje *ed, int id, int n, double v); + +const char *_edje_var_list_nth_str_get(Edje *ed, int id, int n); +void _edje_var_list_nth_str_set(Edje *ed, int id, int n, const char *v); +void _edje_var_list_str_append(Edje *ed, int id, const char *v); +void _edje_var_list_str_prepend(Edje *ed, int id, const char *v); +void _edje_var_list_str_insert(Edje *ed, int id, int n, const char *v); + +int _edje_var_timer_add (Edje *ed, double in, const char *fname, int val); +void _edje_var_timer_del (Edje *ed, int id); + +int _edje_var_anim_add (Edje *ed, double len, const char *fname, int val); +void _edje_var_anim_del (Edje *ed, int id); + +void _edje_message_init (void); +void _edje_message_shutdown (void); +void _edje_message_cb_set (Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data); +Edje_Message *_edje_message_new (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id); +void _edje_message_free (Edje_Message *em); +void _edje_message_propornot_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg, Eina_Bool prop); +void _edje_message_send (Edje *ed, Edje_Queue queue, Edje_Message_Type type, int id, void *emsg); +void _edje_message_parameters_push (Edje_Message *em); +void _edje_message_process (Edje_Message *em); +void _edje_message_queue_process (void); +void _edje_message_queue_clear (void); +void _edje_message_del (Edje *ed); + +void _edje_textblock_styles_add(Edje *ed); +void _edje_textblock_styles_del(Edje *ed); +void _edje_textblock_style_all_update(Edje *ed); +void _edje_textblock_style_parse_and_fix(Edje_File *edf); +void _edje_textblock_style_cleanup(Edje_File *edf); +Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, Edje_Part_Collection **edc_ret, Edje *ed); +void _edje_cache_coll_clean(Edje_File *edf); +void _edje_cache_coll_flush(Edje_File *edf); +void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc); +void _edje_cache_file_unref(Edje_File *edf); + +void _edje_embryo_globals_init(Edje *ed); + +#define CHKPARAM(n) if (params[0] != (sizeof(Embryo_Cell) * (n))) return -1; +#define HASNPARAMS(n) (params[0] == (sizeof(Embryo_Cell) * (n))) +#define GETSTR(str, par) { \ + Embryo_Cell *___cptr; \ + int ___l; \ + str = NULL; \ + if ((___cptr = embryo_data_address_get(ep, (par)))) { \ + ___l = embryo_data_string_length_get(ep, ___cptr); \ + if (((str) = alloca(___l + 1))) \ + embryo_data_string_get(ep, ___cptr, (str)); } } +#define GETSTREVAS(str, par) { \ + if ((str)) { \ + if ((par) && (!strcmp((par), (str)))) return 0; \ + if ((par)) eina_stringshare_del((par)); \ + (par) = (char *)eina_stringshare_add((str)); } \ + else (par) = NULL; } +#define GETFLOAT(val, par) { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ + val = *___cptr; } } + +#define GETFLOAT_T(val, par) \ + { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \ + { \ + val = FROM_DOUBLE(*___cptr); \ + } \ + } + +#define GETINT(val, par) { \ + int *___cptr; \ + if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ + val = *___cptr; } } +#define SETSTR(str, par) { \ + Embryo_Cell *___cptr; \ + if ((___cptr = embryo_data_address_get(ep, (par)))) { \ + embryo_data_string_set(ep, str, ___cptr); } } +#define SETSTRALLOCATE(s) \ + { \ + if (s) { \ + if ((int) strlen((s)) < params[4]) { \ + SETSTR((s), params[3]); } \ + else { \ + char *ss; \ + ss = alloca(strlen((s)) + 1); \ + strcpy(ss, (s)); \ + ss[params[4] - 2] = 0; \ + SETSTR(ss, params[3]); } } \ + else \ + SETSTR("", params[3]); \ + } +#define SETFLOAT(val, par) { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) { \ + *___cptr = (float)val; } } +#define SETFLOAT_T(val, par) \ + { \ + float *___cptr; \ + if ((___cptr = (float *)embryo_data_address_get(ep, (par)))) \ + { \ + *___cptr = (float) TO_DOUBLE(val); \ + } \ + } +#define SETINT(val, par) { \ + int *___cptr; \ + if ((___cptr = (int *)embryo_data_address_get(ep, (par)))) { \ + *___cptr = (int)val; } } + +Eina_Bool _edje_script_only(Edje *ed); +void _edje_script_only_init(Edje *ed); +void _edje_script_only_shutdown(Edje *ed); +void _edje_script_only_show(Edje *ed); +void _edje_script_only_hide(Edje *ed); +void _edje_script_only_move(Edje *ed); +void _edje_script_only_resize(Edje *ed); +void _edje_script_only_message(Edje *ed, Edje_Message *em); + +extern jmp_buf _edje_lua_panic_jmp; +#define _edje_lua_panic_here() setjmp(_edje_lua_panic_jmp) + +lua_State *_edje_lua_state_get(); +lua_State *_edje_lua_new_thread(Edje *ed, lua_State *L); +void _edje_lua_free_thread(Edje *ed, lua_State *L); +void _edje_lua_new_reg(lua_State *L, int index, void *ptr); +void _edje_lua_get_reg(lua_State *L, void *ptr); +void _edje_lua_free_reg(lua_State *L, void *ptr); +void _edje_lua_script_fn_new(Edje *ed); +void _edje_lua_group_fn_new(Edje *ed); +void _edje_lua_init(); +void _edje_lua_shutdown(); + +void __edje_lua_error(const char *file, const char *fnc, int line, lua_State *L, int err_code); +#define _edje_lua_error(L, err_code) \ + __edje_lua_error(__FILE__, __FUNCTION__, __LINE__, L, err_code) + +Eina_Bool _edje_lua_script_only(Edje *ed); +void _edje_lua_script_only_init(Edje *ed); +void _edje_lua_script_only_shutdown(Edje *ed); +void _edje_lua_script_only_show(Edje *ed); +void _edje_lua_script_only_hide(Edje *ed); +void _edje_lua_script_only_move(Edje *ed); +void _edje_lua_script_only_resize(Edje *ed); +void _edje_lua_script_only_message(Edje *ed, Edje_Message *em); + +void _edje_entry_init(Edje *ed); +void _edje_entry_shutdown(Edje *ed); +void _edje_entry_real_part_init(Edje_Real_Part *rp); +void _edje_entry_real_part_shutdown(Edje_Real_Part *rp); +void _edje_entry_real_part_configure(Edje_Real_Part *rp); +const char *_edje_entry_selection_get(Edje_Real_Part *rp); +const char *_edje_entry_text_get(Edje_Real_Part *rp); +void _edje_entry_text_markup_set(Edje_Real_Part *rp, const char *text); +void _edje_entry_text_markup_insert(Edje_Real_Part *rp, const char *text); +void _edje_entry_text_markup_append(Edje_Real_Part *rp, const char *text); +void _edje_entry_set_cursor_start(Edje_Real_Part *rp); +void _edje_entry_set_cursor_end(Edje_Real_Part *rp); +void _edje_entry_cursor_copy(Edje_Real_Part *rp, Edje_Cursor cur, Edje_Cursor dst); +void _edje_entry_select_none(Edje_Real_Part *rp); +void _edje_entry_select_all(Edje_Real_Part *rp); +void _edje_entry_select_begin(Edje_Real_Part *rp); +void _edje_entry_select_extend(Edje_Real_Part *rp); +const Eina_List *_edje_entry_anchor_geometry_get(Edje_Real_Part *rp, const char *anchor); +const Eina_List *_edje_entry_anchors_list(Edje_Real_Part *rp); +Eina_Bool _edje_entry_item_geometry_get(Edje_Real_Part *rp, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); +const Eina_List *_edje_entry_items_list(Edje_Real_Part *rp); +void _edje_entry_cursor_geometry_get(Edje_Real_Part *rp, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch); +void _edje_entry_user_insert(Edje_Real_Part *rp, const char *text); +void _edje_entry_select_allow_set(Edje_Real_Part *rp, Eina_Bool allow); +Eina_Bool _edje_entry_select_allow_get(const Edje_Real_Part *rp); +void _edje_entry_select_abort(Edje_Real_Part *rp); +void *_edje_entry_imf_context_get(Edje_Real_Part *rp); +Eina_Bool _edje_entry_cursor_next(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_prev(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_up(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_down(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_begin(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_end(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_line_begin(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_line_end(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_coord_set(Edje_Real_Part *rp, Edje_Cursor cur, int x, int y); +Eina_Bool _edje_entry_cursor_is_format_get(Edje_Real_Part *rp, Edje_Cursor cur); +Eina_Bool _edje_entry_cursor_is_visible_format_get(Edje_Real_Part *rp, Edje_Cursor cur); +char *_edje_entry_cursor_content_get(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_cursor_pos_set(Edje_Real_Part *rp, Edje_Cursor cur, int pos); +int _edje_entry_cursor_pos_get(Edje_Real_Part *rp, Edje_Cursor cur); +void _edje_entry_imf_context_reset(Edje_Real_Part *rp); +void _edje_entry_input_panel_layout_set(Edje_Real_Part *rp, Edje_Input_Panel_Layout layout); +Edje_Input_Panel_Layout _edje_entry_input_panel_layout_get(Edje_Real_Part *rp); +void _edje_entry_autocapital_type_set(Edje_Real_Part *rp, Edje_Text_Autocapital_Type autocapital_type); +Edje_Text_Autocapital_Type _edje_entry_autocapital_type_get(Edje_Real_Part *rp); +void _edje_entry_prediction_allow_set(Edje_Real_Part *rp, Eina_Bool prediction); +Eina_Bool _edje_entry_prediction_allow_get(Edje_Real_Part *rp); +void _edje_entry_input_panel_enabled_set(Edje_Real_Part *rp, Eina_Bool enabled); +Eina_Bool _edje_entry_input_panel_enabled_get(Edje_Real_Part *rp); +void _edje_entry_input_panel_show(Edje_Real_Part *rp); +void _edje_entry_input_panel_hide(Edje_Real_Part *rp); +void _edje_entry_input_panel_language_set(Edje_Real_Part *rp, Edje_Input_Panel_Lang lang); +Edje_Input_Panel_Lang _edje_entry_input_panel_language_get(Edje_Real_Part *rp); +void _edje_entry_input_panel_imdata_set(Edje_Real_Part *rp, const void *data, int len); +void _edje_entry_input_panel_imdata_get(Edje_Real_Part *rp, void *data, int *len); +void _edje_entry_input_panel_return_key_type_set(Edje_Real_Part *rp, Edje_Input_Panel_Return_Key_Type return_key_type); +Edje_Input_Panel_Return_Key_Type _edje_entry_input_panel_return_key_type_get(Edje_Real_Part *rp); +void _edje_entry_input_panel_return_key_disabled_set(Edje_Real_Part *rp, Eina_Bool disabled); +Eina_Bool _edje_entry_input_panel_return_key_disabled_get(Edje_Real_Part *rp); + +void _edje_external_init(); +void _edje_external_shutdown(); +Evas_Object *_edje_external_type_add(const char *type_name, Evas *evas, Evas_Object *parent, const Eina_List *params, const char *part_name); +void _edje_external_signal_emit(Evas_Object *obj, const char *emission, const char *source); +Eina_Bool _edje_external_param_set(Evas_Object *obj, Edje_Real_Part *rp, const Edje_External_Param *param) EINA_ARG_NONNULL(2); +Eina_Bool _edje_external_param_get(const Evas_Object *obj, Edje_Real_Part *rp, Edje_External_Param *param) EINA_ARG_NONNULL(2); +Evas_Object *_edje_external_content_get(const Evas_Object *obj, const char *content) EINA_ARG_NONNULL(1, 2); +void _edje_external_params_free(Eina_List *params, Eina_Bool free_strings); +void _edje_external_recalc_apply(Edje *ed, Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Common *chosen_desc); +void *_edje_external_params_parse(Evas_Object *obj, const Eina_List *params); +void _edje_external_parsed_params_free(Evas_Object *obj, void *params); + +Eina_Module *_edje_module_handle_load(const char *module); +void _edje_module_init(); +void _edje_module_shutdown(); + +static inline Eina_Bool +edje_program_is_strncmp(const char *str) +{ + size_t length; + + length = strlen(str); + + if (strpbrk(str, "*?[\\") != str + length) + return EINA_FALSE; + if (str[length] == '[' + || str[length] == '\\') + return EINA_FALSE; + return EINA_TRUE; +} + +static inline Eina_Bool +edje_program_is_strrncmp(const char *str) +{ + if (*str != '*' && *str != '?') + return EINA_FALSE; + if (strpbrk(str + 1, "*?[\\")) + return EINA_FALSE; + return EINA_TRUE; +} +void edje_object_propagate_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data); + + +/* used by edje_cc - private still */ +EAPI void _edje_program_insert(Edje_Part_Collection *ed, Edje_Program *p); +EAPI void _edje_program_remove(Edje_Part_Collection *ed, Edje_Program *p); + +void _edje_lua2_error_full(const char *file, const char *fnc, int line, lua_State *L, int err_code); +#define _edje_lua2_error(L, err_code) _edje_lua2_error_full(__FILE__, __FUNCTION__, __LINE__, L, err_code) +void _edje_lua2_script_init(Edje *ed); +void _edje_lua2_script_shutdown(Edje *ed); +void _edje_lua2_script_load(Edje_Part_Collection *edc, void *data, int size); +void _edje_lua2_script_unload(Edje_Part_Collection *edc); + +void _edje_lua2_script_func_shutdown(Edje *ed); +void _edje_lua2_script_func_show(Edje *ed); +void _edje_lua2_script_func_hide(Edje *ed); +void _edje_lua2_script_func_move(Edje *ed); +void _edje_lua2_script_func_resize(Edje *ed); +void _edje_lua2_script_func_message(Edje *ed, Edje_Message *em); +void _edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src); + +const char *edje_string_get(const Edje_String *es); +const char *edje_string_id_get(const Edje_String *es); + +void _edje_object_orientation_inform(Evas_Object *obj); + +void _edje_lib_ref(void); +void _edje_lib_unref(void); + +void _edje_subobj_register(Edje *ed, Evas_Object *ob); +void _edje_subobj_unregister(Edje *ed, Evas_Object *ob); + +void _edje_multisense_init(void); +void _edje_multisense_shutdown(void); +Eina_Bool _edje_multisense_internal_sound_sample_play(Edje *ed, const char *sample_name, const double speed); +Eina_Bool _edje_multisense_internal_sound_tone_play(Edje *ed, const char *tone_name, const double duration); + +void _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *state); + +void _edje_user_definition_remove(Edje_User_Defined *eud, Evas_Object *child); +void _edje_user_definition_free(Edje_User_Defined *eud); + +#ifdef HAVE_LIBREMIX +#include +#endif +#include + +typedef struct _Edje_Multisense_Env Edje_Multisense_Env; + +struct _Edje_Multisense_Env +{ +#ifdef HAVE_LIBREMIX + RemixEnv *remixenv; +#endif +}; + +typedef Eina_Bool (*MULTISENSE_FACTORY_INIT_FUNC) (Edje_Multisense_Env *); +#ifdef HAVE_LIBREMIX +typedef RemixBase* (*MULTISENSE_SOUND_PLAYER_GET_FUNC) (Edje_Multisense_Env *); +#endif + +#endif diff --git a/src/lib/edje_program.c b/src/lib/edje_program.c new file mode 100644 index 0000000..70d26bf --- /dev/null +++ b/src/lib/edje_program.c @@ -0,0 +1,2104 @@ +#include "edje_private.h" + +static void _edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Data *data, Eina_Bool prop); +static void _edje_param_copy(Edje_Real_Part *src_part, const char *src_param, Edje_Real_Part *dst_part, const char *dst_param); +static void _edje_param_set(Edje_Real_Part *part, const char *param, const char *value); + +int _edje_anim_count = 0; +Ecore_Animator *_edje_timer = NULL; +Eina_List *_edje_animators = NULL; + + +/*============================================================================* + * API * + *============================================================================*/ + +EAPI void +edje_frametime_set(double t) +{ + ecore_animator_frametime_set(t); +} + +EAPI double +edje_frametime_get(void) +{ + return ecore_animator_frametime_get(); +} + +void +edje_object_propagate_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Edje *ed; + Edje_Signal_Callback *escb; + + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->delete_me) return; + escb = calloc(1, sizeof(Edje_Signal_Callback)); + escb->propagate = EINA_TRUE; + escb->signal = eina_stringshare_add("*"); + escb->source = eina_stringshare_add("*"); + escb->func = func; + escb->data = data; + ed->callbacks = eina_list_append(ed->callbacks, escb); + if (ed->walking_callbacks) + { + escb->just_added = 1; + ed->just_added_callbacks = 1; + } + else + _edje_callbacks_patterns_clean(ed); +} + +EAPI void +edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data) +{ + Edje *ed; + Edje_Signal_Callback *escb; + + if ((!emission) || (!source) || (!func)) return; + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->delete_me) return; + escb = calloc(1, sizeof(Edje_Signal_Callback)); + if (emission[0]) + escb->signal = eina_stringshare_add(emission); + if (source[0]) + escb->source = eina_stringshare_add(source); + escb->func = func; + escb->data = data; + ed->callbacks = eina_list_append(ed->callbacks, escb); + if (ed->walking_callbacks) + { + escb->just_added = 1; + ed->just_added_callbacks = 1; + } + else + _edje_callbacks_patterns_clean(ed); +} + +EAPI void * +edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source)) +{ + Edje *ed; + Eina_List *l; + Edje_Signal_Callback *escb; + + if ((!emission) || (!source) || (!func)) return NULL; + ed = _edje_fetch(obj); + if (!ed) return NULL; + if (ed->delete_me) return NULL; + EINA_LIST_FOREACH(ed->callbacks, l, escb) + { + if ((escb->func == func) && + ((!escb->signal && !emission[0]) || + (escb->signal && !strcmp(escb->signal, emission))) && + ((!escb->source && !source[0]) || + (escb->source && !strcmp(escb->source, source)))) + { + void *data; + + data = escb->data; + if (ed->walking_callbacks) + { + escb->delete_me = 1; + ed->delete_callbacks = 1; + } + else + { + _edje_callbacks_patterns_clean(ed); + + ed->callbacks = eina_list_remove_list(ed->callbacks, l); + if (escb->signal) eina_stringshare_del(escb->signal); + if (escb->source) eina_stringshare_del(escb->source); + free(escb); + } + return data; + } + } + return NULL; +} + +EAPI void * +edje_object_signal_callback_del_full(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data) +{ + Edje *ed; + Eina_List *l; + Edje_Signal_Callback *escb; + + if ((!emission) || (!source) || (!func)) return NULL; + ed = _edje_fetch(obj); + if (!ed) return NULL; + if (ed->delete_me) return NULL; + EINA_LIST_FOREACH(ed->callbacks, l, escb) + { + if ((escb->func == func) && (escb->data == data) && + ((!escb->signal && !emission[0]) || + (escb->signal && !strcmp(escb->signal, emission))) && + ((!escb->source && !source[0]) || + (escb->source && !strcmp(escb->source, source)))) + { + void *data2; + + data2 = escb->data; + if (ed->walking_callbacks) + { + escb->delete_me = 1; + ed->delete_callbacks = 1; + } + else + { + _edje_callbacks_patterns_clean(ed); + + ed->callbacks = eina_list_remove_list(ed->callbacks, l); + if (escb->signal) eina_stringshare_del(escb->signal); + if (escb->source) eina_stringshare_del(escb->source); + free(escb); + } + return data2; + } + } + return NULL; +} + +EAPI void +edje_object_signal_emit(Evas_Object *obj, const char *emission, const char *source) +{ + Edje *ed; + + if ((!emission) || (!source)) return; + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->delete_me) return; + _edje_emit(ed, (char *)emission, (char *)source); +} + +/* FIXDOC: Verify/Expand */ +EAPI void +edje_object_play_set(Evas_Object *obj, Eina_Bool play) +{ + Edje *ed; + double t; + Eina_List *l; + Edje_Running_Program *runp; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->delete_me) return; + if (play) + { + if (!ed->paused) return; + ed->paused = 0; + t = ecore_time_get() - ed->paused_at; + EINA_LIST_FOREACH(ed->actions, l, runp) + runp->start_time += t; + } + else + { + if (ed->paused) return; + ed->paused = EINA_TRUE; + ed->paused_at = ecore_time_get(); + } + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_play_set(rp->swallowed_object, play); + } +} + +EAPI Eina_Bool +edje_object_play_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + if (ed->delete_me) return EINA_FALSE; + if (ed->paused) return EINA_FALSE; + return EINA_TRUE; +} + +/* FIXDOC: Verify/Expand */ +EAPI void +edje_object_animation_set(Evas_Object *obj, Eina_Bool on) +{ + Edje *ed; + Eina_List *l; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->delete_me) return; + _edje_block(ed); + ed->no_anim = !on; + _edje_freeze(ed); + if (!on) + { + Eina_List *newl = NULL; + const void *data; + + EINA_LIST_FOREACH(ed->actions, l, data) + newl = eina_list_append(newl, data); + while (newl) + { + Edje_Running_Program *runp; + + runp = eina_list_data_get(newl); + newl = eina_list_remove(newl, eina_list_data_get(newl)); + _edje_program_run_iterate(runp, runp->start_time + TO_DOUBLE(runp->program->tween.time)); + if (_edje_block_break(ed)) + { + eina_list_free(newl); + goto break_prog; + } + } + } + else + { + _edje_emit(ed, "load", NULL); + if (evas_object_visible_get(obj)) + { + evas_object_hide(obj); + evas_object_show(obj); + } + } + break_prog: + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_animation_set(rp->swallowed_object, on); + } + + _edje_thaw(ed); + _edje_unblock(ed); +} + + +EAPI Eina_Bool +edje_object_animation_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + if (ed->delete_me) return EINA_FALSE; + if (ed->no_anim) return EINA_FALSE; + return EINA_TRUE; +} + +/* Private Routines */ + +Eina_Bool +_edje_program_run_iterate(Edje_Running_Program *runp, double tim) +{ + FLOAT_T t, total; + Eina_List *l; + Edje *ed; + Edje_Program_Target *pt; + Edje_Real_Part *rp; + + ed = runp->edje; + if (ed->delete_me) return EINA_FALSE; + _edje_block(ed); + _edje_ref(ed); + _edje_freeze(ed); + t = FROM_DOUBLE(tim - runp->start_time); + total = runp->program->tween.time; + t = DIV(t, total); + if (t > FROM_INT(1)) t = FROM_INT(1); + EINA_LIST_FOREACH(runp->program->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) _edje_part_pos_set(ed, rp, + runp->program->tween.mode, t, + runp->program->tween.v1, + runp->program->tween.v2); + } + } + if (t >= FROM_INT(1)) + { + Edje_Program_After *pa; + + EINA_LIST_FOREACH(runp->program->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) + { + _edje_part_description_apply(ed, rp, + runp->program->state, + runp->program->value, + NULL, + 0.0); + _edje_part_pos_set(ed, rp, + runp->program->tween.mode, ZERO, + runp->program->tween.v1, + runp->program->tween.v2); + rp->program = NULL; + } + } + } + _edje_recalc(ed); + runp->delete_me = 1; + if (!ed->walking_actions) + { + _edje_anim_count--; + ed->actions = eina_list_remove(ed->actions, runp); + if (!ed->actions) + _edje_animators = eina_list_remove(_edje_animators, ed); + } +// _edje_emit(ed, "program,stop", runp->program->name); + if (_edje_block_break(ed)) + { + if (!ed->walking_actions) free(runp); + goto break_prog; + } + EINA_LIST_FOREACH(runp->program->after, l, pa) + { + Edje_Program *pr; + + if (pa->id >= 0) + { + pr = ed->table_programs[pa->id % ed->table_programs_size]; + if (pr) _edje_program_run(ed, pr, 0, "", ""); + if (_edje_block_break(ed)) + { + if (!ed->walking_actions) free(runp); + goto break_prog; + } + } + } + _edje_thaw(ed); + _edje_unref(ed); + if (!ed->walking_actions) free(runp); + _edje_unblock(ed); + return EINA_FALSE; + } + break_prog: + _edje_recalc(ed); + _edje_thaw(ed); + _edje_unref(ed); + _edje_unblock(ed); + return EINA_TRUE; +} + +void +_edje_program_end(Edje *ed, Edje_Running_Program *runp) +{ + Eina_List *l; + Edje_Program_Target *pt; +// const char *pname = NULL; + int free_runp = 0; + + if (ed->delete_me) return; + _edje_ref(ed); + _edje_freeze(ed); + EINA_LIST_FOREACH(runp->program->targets, l, pt) + { + Edje_Real_Part *rp; + + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) + { + _edje_part_description_apply(ed, rp, + runp->program->state, + runp->program->value, + NULL, + 0.0); + _edje_part_pos_set(ed, rp, + runp->program->tween.mode, ZERO, + runp->program->tween.v1, + runp->program->tween.v2); + rp->program = NULL; + } + } + } + _edje_recalc(ed); + runp->delete_me = 1; +// pname = runp->program->name; + if (!ed->walking_actions) + { + _edje_anim_count--; + ed->actions = eina_list_remove(ed->actions, runp); + free_runp = 1; + if (!ed->actions) + { + _edje_animators = eina_list_remove(_edje_animators, ed); + } + } +// _edje_emit(ed, "program,stop", pname); + _edje_thaw(ed); + _edje_unref(ed); + if (free_runp) free(runp); +} + +void +_edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, const char *ssrc) +{ + Eina_List *l; + Edje_Real_Part *rp; + Edje_Program_Target *pt; + Edje_Program *pr2; + Edje_Program_After *pa; + /* limit self-feeding loops in programs to 64 levels */ + static int recursions = 0; + static int recursion_limit = 0; + + if (ed->delete_me) return; + if ((pr->in.from > 0.0) && (pr->in.range >= 0.0) && (!force)) + { + Edje_Pending_Program *pp; + double r = 0.0; + + pp = calloc(1, sizeof(Edje_Pending_Program)); + if (!pp) return; + if (pr->in.range > 0.0) r = ((double)rand() / RAND_MAX); + pp->timer = ecore_timer_add(pr->in.from + (pr->in.range * r), + _edje_pending_timer_cb, pp); + if (!pp->timer) + { + free(pp); + return; + } + pp->edje = ed; + pp->program = pr; + ed->pending_actions = eina_list_append(ed->pending_actions, pp); + return; + } + if ((recursions >= 64) || (recursion_limit)) + { + ERR("Programs recursing up to recursion limit of %i in '%s' with '%s', '%s' from '%s', '%s'. Disabled.", + 64, pr->name, ssig, ssrc, ed->path, ed->group); + recursion_limit = 1; + return; + } + recursions++; + _edje_block(ed); + _edje_ref(ed); + _edje_freeze(ed); + switch (pr->action) + { + case EDJE_ACTION_TYPE_STATE_SET: + if ((pr->tween.time > ZERO) && (!ed->no_anim)) + { + Edje_Running_Program *runp; + + runp = calloc(1, sizeof(Edje_Running_Program)); + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) + { + if ((rp->object) && (pr->tween.mode & EDJE_TWEEN_MODE_OPT_FROM_CURRENT)) + { + Edje_Calc_Params *tmp; + + tmp = calloc(1, sizeof(Edje_Calc_Params)); + if (!tmp) goto low_mem_current; + _edje_part_recalc(ed, rp, FLAG_XY, tmp); + + if (rp->current) free(rp->current); + rp->current = tmp; + + rp->current->x -= ed->x; + rp->current->y -= ed->y; + rp->current->map.center.x -= ed->x; + rp->current->map.center.y -= ed->y; + rp->current->map.light.x -= ed->x; + rp->current->map.light.y -= ed->y; + rp->current->map.persp.x -= ed->x; + rp->current->map.persp.y -= ed->y; + } + else + { + low_mem_current: + if (rp->current) free(rp->current); + rp->current = NULL; + } + + if (rp->program) + _edje_program_end(ed, rp->program); + _edje_part_description_apply(ed, rp, + rp->param1.description->state.name, + rp->param1.description->state.value, + pr->state, + pr->value); + _edje_part_pos_set(ed, rp, pr->tween.mode, ZERO, + pr->tween.v1, + pr->tween.v2); + rp->program = runp; + } + } + } + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) + { + ed->actions = eina_list_append(ed->actions, runp); + goto break_prog; + } + if (!ed->actions) + _edje_animators = eina_list_append(_edje_animators, ed); + ed->actions = eina_list_append(ed->actions, runp); + runp->start_time = ecore_loop_time_get(); + runp->edje = ed; + runp->program = pr; + if (!_edje_timer) + _edje_timer = ecore_animator_add(_edje_timer_cb, NULL); + _edje_anim_count++; + } + else + { + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) + { + if (rp->program) + _edje_program_end(ed, rp->program); + _edje_part_description_apply(ed, rp, + pr->state, + pr->value, + NULL, + 0.0); + _edje_part_pos_set(ed, rp, pr->tween.mode, ZERO, + pr->tween.v1, + pr->tween.v2); + } + } + } + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + + EINA_LIST_FOREACH(pr->after, l, pa) + { + if (pa->id >= 0) + { + pr2 = ed->table_programs[pa->id % ed->table_programs_size]; + if (pr2) _edje_program_run(ed, pr2, 0, "", ""); + if (_edje_block_break(ed)) goto break_prog; + } + } + _edje_recalc(ed); + } + break; + case EDJE_ACTION_TYPE_ACTION_STOP: + // _edje_emit(ed, "program,start", pr->name); + EINA_LIST_FOREACH(pr->targets, l, pt) + { + Eina_List *ll; + Edje_Running_Program *runp; + Edje_Pending_Program *pp; + + for (ll = ed->actions; ll; ) + { + runp = ll->data; + ll = ll->next; + if (pt->id == runp->program->id) + { + _edje_program_end(ed, runp); +// goto done; + } + } + for (ll = ed->pending_actions; ll; ) + { + pp = ll->data; + ll = ll->next; + if (pt->id == pp->program->id) + { + ed->pending_actions = eina_list_remove(ed->pending_actions, pp); + ecore_timer_del(pp->timer); + free(pp); +// goto done; + } + } +// done: +// continue; + } + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + break; + case EDJE_ACTION_TYPE_SIGNAL_EMIT: + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + _edje_emit(ed, pr->state, pr->state2); + if (_edje_block_break(ed)) goto break_prog; + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + break; + case EDJE_ACTION_TYPE_DRAG_VAL_SET: + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if ((rp) && (rp->drag) && (rp->drag->down.count == 0)) + { + rp->drag->val.x = pr->value; + rp->drag->val.y = pr->value2; + if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0; + else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0; + if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0; + else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0; + _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(ed, "drag,set", rp->part->name); + if (_edje_block_break(ed)) goto break_prog; + } + } + } + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + break; + case EDJE_ACTION_TYPE_DRAG_VAL_STEP: + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if ((rp) && (rp->drag) && (rp->drag->down.count == 0)) + { + rp->drag->val.x += pr->value * rp->drag->step.x * rp->part->dragable.x; + rp->drag->val.y += pr->value2 * rp->drag->step.y * rp->part->dragable.y; + if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0; + else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0; + if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0; + else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0; + _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(ed, "drag,step", rp->part->name); + if (_edje_block_break(ed)) goto break_prog; + } + } + } + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + break; + case EDJE_ACTION_TYPE_DRAG_VAL_PAGE: + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if ((rp) && (rp->drag) && (rp->drag->down.count == 0)) + { + rp->drag->val.x += pr->value * rp->drag->page.x * rp->part->dragable.x; + rp->drag->val.y += pr->value2 * rp->drag->page.y * rp->part->dragable.y; + if (rp->drag->val.x < 0.0) rp->drag->val.x = 0.0; + else if (rp->drag->val.x > 1.0) rp->drag->val.x = 1.0; + if (rp->drag->val.y < 0.0) rp->drag->val.y = 0.0; + else if (rp->drag->val.y > 1.0) rp->drag->val.y = 1.0; + _edje_dragable_pos_set(ed, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(ed, "drag,page", rp->part->name); + if (_edje_block_break(ed)) goto break_prog; + } + } + } + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + break; + case EDJE_ACTION_TYPE_SCRIPT: + { + char fname[128]; + + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + snprintf(fname, sizeof(fname), "_p%i", pr->id); + _edje_embryo_test_run(ed, fname, ssig, ssrc); + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + _edje_recalc_do(ed); + } + break; + case EDJE_ACTION_TYPE_FOCUS_SET: + if (!pr->targets) + ed->focused_part = NULL; + else + { + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp) + { + if (ed->focused_part != rp) + { + if (ed->focused_part) + _edje_emit(ed, "focus,part,out", + ed->focused_part->part->name); + ed->focused_part = rp; + _edje_emit(ed, "focus,part,in", + ed->focused_part->part->name); + } + } + } + } + } + break; + case EDJE_ACTION_TYPE_FOCUS_OBJECT: + if (!pr->targets) + { + Evas_Object *focused; + + focused = evas_focus_get(evas_object_evas_get(ed->obj)); + if (focused) + { + unsigned int i; + + /* Check if the current swallowed object is one of my child. */ + for (i = 0; i < ed->table_parts_size; ++i) + { + rp = ed->table_parts[i]; + if (rp && rp->swallowed_object == focused) + { + evas_object_focus_set(focused, EINA_FALSE); + break; + } + } + } + } + else + { + EINA_LIST_FOREACH(pr->targets, l, pt) + { + if (pt->id >= 0) + { + rp = ed->table_parts[pt->id % ed->table_parts_size]; + if (rp && rp->swallowed_object) + evas_object_focus_set(rp->swallowed_object, EINA_TRUE); + } + } + } + break; + case EDJE_ACTION_TYPE_SOUND_SAMPLE: + if (_edje_block_break(ed)) + goto break_prog; + _edje_multisense_internal_sound_sample_play(ed, pr->sample_name, pr->speed); + break; + case EDJE_ACTION_TYPE_SOUND_TONE: + if (_edje_block_break(ed)) + goto break_prog; + _edje_multisense_internal_sound_tone_play(ed, pr->tone_name, pr->duration); + break; + case EDJE_ACTION_TYPE_PARAM_COPY: + { + Edje_Real_Part *src_part, *dst_part; + + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + + src_part = ed->table_parts[pr->param.src % ed->table_parts_size]; + dst_part = ed->table_parts[pr->param.dst % ed->table_parts_size]; + _edje_param_copy(src_part, pr->state, dst_part, pr->state2); + + if (_edje_block_break(ed)) goto break_prog; + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + } + break; + case EDJE_ACTION_TYPE_PARAM_SET: + { + Edje_Real_Part *part; + + // _edje_emit(ed, "program,start", pr->name); + if (_edje_block_break(ed)) goto break_prog; + + part = ed->table_parts[pr->param.dst % ed->table_parts_size]; + _edje_param_set(part, pr->state, pr->state2); + + if (_edje_block_break(ed)) goto break_prog; + // _edje_emit(ed, "program,stop", pr->name); + if (_edje_block_break(ed)) goto break_prog; + } + break; + default: + // _edje_emit(ed, "program,start", pr->name); + // _edje_emit(ed, "program,stop", pr->name); + break; + } + if (!((pr->action == EDJE_ACTION_TYPE_STATE_SET) + /* hmm this fucks somethgin up. must look into it later */ + /* && (pr->tween.time > ZERO) && (!ed->no_anim))) */ + )) + { + EINA_LIST_FOREACH(pr->after, l, pa) + { + if (pa->id >= 0) + { + pr2 = ed->table_programs[pa->id % ed->table_programs_size]; + if (pr2) _edje_program_run(ed, pr2, 0, "", ""); + if (_edje_block_break(ed)) goto break_prog; + } + } + } + break_prog: + _edje_thaw(ed); + _edje_unref(ed); + recursions--; + if (recursions == 0) recursion_limit = 0; + _edje_unblock(ed); +} + +void +_edje_emit(Edje *ed, const char *sig, const char *src) +{ + _edje_emit_full(ed, sig, src, NULL, NULL); +} + +/* data should either be NULL or a malloc allocated data */ +void +_edje_emit_full(Edje *ed, const char *sig, const char *src, void *data, void (*free_func)(void *)) +{ + Edje_Message_Signal emsg; + const char *sep; + Eina_Bool broadcast; + + if (!ed->collection) return; + if (ed->delete_me) return; + broadcast = ed->collection->broadcast_signal; + + sep = strchr(sig, EDJE_PART_PATH_SEPARATOR); + + /* If we are not sending the signal to a part of the child, the + * signal if for ourself + */ + if (sep) + { + Edje_Real_Part *rp = NULL; + const char *newsig; + Edje *ed2; + char *part; + char *idx; + size_t length; + + /* the signal contains a colon, split the signal into "parts:signal" */ + length = sep - sig + 1; + part = alloca(length); + memcpy(part, sig, length - 1); + part[length - 1] = '\0'; + + newsig = sep + 1; + + /* lookup for alias */ + if (ed->collection && ed->collection->alias) + { + char *alias; + + alias = eina_hash_find(ed->collection->alias, part); + if (alias) { + char *aliased; + int alien; + int nslen; + + alien = strlen(alias); + nslen = strlen(newsig); + length = alien + nslen + 2; + + aliased = alloca(length); + memcpy(aliased, alias, alien); + aliased[alien] = EDJE_PART_PATH_SEPARATOR; + memcpy(aliased + alien + 1, newsig, nslen + 1); + + _edje_emit(ed, aliased, src); + return; + } + } + + /* search for the index if present and remove it from the part */ + idx = strchr(part, EDJE_PART_PATH_SEPARATOR_INDEXL); + if (idx) + { + char *end; + + end = strchr(idx + 1, EDJE_PART_PATH_SEPARATOR_INDEXR); + if (end && end != idx + 1) + { + char *tmp; + + tmp = alloca(end - idx - 1); + memcpy(tmp, idx + 1, end - idx - 1); + tmp[end - idx - 1] = '\0'; + *idx = '\0'; + idx = tmp; + } + else + { + idx = NULL; + } + } + + /* search for the right part now */ + rp = _edje_real_part_get(ed, part); + if (!rp) goto end; + + switch (rp->part->type) + { + case EDJE_PART_TYPE_GROUP: + if (!rp->swallowed_object) goto end; + ed2 = _edje_fetch(rp->swallowed_object); + if (!ed2) goto end; + + _edje_emit(ed2, newsig, src); + broadcast = EINA_FALSE; + break; + + case EDJE_PART_TYPE_EXTERNAL: + if (!rp->swallowed_object) break ; + + if (!idx) + { + _edje_external_signal_emit(rp->swallowed_object, newsig, src); + } + else + { + Evas_Object *child; + + child = _edje_children_get(rp, idx); + ed2 = _edje_fetch(child); + if (!ed2) goto end; + _edje_emit(ed2, newsig, src); + } + broadcast = EINA_FALSE; + break ; + + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + if (idx) + { + Evas_Object *child; + + child = _edje_children_get(rp, idx); + ed2 = _edje_fetch(child); + if (!ed2) goto end; + _edje_emit(ed2, newsig, src); + broadcast = EINA_FALSE; + } + break ; + + default: +// ERR("SPANK SPANK SPANK !!!\nYou should never be here !"); + break; + } + } + + end: + emsg.sig = sig; + emsg.src = src; + if (data) + { + emsg.data = calloc(1, sizeof(*(emsg.data))); + emsg.data->ref = 1; + emsg.data->data = data; + emsg.data->free_func = free_func; + } + else + { + emsg.data = NULL; + } +/* new sends code */ + if (broadcast) + edje_object_message_send(ed->obj, EDJE_MESSAGE_SIGNAL, 0, &emsg); + else + _edje_message_send(ed, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg); +/* old send code - use api now + _edje_message_send(ed, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg); + EINA_LIST_FOREACH(ed->subobjs, l, obj) + { + Edje *ed2; + + ed2 = _edje_fetch(obj); + if (!ed2) continue; + if (ed2->delete_me) continue; + _edje_message_send(ed2, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg); + } + */ + if (emsg.data && (--(emsg.data->ref) == 0)) + { + if (emsg.data->free_func) + { + emsg.data->free_func(emsg.data->data); + } + free(emsg.data); + } +} + +struct _Edje_Program_Data +{ + Eina_List *matches; + Edje *ed; + const char *source; +}; + +static Eina_Bool _edje_glob_callback(Edje_Program *pr, void *dt) +{ + struct _Edje_Program_Data *data = dt; + Edje_Real_Part *rp = NULL; + Eina_Bool exec = EINA_TRUE; + + if (pr->filter.state) + { + rp = _edje_real_part_get(data->ed, pr->filter.part ? pr->filter.part : data->source); + if (rp) + exec = (rp->chosen_description->state.name == pr->filter.state); + } + + pr->exec = exec; + + data->matches = eina_list_append(data->matches, pr); + + return EINA_FALSE; +} + +void +_edje_callbacks_patterns_clean(Edje *ed) +{ + _edje_signals_sources_patterns_clean(&ed->patterns.callbacks); + + eina_rbtree_delete(ed->patterns.callbacks.exact_match, + EINA_RBTREE_FREE_CB(edje_match_signal_source_free), + NULL); + ed->patterns.callbacks.exact_match = NULL; + + ed->patterns.callbacks.u.callbacks.globing = eina_list_free(ed->patterns.callbacks.u.callbacks.globing); +} + +static void +_edje_callbacks_patterns_init(Edje *ed) +{ + Edje_Signals_Sources_Patterns *ssp = &ed->patterns.callbacks; + + if ((ssp->signals_patterns) || (ssp->sources_patterns) || + (ssp->u.callbacks.globing) || (ssp->exact_match)) + return; + + ssp->u.callbacks.globing = edje_match_callback_hash_build(ed->callbacks, + &ssp->exact_match); + + ssp->signals_patterns = edje_match_callback_signal_init(ssp->u.callbacks.globing); + ssp->sources_patterns = edje_match_callback_source_init(ssp->u.callbacks.globing); +} + +/* FIXME: what if we delete the evas object??? */ +void +_edje_emit_handle(Edje *ed, const char *sig, const char *src, + Edje_Message_Signal_Data *sdata, Eina_Bool prop) +{ + if (ed->delete_me) return; + if (!sig) sig = ""; + if (!src) src = ""; +// printf("EDJE EMIT: (%p) signal: \"%s\" source: \"%s\"\n", ed, sig, src); + _edje_block(ed); + _edje_ref(ed); + _edje_freeze(ed); + + if (ed->collection && ed->L) + _edje_lua2_script_func_signal(ed, sig, src); + + if (ed->collection) + { +#ifdef EDJE_PROGRAM_CACHE + Edje_Part_Collection *ec; + char *tmps; + int l1, l2; +#endif + int done; + +#ifdef EDJE_PROGRAM_CACHE + ec = ed->collection; + l1 = strlen(sig); + l2 = strlen(src); + tmps = alloca(l1 + l2 + 3); /* \0, \337, \0 */ + strcpy(tmps, sig); + tmps[l1] = '\377'; + strcpy(&(tmps[l1 + 1]), src); +#endif + done = 0; + +#ifdef EDJE_PROGRAM_CACHE + { + Eina_List *matches; + Eina_List *l; + Edje_Program *pr; + + if (eina_hash_find(ec->prog_cache.no_matches, tmps)) + { + done = 1; + } + else if ((matches = eina_hash_find(ec->prog_cache.matches, tmps))) + { + EINA_LIST_FOREACH(matches, l, pr) + { + Eina_Bool exec = EINA_TRUE; + + if (pr->filter.state) + { + Edje_Real_Part *rp; + + rp = _edje_real_part_get(ed, pr->filter.part ? pr->filter.part : src); + if (rp) + { + if (rp->program) + exec = EINA_FALSE; + else + exec = (rp->chosen_description->state.name == pr->filter.state); + } + } + + pr->exec = exec; + } + + EINA_LIST_FOREACH(matches, l, pr) + if (pr->exec) + { + _edje_program_run(ed, pr, 0, sig, src); + if (_edje_block_break(ed)) + { + goto break_prog; + } + } + + done = 1; + } + } +#endif + if (!done) + { + struct _Edje_Program_Data data; + + data.ed = ed; + data.source = src; + data.matches = NULL; + + if (ed->table_programs_size > 0) + { + const Eina_List *match; + const Eina_List *l; + Edje_Program *pr; + + if (ed->patterns.programs.u.programs.globing) + if (edje_match_programs_exec(ed->patterns.programs.signals_patterns, + ed->patterns.programs.sources_patterns, + sig, + src, + ed->patterns.programs.u.programs.globing, + _edje_glob_callback, + &data, + prop) == 0) + goto break_prog; + + match = edje_match_signal_source_hash_get(sig, src, + ed->patterns.programs.exact_match); + EINA_LIST_FOREACH(match, l, pr) + _edje_glob_callback(pr, &data); + +#ifdef EDJE_PROGRAM_CACHE + EINA_LIST_FOREACH(data.matches, l, pr) +#else + EINA_LIST_FREE(data.matches, pr) +#endif + { + if (pr->exec) + _edje_program_run(ed, pr, 0, sig, src); + + if (_edje_block_break(ed)) + { + eina_list_free(data.matches); + data.matches = NULL; + goto break_prog; + } + } + } + +#ifdef EDJE_PROGRAM_CACHE + if (tmps) + { + if (data.matches == NULL) + { + if (!ec->prog_cache.no_matches) + ec->prog_cache.no_matches = eina_hash_string_superfast_new(NULL); + eina_hash_add(ec->prog_cache.no_matches, tmps, ed); + } + else + { + if (!ec->prog_cache.matches) + ec->prog_cache.matches = eina_hash_string_superfast_new(NULL); + eina_hash_add(ec->prog_cache.matches, tmps, data.matches); + } + } +#endif + } + _edje_emit_cb(ed, sig, src, sdata, prop); + if (_edje_block_break(ed)) + { + goto break_prog; + } + } + break_prog: + _edje_thaw(ed); + _edje_unref(ed); + _edje_unblock(ed); +} + +/* Extra data for callbacks */ +static void *callback_extra_data = NULL; + +EAPI void * +edje_object_signal_callback_extra_data_get(void) +{ + return callback_extra_data; +} + +/* FIXME: what if we delete the evas object??? */ +static void +_edje_emit_cb(Edje *ed, const char *sig, const char *src, Edje_Message_Signal_Data *data, Eina_Bool prop) +{ + Eina_List *l; + + if (ed->delete_me) return; + _edje_ref(ed); + _edje_freeze(ed); + _edje_block(ed); + + if (ed->just_added_callbacks) + _edje_callbacks_patterns_clean(ed); + + ed->walking_callbacks++; + + if (ed->callbacks) + { + Edje_Signal_Callback *escb; + const Eina_List *match; + const Eina_List *l2; + int r = 1; + callback_extra_data = (data) ? data->data : NULL; + + _edje_callbacks_patterns_init(ed); + if (ed->patterns.callbacks.u.callbacks.globing) + r = edje_match_callback_exec(ed->patterns.callbacks.signals_patterns, + ed->patterns.callbacks.sources_patterns, + sig, + src, + ed->patterns.callbacks.u.callbacks.globing, + ed, + prop); + + if (!r) + goto break_prog; + + match = edje_match_signal_source_hash_get(sig, src, + ed->patterns.callbacks.exact_match); + EINA_LIST_FOREACH(match, l2, escb) + { + if ((prop) && (escb->propagate)) continue; + if ((!escb->just_added) && (!escb->delete_me)) + { + escb->func(escb->data, ed->obj, sig, src); + if (_edje_block_break(ed)) + break; + } + } + } + break_prog: + + ed->walking_callbacks--; + if (!ed->walking_callbacks && + ((ed->delete_callbacks) || (ed->just_added_callbacks))) + { + ed->delete_callbacks = 0; + ed->just_added_callbacks = 0; + l = ed->callbacks; + while (l) + { + Edje_Signal_Callback *escb = l->data; + Eina_List *next_l = l->next; + + if (escb->just_added) + escb->just_added = 0; + if (escb->delete_me) + { + ed->callbacks = eina_list_remove_list(ed->callbacks, l); + if (escb->signal) eina_stringshare_del(escb->signal); + if (escb->source) eina_stringshare_del(escb->source); + free(escb); + } + l = next_l; + } + + _edje_callbacks_patterns_clean(ed); + } + _edje_unblock(ed); + _edje_thaw(ed); + _edje_unref(ed); +} + +static const Edje_External_Param_Info * +_edje_external_param_info_get(const Evas_Object *obj, const char *name) +{ + const Edje_External_Type *type; + const Edje_External_Param_Info *info; + + type = evas_object_data_get(obj, "Edje_External_Type"); + if (!type) return NULL; + for (info = type->parameters_info; info->name; info++) + if (!strcmp(info->name, name)) return info; + + return NULL; +} + +static Edje_External_Param * +_edje_param_external_get(Edje_Real_Part *rp, const char *name, Edje_External_Param *param) +{ + Evas_Object *swallowed_object = rp->swallowed_object; + const Edje_External_Param_Info *info; + + info = _edje_external_param_info_get(swallowed_object, name); + if (!info) return NULL; + + memset(param, 0, sizeof(*param)); + param->name = info->name; + param->type = info->type; + if (!_edje_external_param_get(NULL, rp, param)) return NULL; + return param; +} + +/* simulate external properties for native objects */ +static Edje_External_Param * +_edje_param_native_get(Edje_Real_Part *rp, const char *name, Edje_External_Param *param, void **free_ptr) +{ + *free_ptr = NULL; + if ((rp->part->type == EDJE_PART_TYPE_TEXT) || + (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + if (!strcmp(name, "text")) + { + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + + _edje_recalc_do(rp->edje); + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + param->s = _edje_entry_text_get(rp); + else if (rp->part->type == EDJE_PART_TYPE_TEXT) + param->s = rp->text.text; + else + param->s = evas_object_textblock_text_markup_get(rp->object); + return param; + } + if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + if (!strcmp(name, "text_unescaped")) + { + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + + _edje_recalc_do(rp->edje); + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + const char *tmp = _edje_entry_text_get(rp); + char *unescaped = _edje_text_unescape(tmp); + *free_ptr = unescaped; + param->s = unescaped; + } + else if (rp->part->type == EDJE_PART_TYPE_TEXT) + param->s = rp->text.text; + else + { + const char *tmp; + char *unescaped; + + tmp = evas_object_textblock_text_markup_get(rp->object); + unescaped = _edje_text_unescape(tmp); + *free_ptr = unescaped; + param->s = unescaped; + } + + return param; + } + + if ((rp->entry_data) && + (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) && + (!strcmp(name, "select_allow"))) + { + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_BOOL; + param->i = _edje_entry_select_allow_get(rp); + return param; + } + } + } + + if ((rp->drag) && (rp->drag->down.count == 0)) + { + if (!strncmp(name, "drag_", sizeof("drag_") - 1)) + { + const char *sub_name = name + sizeof("drag_") - 1; + if (!strcmp(sub_name, "value_x")) + { + double d; + + _edje_recalc_do(rp->edje); + d = TO_DOUBLE(rp->drag->val.x); + if (rp->part->dragable.x < 0) d = 1.0 - d; + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = d; + return param; + } + if (!strcmp(sub_name, "value_y")) + { + double d; + + _edje_recalc_do(rp->edje); + d = TO_DOUBLE(rp->drag->val.y); + if (rp->part->dragable.y < 0) d = 1.0 - d; + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = d; + return param; + } + + if (!strcmp(sub_name, "size_w")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->size.x); + return param; + } + if (!strcmp(sub_name, "size_h")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->size.y); + return param; + } + + if (!strcmp(sub_name, "step_x")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->step.x); + return param; + } + if (!strcmp(sub_name, "step_y")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->step.y); + return param; + } + + if (!strcmp(sub_name, "page_x")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->page.x); + return param; + } + if (!strcmp(sub_name, "page_y")) + { + _edje_recalc_do(rp->edje); + param->name = name; + param->type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE; + param->d = TO_DOUBLE(rp->drag->page.y); + return param; + } + + return NULL; + } + } + + return NULL; +} + +static Eina_Bool +_edje_param_native_set(Edje_Real_Part *rp, const char *name, const Edje_External_Param *param) +{ + if ((rp->part->type == EDJE_PART_TYPE_TEXT) || + (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + if (!strcmp(name, "text")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_STRING) + return EINA_FALSE; + + _edje_object_part_text_raw_set + (rp->edje->obj, rp, rp->part->name, param->s); + return EINA_TRUE; + } + if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + if (!strcmp(name, "text_unescaped")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_STRING) + return EINA_FALSE; + + if (rp->part->type == EDJE_PART_TYPE_TEXT) + _edje_object_part_text_raw_set + (rp->edje->obj, rp, rp->part->name, param->s); + else + { + char *escaped = _edje_text_escape(param->s); + _edje_object_part_text_raw_set + (rp->edje->obj, rp, rp->part->name, escaped); + free(escaped); + } + + return EINA_TRUE; + } + + if ((rp->entry_data) && + (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) && + (!strcmp(name, "select_allow"))) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_BOOL) + return EINA_FALSE; + _edje_entry_select_allow_set(rp, param->i); + return EINA_TRUE; + } + } + } + + if ((rp->drag) && (rp->drag->down.count == 0)) + { + if (!strncmp(name, "drag_", sizeof("drag_") - 1)) + { + const char *sub_name = name + sizeof("drag_") - 1; + if (!strcmp(sub_name, "value_x")) + { + double d; + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + d = param->d; + if (rp->part->dragable.confine_id != -1) + d = CLAMP(d, 0.0, 1.0); + if (rp->part->dragable.x < 0) d = 1.0 - d; + if (rp->drag->val.x == FROM_DOUBLE(d)) return EINA_TRUE; + rp->drag->val.x = FROM_DOUBLE(d); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_dragable_pos_set + (rp->edje, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(rp->edje, "drag,set", rp->part->name); + return EINA_TRUE; + } + if (!strcmp(sub_name, "value_y")) + { + double d; + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + d = param->d; + if (rp->part->dragable.confine_id != -1) + d = CLAMP(d, 0.0, 1.0); + if (rp->part->dragable.y < 0) d = 1.0 - d; + if (rp->drag->val.y == FROM_DOUBLE(d)) return EINA_TRUE; + rp->drag->val.y = FROM_DOUBLE(d); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_dragable_pos_set + (rp->edje, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(rp->edje, "drag,set", rp->part->name); + return EINA_TRUE; + } + + if (!strcmp(sub_name, "size_w")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->size.x = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); + rp->edje->recalc_call = 1; + rp->edje->dirty = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + return EINA_TRUE; + } + if (!strcmp(sub_name, "size_h")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->size.y = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); + rp->edje->recalc_call = 1; + rp->edje->dirty = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + return EINA_TRUE; + } + + if (!strcmp(sub_name, "step_x")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->step.x = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; + } + if (!strcmp(sub_name, "step_y")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->step.y = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; + } + + if (!strcmp(sub_name, "page_x")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->page.x = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; + } + if (!strcmp(sub_name, "page_y")) + { + if (param->type != EDJE_EXTERNAL_PARAM_TYPE_DOUBLE) + return EINA_FALSE; + rp->drag->page.y = FROM_DOUBLE(CLAMP(param->d, 0.0, 1.0)); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; + } + + return EINA_FALSE; + } + } + + return EINA_FALSE; +} + +static const Edje_External_Param_Info * +_edje_native_param_info_get(const Edje_Real_Part *rp, const char *name) +{ + if ((rp->part->type == EDJE_PART_TYPE_TEXT) || + (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + if (!strcmp(name, "text")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_STRING("text"); + return π + } + if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + if (!strcmp(name, "text_unescaped")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_STRING("text_unescaped"); + return π + } + if (!strcmp(name, "select_allow")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_BOOL("text_unescaped"); + return π + } + } + } + + if ((rp->drag) && (rp->drag->down.count == 0)) + { + if (!strncmp(name, "drag_", sizeof("drag_") - 1)) + { + name += sizeof("drag_") - 1; + if (!strcmp(name, "value_x")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_value_x"); + return π + } + if (!strcmp(name, "value_y")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_value_y"); + return π + } + if (!strcmp(name, "size_w")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_size_w"); + return π + } + if (!strcmp(name, "size_h")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_size_h"); + return π + } + if (!strcmp(name, "step_x")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_step_x"); + return π + } + if (!strcmp(name, "step_y")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_step_y"); + return π + } + if (!strcmp(name, "page_x")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_page_x"); + return π + } + if (!strcmp(name, "page_y")) + { + static const Edje_External_Param_Info pi = + EDJE_EXTERNAL_PARAM_INFO_DOUBLE("drag_page_y"); + return π + } + + return NULL; + } + } + + return NULL; +} + +static Edje_External_Param * +_edje_param_convert(Edje_External_Param *param, const Edje_External_Param_Info *dst_info) +{ + if (param->type == dst_info->type) return param; + + switch (dst_info->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + case EDJE_EXTERNAL_PARAM_TYPE_INT: + { + int i; + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + i = (int)param->d; + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + i = (param->s) ? atoi(param->s) : 0; + break; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + case EDJE_EXTERNAL_PARAM_TYPE_INT: + i = param->i; + break; + default: + return NULL; + } + if (dst_info->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + i = !!i; + param->type = dst_info->type; + param->i = i; + return param; + } + + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + { + double d; + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_INT: + d = (double)param->i; + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + d = (param->s) ? atof(param->s) : 0.0; + break; + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + d = (double)param->i; + break; + default: + return NULL; + } + param->type = dst_info->type; + param->d = d; + return param; + } + + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + { + static char s[64]; + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + case EDJE_EXTERNAL_PARAM_TYPE_INT: + if (!snprintf(s, sizeof(s), "%i", param->i)) return NULL; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (!snprintf(s, sizeof(s), "%f", param->d)) return NULL; + break; + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + param->type = dst_info->type; + return param; + default: + return NULL; + } + param->type = dst_info->type; + param->s = s; + return param; + } + + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + { + static char s[64]; + const char *val; + switch (param->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + case EDJE_EXTERNAL_PARAM_TYPE_INT: + if (!snprintf(s, sizeof(s), "%i", param->i)) return NULL; + val = s; + break; + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if (!snprintf(s, sizeof(s), "%f", param->d)) return NULL; + val = s; + break; + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + val = param->s; + break; + default: + return NULL; + } + + param->type = dst_info->type; + if (param->s != val) param->s = val; + return param; + } + + default: return NULL; + } +} + +static Eina_Bool +_edje_param_validate(const Edje_External_Param *param, const Edje_External_Param_Info *info) +{ + switch (info->type) + { + case EDJE_EXTERNAL_PARAM_TYPE_BOOL: + return ((param->i == 0) || (param->i == 1)); + + case EDJE_EXTERNAL_PARAM_TYPE_INT: + if ((info->info.i.min != EDJE_EXTERNAL_INT_UNSET) && + (info->info.i.min > param->i)) + return EINA_FALSE; + + if ((info->info.i.max != EDJE_EXTERNAL_INT_UNSET) && + (info->info.i.max < param->i)) + return EINA_FALSE; + + return EINA_TRUE; + + case EDJE_EXTERNAL_PARAM_TYPE_DOUBLE: + if ((info->info.d.min != EDJE_EXTERNAL_DOUBLE_UNSET) && + (info->info.d.min > param->d)) + return EINA_FALSE; + + if ((info->info.d.max != EDJE_EXTERNAL_DOUBLE_UNSET) && + (info->info.d.max < param->d)) + return EINA_FALSE; + + return EINA_TRUE; + + case EDJE_EXTERNAL_PARAM_TYPE_STRING: + if (!param->s) return EINA_FALSE; + if (info->info.s.accept_fmt) + INF("string 'accept_fmt' validation not implemented."); + if (info->info.s.deny_fmt) + INF("string 'deny_fmt' validation not implemented."); + return EINA_TRUE; + + case EDJE_EXTERNAL_PARAM_TYPE_CHOICE: + { + const char **itr = info->info.c.choices; + if (!itr) return EINA_FALSE; + for (; *itr; itr++) + if (!strcmp(*itr, param->s)) + return EINA_TRUE; + return EINA_FALSE; + } + + default: return EINA_FALSE; + } +} + +static void +_edje_param_copy(Edje_Real_Part *src_part, const char *src_param, Edje_Real_Part *dst_part, const char *dst_param) +{ + Edje_External_Param val; + const Edje_External_Param_Info *dst_info; + void *free_ptr = NULL; + + if ((!src_part) || (!src_param) || (!dst_part) || (!dst_param)) + return; + + if (dst_part->part->type == EDJE_PART_TYPE_EXTERNAL) + dst_info = _edje_external_param_info_get + (dst_part->swallowed_object, dst_param); + else + dst_info = _edje_native_param_info_get(dst_part, dst_param); + + if (!dst_info) + { + ERR("cannot copy, invalid destination parameter '%s' of part '%s'", + dst_param, dst_part->part->name); + return; + } + + if (src_part->part->type == EDJE_PART_TYPE_EXTERNAL) + { + if (!_edje_param_external_get + (src_part, src_param, &val)) + { + ERR("cannot get parameter '%s' of part '%s'", + src_param, src_part->part->name); + return; + } + } + else + { + if (!_edje_param_native_get(src_part, src_param, &val, &free_ptr)) + { + ERR("cannot get parameter '%s' of part '%s'", + src_param, src_part->part->name); + return; + } + } + + if (!_edje_param_convert(&val, dst_info)) + { + ERR("cannot convert parameter type %s to requested type %s", + edje_external_param_type_str(val.type), + edje_external_param_type_str(dst_info->type)); + goto end; + } + + if (!_edje_param_validate(&val, dst_info)) + { + ERR("incorrect parameter value failed validation for type %s", + edje_external_param_type_str(dst_info->type)); + goto end; + } + + if (dst_part->part->type == EDJE_PART_TYPE_EXTERNAL) + { + val.name = dst_param; + if (!_edje_external_param_set(NULL, dst_part, &val)) + { + ERR("failed to set parameter '%s' (%s) of part '%s'", + dst_param, edje_external_param_type_str(dst_info->type), + dst_part->part->name); + goto end; + } + } + else + { + if (!_edje_param_native_set(dst_part, dst_param, &val)) + { + ERR("failed to set parameter '%s' (%s) of part '%s'", + dst_param, edje_external_param_type_str(dst_info->type), + dst_part->part->name); + goto end; + } + } + + end: + free(free_ptr); +} + +static void +_edje_param_set(Edje_Real_Part *part, const char *param, const char *value) +{ + Edje_External_Param val; + const Edje_External_Param_Info *info; + + if ((!part) || (!param) || (!value)) + return; + + if (part->part->type == EDJE_PART_TYPE_EXTERNAL) + info = _edje_external_param_info_get(part->swallowed_object, param); + else + info = _edje_native_param_info_get(part, param); + + if (!info) + { + ERR("cannot copy, invalid destination parameter '%s' of part '%s'", + param, part->part->name); + return; + } + + val.name = "(temp)"; + val.type = EDJE_EXTERNAL_PARAM_TYPE_STRING; + val.s = value; + + if (!_edje_param_convert(&val, info)) + { + ERR("cannot convert parameter type STRING to requested type %s", + edje_external_param_type_str(info->type)); + return; + } + + if (!_edje_param_validate(&val, info)) + { + ERR("incorrect parameter value failed validation for type %s", + edje_external_param_type_str(info->type)); + return; + } + + if (part->part->type == EDJE_PART_TYPE_EXTERNAL) + { + val.name = param; + if (!_edje_external_param_set(NULL, part, &val)) + { + ERR("failed to set parameter '%s' (%s) of part '%s'", + param, edje_external_param_type_str(info->type), + part->part->name); + return; + } + } + else + { + if (!_edje_param_native_set(part, param, &val)) + { + ERR("failed to set parameter '%s' (%s) of part '%s'", + param, edje_external_param_type_str(info->type), + part->part->name); + return; + } + } +} diff --git a/src/lib/edje_script_only.c b/src/lib/edje_script_only.c new file mode 100644 index 0000000..e7a7347 --- /dev/null +++ b/src/lib/edje_script_only.c @@ -0,0 +1,643 @@ +#include "edje_private.h" + +/* + * ALREADY EXPORTED BY EMBRYO: + * + * enum Float_Round_Method { + * ROUND, FLOOR, CEIL, TOZERO + * }; + * enum Float_Angle_Mode { + * RADIAN, DEGREES, GRADES + * }; + * + * numargs(); + * getarg(arg, index=0); + * setarg(arg, index=0, value); + * + * Float:atof(string[]); + * Float:fract(Float:value); + * round(Float:value, Float_Round_Method:method=ROUND); + * Float:sqrt(Float:value); + * Float:pow(Float:value, Float:exponent); + * Float:log(Float:value, Float:base=10.0); + * Float:sin(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:cos(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:tan(Float:value, Float_Angle_Mode:mode=RADIAN); + * Float:abs(Float:value); + * atoi(str[]); + * fnmatch(glob[], str[]); + * strcmp(str1[], str2[]); + * strncmp(str1[], str2[]); + * strcpy(dst[], src[]); + * strncpy(dst[], src[], n); + * strlen(str[]); + * strcat(dst[], src[]); + * strncat(dst[], src[], n); + * strprep(dst[], src[]); + * strnprep(dst[], src[], n); + * strcut(dst[], str[], n, n2); + * snprintf(dst[], dstn, fmt[], ...); + * strstr(str[], ndl[]); + * strchr(str[], ch[]); + * strrchr(str[], ch[]); + * rand(); + * Float:randf(); + * Float:seconds(); + * date(&year, &month, &day, &yearday, &weekday, &hr, &min, &Float:sec); + * + */ + +typedef struct _Sinfo Sinfo; + +struct _Sinfo +{ + struct + { + Embryo_Function + obj_init, obj_shutdown, obj_show, obj_show_immediate, + obj_hide, obj_hide_immediate, obj_move, obj_move_immediate, + obj_resize, obj_resize_immediate, obj_message; + } fn; + struct + { + Ecore_Job * show, *hide, *move, *resize; + } job; + struct + { + int id; + Eina_Hash *hash; // FIXME: hash -> bad. too big. one-way lookup etc. + } oid; +}; + +static void _call_fn(Edje * ed, const char *fname, Embryo_Function fn); + +/* frankly - these make the code shorter to type and read - just sanity for + * development */ +#define IFFN(func) if (si->fn.func != EMBRYO_FUNCTION_NONE) +#define IFNO(func) if (si->fn.func == EMBRYO_FUNCTION_NONE) +#define CLFN(func) IFFN(func) {_call_fn(ed, #func, si->fn.func);} +#define SI Sinfo *si; si = ed->script_only_data; if (!si) return +#define SI_RETURN(ret) Sinfo *si; si = ed->script_only_data; if (!si) return (ret) +#define PINT(val) embryo_parameter_cell_push(ed->collection->script, (Embryo_Cell)(val)) +#define PSTR(val) embryo_parameter_string_push(ed->collection->script, val) +#define GTFN(func) si->fn.func = embryo_program_function_find(ed->collection->script, #func) +#define DELJ(type) if (si->job.type) ecore_job_del(si->job.type); +#define ADDJ(type, func) si->job.type = ecore_job_add(func, ed); +#define ZERJ(type) si->job.type = NULL; +#define IFNJ(type) if (!si->job.type) +#define EXPF(func) embryo_program_native_call_add(ed->collection->script, #func, _exp_##func) + +typedef struct _Oid Oid; + +struct _Oid +{ + Edje *ed; + Evas_Object *obj; + Evas_Coord x, y, w, h; + int oid; +}; + +/* FIXME: using eina_hash and strings is just nasty! make a custom int hash */ +static int +_oid_alloc(Edje * ed) +{ + SI_RETURN(0); + + si->oid.id++; + return si->oid.id; +} + +static Oid * +_oid_track(Edje * ed, Evas_Object * o) +{ + Oid *oi; + + char buf[64]; + + SI_RETURN(NULL); + + oi = calloc(1, sizeof(Oid)); + if (!oi) + return NULL; + oi->oid = _oid_alloc(ed); + if (!oi->oid) + { + free(oi); + return NULL; + } + oi->ed = ed; + oi->obj = o; + evas_object_smart_member_add(oi->obj, oi->ed->obj); + evas_object_clip_set(oi->obj, oi->ed->base.clipper); + evas_object_geometry_get(oi->obj, &(oi->x), &(oi->y), &(oi->w), &(oi->h)); + snprintf(buf, sizeof(buf), "%i", oi->oid); + if (!si->oid.hash) + si->oid.hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(si->oid.hash, buf, oi); + return oi; +} + +static Oid * +_oid_find(Edje * ed, int oid) +{ + char buf[64]; + + SI_RETURN(NULL); + + snprintf(buf, sizeof(buf), "%i", oid); + return eina_hash_find(si->oid.hash, buf); +} + +static void +_oid_del(Edje * ed, int oid) +{ + char buf[64]; + + SI; + + snprintf(buf, sizeof(buf), "%i", oid); + eina_hash_del(si->oid.hash, buf, NULL); +} + +static void +_oid_free(Oid * oid) +{ + free(oid); +} + +static Eina_Bool +_oid_freeall_cb(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED__, void *data, void *fdata __UNUSED__) +{ + Oid *oid = data; + + evas_object_del(oid->obj); + free(oid); + return EINA_TRUE; +} + +static void +_oid_freeall(Edje * ed) +{ + SI; + if (!si->oid.hash) + return; + eina_hash_foreach(si->oid.hash, _oid_freeall_cb, ed); + eina_hash_free(si->oid.hash); + si->oid.hash = NULL; +} + +static Eina_Bool +_oid_moveall_cb(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED__, void *data, void *fdata __UNUSED__) +{ + Oid *oid = data; + + evas_object_move(oid->obj, oid->ed->x + oid->x, oid->ed->y + oid->y); + return EINA_TRUE; +} + +static void +_oid_moveall(Edje * ed) +{ + SI; + if (!si->oid.hash) + return; + eina_hash_foreach(si->oid.hash, _oid_moveall_cb, ed); +} + +/**********/ + +static Embryo_Cell +_exp_e_obj_del(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(1); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + evas_object_del(oid->obj); + _oid_del(ed, oid->oid); + _oid_free(oid); + return 0; +} + +static Embryo_Cell +_exp_e_obj_rect_add(Embryo_Program * ep, Embryo_Cell * params __UNUSED__) +{ + Edje *ed = embryo_program_data_get(ep); + + Evas_Object *o; + + Oid *oid; + + SI_RETURN(-1); + + o = evas_object_rectangle_add(evas_object_evas_get(ed->obj)); + if (!o) + return 0; + oid = _oid_track(ed, o); + if (oid) + return oid->oid; + return 0; +} + +static Embryo_Cell +_exp_e_obj_show(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(1); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + evas_object_show(oid->obj); + return 0; +} + +static Embryo_Cell +_exp_e_obj_hide(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(1); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + evas_object_hide(oid->obj); + return 0; +} + +static Embryo_Cell +_exp_e_obj_move(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(3); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + if ((oid->x == params[2]) && (oid->y == params[3])) + return -1; + oid->x = params[2]; + oid->y = params[3]; + evas_object_move(oid->obj, ed->x + oid->x, ed->y + oid->y); + return 0; +} + +static Embryo_Cell +_exp_e_obj_resize(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(3); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + if ((oid->w == params[2]) && (oid->h == params[3])) + return -1; + oid->w = params[2]; + oid->h = params[3]; + evas_object_resize(oid->obj, oid->w, oid->h); + return 0; +} + +static Embryo_Cell +_exp_e_obj_geometry_set(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + if ((oid->x == params[2]) && (oid->y == params[3]) && + (oid->w == params[4]) && (oid->h == params[5])) + return -1; + oid->x = params[2]; + oid->y = params[3]; + oid->w = params[4]; + oid->h = params[5]; + evas_object_move(oid->obj, ed->x + oid->x, ed->y + oid->y); + evas_object_resize(oid->obj, oid->w, oid->h); + return 0; +} + +static Embryo_Cell +_exp_e_obj_geometry_get(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + SETINT(oid->x, params[2]); + SETINT(oid->y, params[3]); + SETINT(oid->w, params[4]); + SETINT(oid->h, params[5]); + return 0; +} + +static Embryo_Cell +_exp_e_obj_color_set(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + SI_RETURN(-1); + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + evas_object_color_set(oid->obj, params[2], params[3], params[4], params[5]); + return 0; +} + +static Embryo_Cell +_exp_e_obj_color_get(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + Oid *oid; + + int r, g, b, a; + + SI_RETURN(-1); + + CHKPARAM(5); + if (!(oid = _oid_find(ed, params[1]))) + return -1; + evas_object_color_get(oid->obj, &r, &g, &b, &a); + SETINT(r, params[2]); + SETINT(g, params[3]); + SETINT(b, params[4]); + SETINT(a, params[5]); + return 0; +} + +static Embryo_Cell +_exp_e_signal_emit(Embryo_Program * ep, Embryo_Cell * params) +{ + Edje *ed = embryo_program_data_get(ep); + + char *sig = NULL, *src = NULL; + + SI_RETURN(-1); + + CHKPARAM(2); + GETSTR(sig, params[1]); + GETSTR(src, params[2]); + if ((!sig) || (!src)) + return -1; + _edje_emit(ed, sig, src); + return 0; +} + +/**********/ + +Eina_Bool +_edje_script_only(Edje * ed) +{ + if ((ed->collection) && (ed->collection->script) && + (ed->collection->script_only)) + return EINA_TRUE; + return EINA_FALSE; +} + +void +_edje_script_only_init(Edje * ed) +{ + Sinfo *si; + + si = calloc(1, sizeof(Sinfo)); + if (!si) + return; + ed->script_only_data = si; + + embryo_program_data_set(ed->collection->script, ed); + + EXPF(e_obj_del); + EXPF(e_obj_rect_add); + EXPF(e_obj_show); + EXPF(e_obj_hide); + EXPF(e_obj_move); + EXPF(e_obj_resize); + EXPF(e_obj_geometry_set); + EXPF(e_obj_geometry_get); + EXPF(e_obj_color_set); + EXPF(e_obj_color_get); + EXPF(e_signal_emit); + + embryo_program_vm_push(ed->collection->script); + embryo_program_max_cycle_run_set(ed->collection->script, 5000000); + + GTFN(obj_init); + GTFN(obj_shutdown); + GTFN(obj_show); + GTFN(obj_show_immediate); + GTFN(obj_hide); + GTFN(obj_hide_immediate); + GTFN(obj_move); + GTFN(obj_move_immediate); + GTFN(obj_resize); + GTFN(obj_resize_immediate); + GTFN(obj_message); + + CLFN(obj_init); + _edje_script_only_move(ed); +} + +void +_edje_script_only_shutdown(Edje * ed) +{ + SI; + + CLFN(obj_shutdown); + DELJ(show); + DELJ(hide); + DELJ(move); + DELJ(resize); + _oid_freeall(ed); +} + +static void +_show_job(void *data) +{ + Edje *ed = data; + + SI; + + ZERJ(show); + CLFN(obj_show); +} +void +_edje_script_only_show(Edje * ed) +{ + SI; + + IFFN(obj_show) + { + IFNJ(hide) + { + DELJ(show); + ADDJ(show, _show_job); + } + else + { + DELJ(hide); + } + } + IFNO(obj_show_immediate) return; + CLFN(obj_show_immediate); +} + +static void +_hide_job(void *data) +{ + Edje *ed = data; + + SI; + + ZERJ(hide); + CLFN(obj_hide); +} +void +_edje_script_only_hide(Edje * ed) +{ + SI; + + IFFN(obj_hide) + { + IFNJ(show) + { + DELJ(hide); + ADDJ(hide, _hide_job); + } + else + { + DELJ(show); + } + } + IFNO(obj_hide_immediate) return; + CLFN(obj_hide_immediate); +} + +static void +_move_job(void *data) +{ + Edje *ed = data; + + SI; + + _oid_moveall(ed); + ZERJ(move); + IFNO(obj_move) return; + PINT(ed->x); + PINT(ed->y); + CLFN(obj_move); +} +void +_edje_script_only_move(Edje * ed) +{ + SI; + + DELJ(move); + ADDJ(move, _move_job); + IFNO(obj_move_immediate) return; + PINT(ed->x); + PINT(ed->y); + CLFN(obj_move_immediate); +} + +static void +_resize_job(void *data) +{ + Edje *ed = data; + + SI; + + ZERJ(resize); + PINT(ed->w); + PINT(ed->h); + CLFN(obj_resize); +} +void +_edje_script_only_resize(Edje * ed) +{ + SI; + + IFFN(obj_resize) + { + DELJ(resize); + ADDJ(resize, _resize_job); + } + PINT(ed->w); + PINT(ed->h); + CLFN(obj_resize_immediate); +} + +void +_edje_script_only_message(Edje * ed, Edje_Message * em) +{ + SI; + + IFNO(obj_message) return; + _edje_message_parameters_push(em); + CLFN(obj_message); +} + +/**************************************************/ + +static void +_call_fn(Edje * ed, const char *fname, Embryo_Function fn) +{ + int ret; + + ret = embryo_program_run(ed->collection->script, fn); + if (ret == EMBRYO_PROGRAM_FAIL) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "ERROR: '%s'", + ed->collection->part, + ed->file->path, + fname, + embryo_error_string_get(embryo_program_error_get(ed->collection->script))); + } + else if (ret == EMBRYO_PROGRAM_TOOLONG) + { + ERR("ERROR with embryo script. " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ENTRY POINT: '%s', " + "ERROR: 'Script exceeded maximum allowed cycle count of %i'", + ed->collection->part, + ed->file->path, + fname, + embryo_program_max_cycle_run_get(ed->collection->script)); + } +} diff --git a/src/lib/edje_smart.c b/src/lib/edje_smart.c new file mode 100644 index 0000000..0a855cf --- /dev/null +++ b/src/lib/edje_smart.c @@ -0,0 +1,348 @@ +#include "edje_private.h" + +static void _edje_smart_add(Evas_Object * obj); +static void _edje_smart_del(Evas_Object * obj); +static void _edje_smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y); +static void _edje_smart_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h); +static void _edje_smart_show(Evas_Object * obj); +static void _edje_smart_hide(Evas_Object * obj); +static void _edje_smart_calculate(Evas_Object * obj); + +static Eina_Bool _edje_smart_file_set(Evas_Object *obj, const char *file, const char *group); + +static Edje_Smart_Api _edje_smart_class = EDJE_SMART_API_INIT_NAME_VERSION("edje"); +static Evas_Smart_Class _edje_smart_parent; +static Evas_Smart *_edje_smart = NULL; + +Eina_List *_edje_edjes = NULL; + +/************************** API Routines **************************/ + +EAPI Evas_Object * +edje_object_add(Evas *evas) +{ + Evas_Object *e; + + _edje_lib_ref(); + + if (!_edje_smart) + { + memset(&_edje_smart_parent, 0, sizeof(_edje_smart_parent)); + _edje_object_smart_set(&_edje_smart_class); + _edje_smart = + evas_smart_class_new((Evas_Smart_Class *)&_edje_smart_class); + } + + e = evas_object_smart_add(evas, _edje_smart); + + return e; +} + +void +_edje_object_smart_set(Edje_Smart_Api *sc) +{ + if (!sc) + return; + + evas_object_smart_clipped_smart_set(&sc->base); + + _edje_smart_parent.add = sc->base.add; /* Save parent class */ + sc->base.add = _edje_smart_add; + _edje_smart_parent.del = sc->base.del; /* Save parent class */ + sc->base.del = _edje_smart_del; + /* we'll handle move thank you */ + sc->base.move = _edje_smart_move; + sc->base.resize = _edje_smart_resize; + _edje_smart_parent.show = sc->base.show; /* Save parent class */ + sc->base.show = _edje_smart_show; + _edje_smart_parent.hide = sc->base.hide; /* Save parent class */ + sc->base.hide = _edje_smart_hide; + sc->base.calculate = _edje_smart_calculate; + //sc->base.member_add = NULL; + //sc->base.member_del = NULL; + sc->file_set = _edje_smart_file_set; +} + +const Edje_Smart_Api * +_edje_object_smart_class_get(void) +{ + static const Edje_Smart_Api *class = NULL; + + if (class) + return class; + + _edje_object_smart_set(&_edje_smart_class); + class = &_edje_smart_class; + + return class; +} + +static void +_edje_color_class_free(void *data) +{ + Edje_Color_Class *cc = data; + + if (cc->name) eina_stringshare_del(cc->name); + free(cc); +} + + +/* Private Routines */ +static void +_edje_smart_add(Evas_Object *obj) +{ + Edje *ed; + Evas *tev = evas_object_evas_get(obj); + + evas_event_freeze(tev); + ed = evas_object_smart_data_get(obj); + if (!ed) + { + const Evas_Smart *smart; + const Evas_Smart_Class *sc; + + ed = calloc(1, sizeof(Edje)); + if (!ed) goto end_smart_add; + + smart = evas_object_smart_smart_get(obj); + sc = evas_smart_class_get(smart); + ed->api = (const Edje_Smart_Api *)sc; + + evas_object_smart_data_set(obj, ed); + } + + ed->base.evas = evas_object_evas_get(obj); + ed->base.clipper = evas_object_rectangle_add(ed->base.evas); + evas_object_static_clip_set(ed->base.clipper, 1); + evas_object_smart_member_add(ed->base.clipper, obj); + evas_object_color_set(ed->base.clipper, 255, 255, 255, 255); + evas_object_move(ed->base.clipper, -10000, -10000); + evas_object_resize(ed->base.clipper, 20000, 20000); + evas_object_pass_events_set(ed->base.clipper, 1); + ed->is_rtl = EINA_FALSE; + ed->have_objects = 1; + ed->references = 1; + ed->user_defined = NULL; + ed->color_classes = eina_hash_string_small_new(_edje_color_class_free); + + evas_object_geometry_get(obj, &(ed->x), &(ed->y), &(ed->w), &(ed->h)); + ed->obj = obj; + _edje_edjes = eina_list_append(_edje_edjes, obj); + /* + { + Eina_List *l; + const void *data; + + printf("--- EDJE DUMP [%i]\n", eina_list_count(_edje_edjes)); + EINA_LIST_FOREACH(_edge_edges, l, data) + { + ed = _edje_fetch(data); + printf("EDJE: %80s | %80s\n", ed->path, ed->part); + } + printf("--- EDJE DUMP [%i]\n", eina_list_count(_edje_edjes)); + } + */ +end_smart_add: + evas_event_thaw(tev); + evas_event_thaw_eval(tev); +} + +static void +_edje_smart_del(Evas_Object * obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + _edje_block_violate(ed); + ed->delete_me = 1; + _edje_edjes = eina_list_remove(_edje_edjes, obj); + evas_object_smart_data_set(obj, NULL); + if (_edje_script_only(ed)) _edje_script_only_shutdown(ed); + if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed); + if (ed->persp) edje_object_perspective_set(obj, NULL); + _edje_file_del(ed); + _edje_clean_objects(ed); + _edje_unref(ed); + _edje_lib_unref(); +} + +static void +_edje_smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if ((ed->x == x) && (ed->y == y)) return; + ed->x = x; + ed->y = y; +// evas_object_move(ed->clipper, ed->x, ed->y); + + if (_edje_script_only(ed)) + { + _edje_script_only_move(ed); + return; + } + if (_edje_lua_script_only(ed)) + { + _edje_lua_script_only_move(ed); + return; + } + + if (ed->have_mapped_part) + { + ed->dirty = 1; + _edje_recalc_do(ed); + } + else + { + unsigned int i; + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *ep; + Evas_Coord ox, oy; + + ep = ed->table_parts[i]; + evas_object_geometry_get(ep->object, &ox, &oy, NULL, NULL); + evas_object_move(ep->object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); + if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_real_part_configure(ep); + if (ep->swallowed_object) + { + evas_object_geometry_get(ep->swallowed_object, &ox, &oy, NULL, NULL); + evas_object_move(ep->swallowed_object, ed->x + ep->x + ep->text.offset.x, ed->y + ep->y + ep->text.offset.y); + } + } + } +// _edje_emit(ed, "move", NULL); +} + +static void +_edje_limit_emit(Edje *ed, const char *limit_name, Eina_Bool over) +{ + char *buffer; + unsigned int length; + + if (!limit_name) return ; + + length = strlen(limit_name) + 13; + buffer = alloca(length); + snprintf(buffer, length, "limit,%s,%s", limit_name, over ? "over" : "below"); + _edje_emit(ed, buffer, NULL); +} + +static void +_edje_limit_get(Edje *ed, Edje_Limit **limits, unsigned int length, Evas_Coord size_current, Evas_Coord size_next) +{ + unsigned int i; + + if (size_next == size_current) return ; + + for (i = 0; i < length; ++i) + { + if ((size_current <= limits[i]->value) && (limits[i]->value < size_next)) + { + _edje_limit_emit(ed, limits[i]->name, EINA_TRUE); + } + else if ((size_next <= limits[i]->value) && (limits[i]->value < size_current)) + { + _edje_limit_emit(ed, limits[i]->name, EINA_FALSE); + } + } +} + +static void +_edje_smart_resize(Evas_Object * obj, Evas_Coord w, Evas_Coord h) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if ((w == ed->w) && (h == ed->h)) return; + if (ed->collection) + { + _edje_limit_get(ed, ed->collection->limits.horizontal, ed->collection->limits.horizontal_count, ed->w, w); + _edje_limit_get(ed, ed->collection->limits.vertical, ed->collection->limits.vertical_count, ed->h, h); + } + ed->w = w; + ed->h = h; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + if (_edje_script_only(ed)) + { + _edje_script_only_resize(ed); + return; + } + if (_edje_lua_script_only(ed)) + { + _edje_lua_script_only_resize(ed); + return; + } +// evas_object_resize(ed->clipper, ed->w, ed->h); + ed->dirty = 1; + _edje_recalc_do(ed); + _edje_emit(ed, "resize", NULL); +} + +static void +_edje_smart_show(Evas_Object * obj) +{ + Edje *ed; + + _edje_smart_parent.show(obj); + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if (evas_object_visible_get(obj)) return; + if (_edje_script_only(ed)) + { + _edje_script_only_show(ed); + return; + } + if (_edje_lua_script_only(ed)) + { + _edje_lua_script_only_show(ed); + return; + } + _edje_emit(ed, "show", NULL); +} + +static void +_edje_smart_hide(Evas_Object * obj) +{ + Edje *ed; + + _edje_smart_parent.hide(obj); + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if (!evas_object_visible_get(obj)) return; + if (_edje_script_only(ed)) + { + _edje_script_only_hide(ed); + return; + } + if (_edje_lua_script_only(ed)) + { + _edje_lua_script_only_hide(ed); + return; + } + _edje_emit(ed, "hide", NULL); +} + +static void +_edje_smart_calculate(Evas_Object *obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + _edje_recalc_do(ed); +} + +static Eina_Bool +_edje_smart_file_set(Evas_Object *obj, const char *file, const char *group) +{ + return _edje_object_file_set_internal(obj, file, group, NULL, NULL); +} diff --git a/src/lib/edje_text.c b/src/lib/edje_text.c new file mode 100644 index 0000000..8d81159 --- /dev/null +++ b/src/lib/edje_text.c @@ -0,0 +1,790 @@ +#include "edje_private.h" +#define _ELLIP_STR "\xE2\x80\xA6" + +/* returns with and height for this part. + * + * depending on the value of the use_alternate_font_metrics flag, it will + * either use evas_object_geometry_get() or the _advance_get() functions. + * + * The latter is useful if you want to make sure that width and height + * are the same value for the same number of characters in the text. + * This usually only makes sense for monospaced fonts. + * + * In future changes to this file, you probably should use this wrapper + * function everywhere instead of calling evas_object_geometry_get() + * directly. + */ +static inline void +part_get_geometry(Edje_Real_Part *rp, Evas_Coord *w, Evas_Coord *h) +{ + if (!rp->part->use_alternate_font_metrics) + evas_object_geometry_get(rp->object, NULL, NULL, w, h); + else + { + if (w) *w = evas_object_text_horiz_advance_get(rp->object); + if (h) *h = evas_object_text_vert_advance_get(rp->object); + } +} + +void +_edje_text_init(void) +{ +} + +void +_edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep) +{ + Edje_Part *pt = ep->part; + Edje_Part_Description_Text *desc; + unsigned int i; + + if (ep->part->type != EDJE_PART_TYPE_TEXT) return; + + /* if text class exists for this part, add the edje to the tc member list */ + desc = (Edje_Part_Description_Text *) pt->default_desc; + if ((pt->default_desc) && (desc->text.text_class)) + _edje_text_class_member_add(ed, desc->text.text_class); + + /* If any other classes exist add them */ + for (i = 0; i < pt->other.desc_count; ++i) + { + desc = (Edje_Part_Description_Text *) pt->other.desc[i]; + if ((desc) && (desc->text.text_class)) + _edje_text_class_member_add(ed, desc->text.text_class); + } +} + +void +_edje_text_part_on_del(Edje *ed, Edje_Part *pt) +{ + Edje_Part_Description_Text *desc; + unsigned int i; + + if (!pt) return; + if (pt->type != EDJE_PART_TYPE_TEXT + && pt->type != EDJE_PART_TYPE_TEXTBLOCK) + return ; + + desc = (Edje_Part_Description_Text *) pt->default_desc; + if ((pt->default_desc) && (desc->text.text_class)) + _edje_text_class_member_del(ed, desc->text.text_class); + + for (i = 0; i < pt->other.desc_count; ++i) + { + desc = (Edje_Part_Description_Text *) pt->other.desc[i]; + if (desc->text.text_class) + _edje_text_class_member_del(ed, desc->text.text_class); + } +} + +static void +_edje_text_fit_set(char *buf, const char *text, int c1, int c2) +{ + /* helper function called from _edje_text_fit_x(). + * note that we can use strcpy()/strcat() safely, the buffer lengths + * are checked in the caller. + */ + + if (c1 >= 0) + { + strcpy(buf, _ELLIP_STR); + + if (c2 >= 0) + { + strncat(buf, text + c1, c2 - c1); + strcat(buf, _ELLIP_STR); + } + else + strcat(buf, text + c1); + } + else + { + if (c2 >= 0) + { + strncpy(buf, text, c2); + buf[c2] = 0; + strcat(buf, _ELLIP_STR); + } + else + strcpy(buf, text); + } +} + +static const char * +_edje_text_fit_x(Edje *ed, Edje_Real_Part *ep, + Edje_Calc_Params *params, + const char *text, const char *font, int size, + Evas_Coord sw, int *free_text) +{ + Evas_Coord tw = 0, th = 0, p; + int l, r; + int i; + char *buf; + int uc1 = -1, uc2 = -1, c1 = -1, c2 = -1; + int loop = 0, extra; + size_t orig_len; + FLOAT_T sc; + + sc = ed->scale; + if (sc == ZERO) sc = _edje_scale; + + *free_text = 0; + if (sw <= 1) return ""; + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + evas_object_text_text_set(ep->object, text); + + part_get_geometry(ep, &tw, &th); + evas_object_text_style_pad_get(ep->object, &l, &r, NULL, NULL); + + p = ((sw - tw) * params->type.text.elipsis); + + /* chop chop */ + if (tw > sw) + { + if (params->type.text.elipsis != 0.0) + /* should be the last in text! not the rightmost */ + uc1 = evas_object_text_last_up_to_pos(ep->object, + -p + l, th / 2); + if (params->type.text.elipsis != 1.0) + { + /* should be the last in text! not the rightmost */ + if ((-p + sw -r) < 0) + uc2 = evas_object_text_last_up_to_pos(ep->object, 0, th / 2); + else + uc2 = evas_object_text_last_up_to_pos(ep->object, + -p + sw - r, th / 2); + } + if ((uc1 < 0) && (uc2 < 0)) + { + uc1 = 0; + uc2 = 0; + } + } + + if (!(((uc1 >= 0) || (uc2 >= 0)) && (tw > sw))) + return text; + + if ((uc1 == 0) && (uc2 == 0)) + return text; + + orig_len = strlen(text); + + /* don't overflow orig_len by adding extra + * FIXME: we might want to set a max string length somewhere... + */ + extra = 1 + 3 + 3; /* terminator, leading and trailing ellipsis */ + orig_len = MIN(orig_len, ((size_t) 8192 - extra)); + + if (!(buf = malloc(orig_len + extra))) + return text; + + /* Convert uc1, uc2 -> c1, c2 */ + i = 0; + if (uc1 >= 0) + { + c1 = 0; + for ( ; i < uc1 ; i++) + { + c1 = evas_string_char_next_get(text, c1, NULL); + } + } + if (uc2 >= 0) + { + if (c1 >= 0) + { + c2 = c1; + } + else + { + c2 = 0; + } + for ( ; i < uc2 ; i++) + { + c2 = evas_string_char_next_get(text, c2, NULL); + } + } + + buf[0] = '\0'; + + while (((c1 >= 0) || (c2 >= 0)) && (tw > sw)) + { + loop++; + if (sw <= 0.0) + { + buf[0] = 0; + break; + } + if ((c1 >= 0) && (c2 >= 0)) + { + if ((loop & 0x1)) + { + if (c1 >= 0) + c1 = evas_string_char_next_get(text, c1, NULL); + } + else + { + if (c2 >= 0) + { + c2 = evas_string_char_prev_get(text, c2, NULL); + if (c2 < 0) + { + buf[0] = 0; + break; + } + } + } + } + else + { + if (c1 >= 0) + c1 = evas_string_char_next_get(text, c1, NULL); + else if (c2 >= 0) + { + c2 = evas_string_char_prev_get(text, c2, NULL); + if (c2 < 0) + { + buf[0] = 0; + break; + } + } + } + if ((c1 >= 0) && (c2 >= 0)) + { + if (c1 >= c2) + { + buf[0] = 0; + break; + } + } + else if ((c1 > 0 && (size_t) c1 >= orig_len) || c2 == 0) + { + buf[0] = 0; + break; + } + + buf[0] = 0; + + _edje_text_fit_set(buf, text, c1, c2); + + evas_object_text_text_set(ep->object, buf); + part_get_geometry(ep, &tw, &th); + } + + *free_text = 1; + + return buf; +} + +static const char * +_edje_text_font_get(const char *base, const char *new, char **free_later) +{ + const char *base_style, *new_style, *aux; + size_t font_len, style_len; + + if (base && (!new)) + return base; + else if (!base) + return new; + + base_style = strstr(base, ":style="); + if (!base_style) + return new; + + new_style = strstr(new, ":style="); + if (new_style) + return new; + + font_len = strlen(new); + aux = strchr(base_style, ','); + style_len = (aux) ? (size_t)(aux - base_style) : strlen(base_style); + + *free_later = malloc(font_len + style_len + 1); + memcpy(*free_later, new, font_len); + memcpy(*free_later + font_len, base_style, style_len); + (*free_later)[font_len + style_len] = '\0'; + + return *free_later; +} + +const char * +_edje_text_class_font_get(Edje *ed, Edje_Part_Description_Text *chosen_desc, int *size, char **free_later) +{ + Edje_Text_Class *tc; + const char *text_class_name, *font; + + font = edje_string_get(&chosen_desc->text.font); + *size = chosen_desc->text.size; + + text_class_name = chosen_desc->text.text_class; + if ((!text_class_name) || (!text_class_name[0])) + return font; + + tc = _edje_text_class_find(ed, text_class_name); + if (!tc) + return font; + + font = _edje_text_font_get(edje_string_get(&chosen_desc->text.font), tc->font, free_later); + *size = _edje_text_size_calc(*size, tc); + + return font; +} + +void +_edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, + Edje_Calc_Params *params, + Edje_Part_Description_Text *chosen_desc) +{ + const char *text = NULL; + const char *font; + char *font2 = NULL; + char *sfont = NULL; + int size; + Evas_Coord tw, th; + Evas_Coord sw, sh; + int inlined_font = 0, free_text = 0; + Eina_Bool same_text = EINA_FALSE; + FLOAT_T sc; + + sc = ed->scale; + if (sc == 0.0) sc = _edje_scale; + text = edje_string_get(&chosen_desc->text.text); + font = _edje_text_class_font_get(ed, chosen_desc, &size, &sfont); + + if (ep->text.text) text = ep->text.text; + if (ep->text.font) font = ep->text.font; + if (ep->text.size > 0) size = ep->text.size; + + if (ep->text.text_source) + { + text = edje_string_get(&(((Edje_Part_Description_Text *)ep->text.text_source->chosen_description)->text.text)); + if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; + } + if (ep->text.source) + { + font = edje_string_get(&(((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.font)); + size = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.size; + if (ep->text.source->text.font) font = ep->text.source->text.font; + if (ep->text.source->text.size > 0) size = ep->text.source->text.size; + } + + if (!text) text = ""; + if (!font) font = ""; + + /* check if the font is embedded in the .eet */ + if (ed->file->fonts) + { + Edje_Font_Directory_Entry *fnt = eina_hash_find(ed->file->fonts, font); + + if (fnt) + { + size_t len = strlen(font) + sizeof("edje/fonts/") + 1; + font2 = alloca(len); + sprintf(font2, "edje/fonts/%s", font); + font = font2; + inlined_font = 1; + font2 = NULL; + } + } + + if ((_edje_fontset_append) && (font)) + { + font2 = malloc(strlen(font) + 1 + strlen(_edje_fontset_append) + 1); + if (font2) + { + strcpy(font2, font); + strcat(font2, ","); + strcat(font2, _edje_fontset_append); + font = font2; + } + } + { + int l, r, t, b; + + evas_object_text_style_pad_get(ep->object, &l, &r, &t, &b); + sw = params->w; + sh = params->h; + } + + size = params->type.text.size; + if (!text) text = ""; + + if ((text == ep->text.cache.in_str) + || (text && ep->text.cache.in_str && !strcmp(ep->text.cache.in_str, text))) + { + text = ep->text.cache.in_str; + same_text = EINA_TRUE; + } + + if ((ep->text.cache.in_size == size) && + (ep->text.cache.in_w == sw) && + (ep->text.cache.in_h == sh) && + (ep->text.cache.in_str) && + same_text && + (ep->text.cache.align_x == params->type.text.align.x) && + (ep->text.cache.align_y == params->type.text.align.y) && + (ep->text.cache.elipsis == params->type.text.elipsis) && + (ep->text.cache.fit_x == chosen_desc->text.fit_x) && + (ep->text.cache.fit_y == chosen_desc->text.fit_y)) + { + text = ep->text.cache.out_str; + size = ep->text.cache.out_size; + + goto arrange_text; + } + if (!same_text) + { + eina_stringshare_replace(&ep->text.cache.in_str, text); + } + ep->text.cache.in_size = size; + if (chosen_desc->text.fit_x && (ep->text.cache.in_str && eina_stringshare_strlen(ep->text.cache.in_str) > 0)) + { + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + evas_object_text_text_set(ep->object, text); + part_get_geometry(ep, &tw, &th); + /* Find the wanted font size */ + if ((tw != sw) && (size > 0) && (tw != 0)) + { + size = (size * sw) / tw; + + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + part_get_geometry(ep, &tw, &th); + } + + /* FIXME: This should possibly be replaced by more proper handling, + * but it's still way better than what was here before. */ + if (tw > sw) size--; + } + if (chosen_desc->text.fit_y && (ep->text.cache.in_str && eina_stringshare_strlen(ep->text.cache.in_str) > 0)) + { + /* if we fit in the x axis, too, size already has a somewhat + * meaningful value, so don't overwrite it with the starting + * value in that case + */ + if (!chosen_desc->text.fit_x) size = sh; + + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + evas_object_text_text_set(ep->object, text); + part_get_geometry(ep, &tw, &th); + + /* only grow the font size if we didn't already reach the max size + * for the x axis + */ + if (!chosen_desc->text.fit_x && th < sh) + { + int dif; + + dif = (th - sh) / 4; + if (dif < 1) dif = 1; + while ((th < sh) && (sw > 0)) + { + size += dif; + if (size <= 0) break; + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + part_get_geometry(ep, &tw, &th); + if ((size > 0) && (th == 0)) break; + } + size -= dif; + } + else if (th > sh) + { + int current; + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, 10); + part_get_geometry(ep, &tw, &th); + + if (th == sh) + current = 10; + else + { + int bottom, top; + + if (th < sh) bottom = 10; + else if (th > sh) bottom = 1; + else bottom = 0; /* XXX shut up GCC, th == sh is handled before! */ + + top = size; + /* search one that fits (binary search) */ + do + { + current = (top + bottom) / 2; + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, current); + part_get_geometry(ep, &tw, &th); + + if (th < sh) bottom = current + 1; + else if (th > sh) top = current - 1; + } while ((bottom < top) && (th != sh)); + } + + /* search the larger one that fits (linear search) */ + do + { + current++; + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, current); + part_get_geometry(ep, &tw, &th); + } while (th <= sh); + size = current - 1; + } + } + + /* Make sure the size is in range */ + if (size < 1) + size = 1; + else if ((size > chosen_desc->text.size_range_max) && + (chosen_desc->text.size_range_max > 0)) + size = chosen_desc->text.size_range_max; + else if (size < chosen_desc->text.size_range_min) + size = chosen_desc->text.size_range_min; + + /* Handle ellipsis */ + if (!chosen_desc->text.min_x) + { + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + text = _edje_text_fit_x(ed, ep, params, text, font, size, sw, &free_text); + } + + eina_stringshare_replace(&ep->text.cache.out_str, text); + ep->text.cache.in_w = sw; + ep->text.cache.in_h = sh; + ep->text.cache.out_size = size; + ep->text.cache.align_x = params->type.text.align.x; + ep->text.cache.align_y = params->type.text.align.y; + ep->text.cache.elipsis = params->type.text.elipsis; + ep->text.cache.fit_x = chosen_desc->text.fit_x; + ep->text.cache.fit_y = chosen_desc->text.fit_y; + arrange_text: + + if (inlined_font) evas_object_text_font_source_set(ep->object, ed->path); + else evas_object_text_font_source_set(ep->object, NULL); + + if (ep->part->scale) evas_object_scale_set(ep->object, TO_DOUBLE(sc)); + evas_object_text_font_set(ep->object, font, size); + evas_object_text_text_set(ep->object, text); + part_get_geometry(ep, &tw, &th); + /* Handle alignment */ + { + FLOAT_T align_x; + if (params->type.text.align.x < FROM_INT(0)) + { + if (evas_object_text_direction_get(ep->object) == + EVAS_BIDI_DIRECTION_RTL) + { + align_x = FROM_INT(1); + } + else + { + align_x = FROM_INT(0); + } + } + else + { + align_x = params->type.text.align.x; + } + ep->text.offset.x = TO_INT(SCALE(align_x, (sw - tw))); + ep->text.offset.y = TO_INT(SCALE(params->type.text.align.y, (sh - th))); + } + + evas_object_move(ep->object, + ed->x + params->x + ep->text.offset.x, + ed->y + params->y + ep->text.offset.y); + + if (params->visible) evas_object_show(ep->object); + else evas_object_hide(ep->object); + { + Evas_Text_Style_Type style; + Edje_Text_Effect effect; + + style = EVAS_TEXT_STYLE_PLAIN; + + evas_object_color_set(ep->object, + (params->color.r * params->color.a) / 255, + (params->color.g * params->color.a) / 255, + (params->color.b * params->color.a) / 255, + params->color.a); + effect = ep->part->effect; + switch (effect & EDJE_TEXT_EFFECT_MASK_BASIC) + { + case EDJE_TEXT_EFFECT_NONE: + case EDJE_TEXT_EFFECT_PLAIN: + style = EVAS_TEXT_STYLE_PLAIN; + break; + case EDJE_TEXT_EFFECT_OUTLINE: + style = EVAS_TEXT_STYLE_OUTLINE; + evas_object_text_outline_color_set(ep->object, + (params->type.text.color2.r * params->type.text.color2.a) / 255, + (params->type.text.color2.g * params->type.text.color2.a) / 255, + (params->type.text.color2.b * params->type.text.color2.a) / 255, + params->type.text.color2.a); + break; + case EDJE_TEXT_EFFECT_SOFT_OUTLINE: + style = EVAS_TEXT_STYLE_SOFT_OUTLINE; + evas_object_text_outline_color_set(ep->object, + (params->type.text.color2.r * params->type.text.color2.a) / 255, + (params->type.text.color2.g * params->type.text.color2.a) / 255, + (params->type.text.color2.b * params->type.text.color2.a) / 255, + params->type.text.color2.a); + break; + case EDJE_TEXT_EFFECT_SHADOW: + style = EVAS_TEXT_STYLE_SHADOW; + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_SOFT_SHADOW: + style = EVAS_TEXT_STYLE_SOFT_SHADOW; + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_OUTLINE_SHADOW: + style = EVAS_TEXT_STYLE_OUTLINE_SHADOW; + evas_object_text_outline_color_set(ep->object, + (params->type.text.color2.r * params->type.text.color2.a) / 255, + (params->type.text.color2.g * params->type.text.color2.a) / 255, + (params->type.text.color2.b * params->type.text.color2.a) / 255, + params->type.text.color2.a); + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW: + style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW; + evas_object_text_outline_color_set(ep->object, + (params->type.text.color2.r * params->type.text.color2.a) / 255, + (params->type.text.color2.g * params->type.text.color2.a) / 255, + (params->type.text.color2.b * params->type.text.color2.a) / 255, + params->type.text.color2.a); + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_FAR_SHADOW: + style = EVAS_TEXT_STYLE_FAR_SHADOW; + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW: + style = EVAS_TEXT_STYLE_FAR_SOFT_SHADOW; + evas_object_text_shadow_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + case EDJE_TEXT_EFFECT_GLOW: + style = EVAS_TEXT_STYLE_GLOW; + evas_object_text_glow_color_set(ep->object, + (params->type.text.color2.r * params->type.text.color2.a) / 255, + (params->type.text.color2.g * params->type.text.color2.a) / 255, + (params->type.text.color2.b * params->type.text.color2.a) / 255, + params->type.text.color2.a); + evas_object_text_glow2_color_set(ep->object, + (params->type.text.color3.r * params->type.text.color3.a) / 255, + (params->type.text.color3.g * params->type.text.color3.a) / 255, + (params->type.text.color3.b * params->type.text.color3.a) / 255, + params->type.text.color3.a); + break; + default: + style = EVAS_TEXT_STYLE_PLAIN; + break; + } + + switch (effect & EDJE_TEXT_EFFECT_MASK_SHADOW_DIRECTION) + { + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_RIGHT); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_BOTTOM_LEFT); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_LEFT); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_LEFT); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_TOP_RIGHT); + break; + case EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT: + EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET + (style, EVAS_TEXT_STYLE_SHADOW_DIRECTION_RIGHT); + break; + default: + break; + } + evas_object_text_style_set(ep->object, style); + } + + if (free_text) free((char *)text); + if (font2) free(font2); + if (sfont) free(sfont); +} + +Evas_Font_Size +_edje_text_size_calc(Evas_Font_Size size, Edje_Text_Class *tc) +{ + int val; + + if (tc->size == 0) + { + val = size; + } + else if (tc->size > 0.0) + { + val = tc->size; + } + else + { + val = (size * -tc->size) / 100; + } + return val; +} diff --git a/src/lib/edje_textblock_styles.c b/src/lib/edje_textblock_styles.c new file mode 100644 index 0000000..bf7f330 --- /dev/null +++ b/src/lib/edje_textblock_styles.c @@ -0,0 +1,425 @@ +#include "edje_private.h" + +static int +_edje_font_is_embedded(Edje_File *edf, char *font) +{ + if (!eina_hash_find(edf->fonts, font)) return 0; + return 1; +} + +static void +_edje_format_param_parse(char *item, char **key, char **val) +{ + char *p, *k, *v; + + p = strchr(item, '='); + k = malloc(p - item + 1); + strncpy(k, item, p - item); + k[p - item] = 0; + *key = k; + p++; + v = strdup(p); + *val = v; +} + +static char * +_edje_format_parse(const char **s) +{ + char *item, *ds; + const char *p, *ss; + const char *s1 = NULL; + const char *s2 = NULL; + + p = *s; + if ((!p) || (*p == 0)) return NULL; + for (;;) + { + if (!s1) + { + if (*p != ' ') s1 = p; + if (*p == 0) break; + } + else if (!s2) + { + if ((p > *s) && (p[-1] != '\\')) + { + if (*p == ' ') s2 = p; + } + if (*p == 0) s2 = p; + } + p++; + if (s1 && s2) + { + item = malloc(s2 - s1 + 1); + if (item) + { + for (ds = item, ss = s1; ss < s2; ss++, ds++) + { + if ((*ss == '\\') && (ss < (s2 - 1))) ss++; + *ds = *ss; + } + *ds = 0; + } + *s = s2; + return item; + } + } + *s = p; + return NULL; +} + +static int +_edje_format_is_param(char *item) +{ + if (strchr(item, '=')) return 1; + return 0; +} + +static char * +_edje_format_reparse(Edje_File *edf, const char *str, Edje_Style_Tag **tag_ret) +{ + Eina_Strbuf *txt, *tmp = NULL; + char *s2, *item, *ret; + const char *s; + + txt = eina_strbuf_new(); + s = str; + while ((item = _edje_format_parse(&s))) + { + if (_edje_format_is_param(item)) + { + char *key = NULL, *val = NULL; + + _edje_format_param_parse(item, &key, &val); + if (!strcmp(key, "font_source")) + { + /* dont allow font sources */ + } + else if (!strcmp(key, "text_class")) + { + if (tag_ret) + (*tag_ret)->text_class = eina_stringshare_add(val); + } + else if (!strcmp(key, "font_size")) + { + if (tag_ret) + (*tag_ret)->font_size = atof(val); + } + else if (!strcmp(key, "font")) /* Fix fonts */ + { + if (tag_ret) + { + if (_edje_font_is_embedded(edf, val)) + { + if (!tmp) + tmp = eina_strbuf_new(); + eina_strbuf_append(tmp, "edje/fonts/"); + eina_strbuf_append(tmp, val); + (*tag_ret)->font = eina_stringshare_add(eina_strbuf_string_get(tmp)); + eina_strbuf_reset(tmp); + } + else + { + (*tag_ret)->font = eina_stringshare_add(val); + } + } + } + else /* Otherwise add to tag buffer */ + { + s2 = eina_str_escape(item); + if (s2) + { + if (eina_strbuf_length_get(txt)) eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, s2); + free(s2); + } + } + free(key); + free(val); + } + else + { + if (eina_strbuf_length_get(txt)) eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, item); + } + free(item); + } + if (tmp) + eina_strbuf_free(tmp); + ret = eina_strbuf_string_steal(txt); + eina_strbuf_free(txt); + return ret; +} + +/* Update all evas_styles which are in an edje + * + * @param ed The edje containing styles which need to be updated + */ +void +_edje_textblock_style_all_update(Edje *ed) +{ + Eina_List *l, *ll; + Edje_Style *stl; + Eina_Strbuf *txt = NULL; + + if (!ed->file) return; + + EINA_LIST_FOREACH(ed->file->styles, l, stl) + { + Edje_Style_Tag *tag; + Edje_Text_Class *tc; + int found = 0; + char *fontset = NULL, *fontsource = NULL; + + /* Make sure the style is already defined */ + if (!stl->style) break; + + /* Make sure the style contains a text_class */ + EINA_LIST_FOREACH(stl->tags, ll, tag) + { + if (tag->text_class) + { + found = 1; + break; + } + } + + /* No text classes , goto next style */ + if (!found) continue; + found = 0; + if (!txt) + txt = eina_strbuf_new(); + + if (_edje_fontset_append) + fontset = eina_str_escape(_edje_fontset_append); + fontsource = eina_str_escape(ed->file->path); + + /* Build the style from each tag */ + EINA_LIST_FOREACH(stl->tags, ll, tag) + { + if (!tag->key) continue; + + /* Add Tag Key */ + eina_strbuf_append(txt, tag->key); + eina_strbuf_append(txt, "='"); + + /* Configure fonts from text class if it exists */ + tc = _edje_text_class_find(ed, tag->text_class); + + /* Add and Ha`ndle tag parsed data */ + eina_strbuf_append(txt, tag->value); + + if (!strcmp(tag->key, "DEFAULT")) + { + if (fontset) + { + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_fallbacks="); + eina_strbuf_append(txt, fontset); + } + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_source="); + eina_strbuf_append(txt, fontsource); + } + if (tag->font_size != 0) + { + char font_size[32]; + + if (tc && tc->size) + snprintf(font_size, sizeof(font_size), "%f", (double) _edje_text_size_calc(tag->font_size, tc)); + else + snprintf(font_size, sizeof(font_size), "%f", tag->font_size); + + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_size="); + eina_strbuf_append(txt, font_size); + } + /* Add font name last to save evas from multiple loads */ + if (tag->font) + { + const char *f; + + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font="); + + f = (tc && tc->font) ? tc->font : tag->font; + eina_strbuf_append_escaped(txt, f); + } + + eina_strbuf_append(txt, "'"); + } + if (fontset) free(fontset); + if (fontsource) free(fontsource); + + /* Configure the style */ + evas_textblock_style_set(stl->style, eina_strbuf_string_get(txt)); + eina_strbuf_reset(txt); + } + if (txt) + eina_strbuf_free(txt); +} + +void +_edje_textblock_styles_add(Edje *ed) +{ + Eina_List *l, *ll; + Edje_Style *stl; + + if (!ed->file) return; + + EINA_LIST_FOREACH(ed->file->styles, l, stl) + { + Edje_Style_Tag *tag; + + /* Make sure the style contains the text_class */ + EINA_LIST_FOREACH(stl->tags, ll, tag) + { + if (!tag->text_class) continue; + _edje_text_class_member_add(ed, tag->text_class); + } + } +} + +void +_edje_textblock_styles_del(Edje *ed) +{ + Eina_List *l, *ll; + Edje_Style *stl; + + if (!ed->file) return; + + EINA_LIST_FOREACH(ed->file->styles, l, stl) + { + Edje_Style_Tag *tag; + + /* Make sure the style contains the text_class */ + EINA_LIST_FOREACH(stl->tags, ll, tag) + { + if (!tag->text_class) continue; + _edje_text_class_member_del(ed, tag->text_class); + } + } +} + +/* When we get to here the edje file had been read into memory + * the name of the style is established as well as the name and + * data for the tags. This function will create the Evas_Style + * object for each style. The style is composed of a base style + * followed by a list of tags. + */ +void +_edje_textblock_style_parse_and_fix(Edje_File *edf) +{ + Eina_Strbuf *txt = NULL; + Eina_List *l, *ll; + Edje_Style *stl; + + EINA_LIST_FOREACH(edf->styles, l, stl) + { + Edje_Style_Tag *tag; + char *fontset = NULL, *fontsource = NULL, *ts; + + if (stl->style) break; + + if (!txt) + txt = eina_strbuf_new(); + + stl->style = evas_textblock_style_new(); + evas_textblock_style_set(stl->style, NULL); + + if (_edje_fontset_append) + fontset = eina_str_escape(_edje_fontset_append); + fontsource = eina_str_escape(edf->path); + + /* Build the style from each tag */ + EINA_LIST_FOREACH(stl->tags, ll, tag) + { + if (!tag->key) continue; + + /* Add Tag Key */ + eina_strbuf_append(txt, tag->key); + eina_strbuf_append(txt, "='"); + + ts = _edje_format_reparse(edf, tag->value, &(tag)); + + /* Add and Handle tag parsed data */ + if (ts) + { + if (eet_dictionary_string_check(eet_dictionary_get(edf->ef), tag->value) == 0) + eina_stringshare_del(tag->value); + tag->value = eina_stringshare_add(ts); + eina_strbuf_append(txt, tag->value); + free(ts); + } + + if (!strcmp(tag->key, "DEFAULT")) + { + if (fontset) + { + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_fallbacks="); + eina_strbuf_append(txt, fontset); + } + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_source="); + eina_strbuf_append(txt, fontsource); + } + if (tag->font_size > 0) + { + char font_size[32]; + + snprintf(font_size, sizeof(font_size), "%f", tag->font_size); + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font_size="); + eina_strbuf_append(txt, font_size); + } + /* Add font name last to save evas from multiple loads */ + if (tag->font) + { + eina_strbuf_append(txt, " "); + eina_strbuf_append(txt, "font="); + eina_strbuf_append_escaped(txt, tag->font); + } + eina_strbuf_append(txt, "'"); + } + if (fontset) free(fontset); + if (fontsource) free(fontsource); + + /* Configure the style */ + evas_textblock_style_set(stl->style, eina_strbuf_string_get(txt)); + eina_strbuf_reset(txt); + } + if (txt) + eina_strbuf_free(txt); +} + +void +_edje_textblock_style_cleanup(Edje_File *edf) +{ + while (edf->styles) + { + Edje_Style *stl; + + stl = edf->styles->data; + edf->styles = eina_list_remove_list(edf->styles, edf->styles); + while (stl->tags) + { + Edje_Style_Tag *tag; + + tag = stl->tags->data; + stl->tags = eina_list_remove_list(stl->tags, stl->tags); + if (edf->free_strings) + { + if (tag->key) eina_stringshare_del(tag->key); +/* FIXME: Find a proper way to handle it. */ + if (tag->value) eina_stringshare_del(tag->value); + if (tag->text_class) eina_stringshare_del(tag->text_class); + if (tag->font) eina_stringshare_del(tag->font); + } + free(tag); + } + if (edf->free_strings && stl->name) eina_stringshare_del(stl->name); + if (stl->style) evas_textblock_style_free(stl->style); + free(stl); + } +} diff --git a/src/lib/edje_util.c b/src/lib/edje_util.c new file mode 100644 index 0000000..33aa584 --- /dev/null +++ b/src/lib/edje_util.c @@ -0,0 +1,5269 @@ +#include "edje_private.h" + +typedef struct _Edje_Box_Layout Edje_Box_Layout; +struct _Edje_Box_Layout +{ + EINA_RBTREE; + Evas_Object_Box_Layout func; + void *(*layout_data_get)(void *); + void (*layout_data_free)(void *); + void *data; + void (*free_data)(void *); + char name[]; +}; + +static Eina_Hash *_edje_color_class_hash = NULL; +static Eina_Hash *_edje_color_class_member_hash = NULL; + +static Eina_Hash *_edje_text_class_hash = NULL; +static Eina_Hash *_edje_text_class_member_hash = NULL; + +static Eina_Rbtree *_edje_box_layout_registry = NULL; + +char *_edje_fontset_append = NULL; +FLOAT_T _edje_scale = ZERO; +Eina_Bool _edje_password_show_last = EINA_FALSE; +FLOAT_T _edje_password_show_last_timeout = ZERO; +int _edje_freeze_val = 0; +int _edje_freeze_calc_count = 0; +Eina_List *_edje_freeze_calc_list = NULL; + +typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; +struct _Edje_List_Foreach_Data +{ + Eina_List *list; +}; + +typedef struct _Edje_List_Refcount Edje_List_Refcount; +struct _Edje_List_Refcount +{ + EINA_REFCOUNT; + + Eina_List *lookup; +}; + +static Eina_Bool _edje_color_class_list_foreach(const Eina_Hash *hash, const void *key, void *data, void *fdata); +static Eina_Bool _edje_text_class_list_foreach(const Eina_Hash *hash, const void *key, void *data, void *fdata); +static void _edje_object_image_preload_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +static void _edje_object_signal_preload_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _edje_user_def_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__); +static void _edje_table_child_remove(Edje_Real_Part *rp, Evas_Object *child); +static void _edje_box_child_remove(Edje_Real_Part *rp, Evas_Object *child); + +Edje_Real_Part *_edje_real_part_recursive_get_helper(const Edje *ed, char **path); + +static Edje_User_Defined * +_edje_user_definition_new(Edje_User_Defined_Type type, const char *part, Edje *ed) +{ + Edje_User_Defined *eud; + + eud = malloc(sizeof (Edje_User_Defined)); + if (!eud) return NULL; + + eud->type = type; + eud->part = eina_stringshare_add(part); + eud->ed = ed; + ed->user_defined = eina_list_append(ed->user_defined, eud); + + return eud; +} + +void +_edje_user_definition_remove(Edje_User_Defined *eud, Evas_Object *child) +{ + eud->ed->user_defined = eina_list_remove(eud->ed->user_defined, eud); + + if (child) evas_object_event_callback_del_full(child, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + eina_stringshare_del(eud->part); + free(eud); +} + +void +_edje_user_definition_free(Edje_User_Defined *eud) +{ + Evas_Object *child = NULL; + Edje_Real_Part *rp; + + eud->ed->user_defined = eina_list_remove(eud->ed->user_defined, eud); + + switch (eud->type) + { + case EDJE_USER_SWALLOW: + child = eud->u.swallow.child; + rp = _edje_real_part_recursive_get(eud->ed, eud->part); + if (rp) + { + _edje_real_part_swallow_clear(rp); + rp->swallowed_object = NULL; + rp->swallow_params.min.w = 0; + rp->swallow_params.min.h = 0; + rp->swallow_params.max.w = 0; + rp->swallow_params.max.h = 0; + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc_do(rp->edje); + } + break; + case EDJE_USER_BOX_PACK: + child = eud->u.box.child; + rp = _edje_real_part_recursive_get(eud->ed, eud->part); + _edje_box_child_remove(rp, child); + break; + case EDJE_USER_TABLE_PACK: + child = eud->u.table.child; + rp = _edje_real_part_recursive_get(eud->ed, eud->part); + _edje_table_child_remove(rp, child); + break; + case EDJE_USER_STRING: + case EDJE_USER_DRAG_STEP: + case EDJE_USER_DRAG_PAGE: + case EDJE_USER_DRAG_VALUE: + case EDJE_USER_DRAG_SIZE: + break; + } + + _edje_user_definition_remove(eud, child); +} + +static void +_edje_user_def_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__) +{ + Edje_User_Defined *eud = data; + + _edje_user_definition_free(eud); +} + +static void +_edje_class_member_direct_del(const char *class, Edje_List_Refcount *lookup, Eina_Hash *hash) +{ + Eina_List *members; + + members = eina_hash_find(hash, class); + members = eina_list_remove_list(members, lookup->lookup); + eina_hash_set(hash, class, members); + free(lookup); +} + +static void +_edje_class_member_add(Edje *ed, Eina_Hash **ehash, Eina_Hash **ghash, const char *class) +{ + Edje_List_Refcount *lookup; + Eina_List *members; + + if ((!ed) || (!ehash) || (!ghash) || (!class)) return; + + lookup = eina_hash_find(*ehash, class); + if (lookup) + { + EINA_REFCOUNT_REF(lookup); + return; + } + + lookup = malloc(sizeof (Edje_List_Refcount)); + if (!lookup) return ; + EINA_REFCOUNT_INIT(lookup); + + /* Get members list */ + members = eina_hash_find(*ghash, class); + + /* Update the member list */ + lookup->lookup = members = eina_list_prepend(members, ed); + + /* Don't loose track of members list */ + if (!*ehash) + *ehash = eina_hash_string_small_new(NULL); + eina_hash_add(*ehash, class, lookup); + + /* Reset the member list to the right pointer */ + if (!*ghash) + *ghash = eina_hash_string_superfast_new(NULL); + eina_hash_set(*ghash, class, members); +} + +static void +_edje_class_member_del(Eina_Hash **ehash, Eina_Hash **ghash, const char *class) +{ + Edje_List_Refcount *lookup; + Eina_List *members; + + if ((!ehash) || (!ghash) || (!class)) return; + members = eina_hash_find(*ghash, class); + if (!members) return; + + lookup = eina_hash_find(*ehash, class); + if (!lookup) return ; + + EINA_REFCOUNT_UNREF(lookup) + { + members = eina_list_remove_list(members, lookup->lookup); + eina_hash_set(*ghash, class, members); + + eina_hash_del(*ehash, class, lookup); + free(lookup); + } +} + +static Eina_Bool +member_list_free(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED__, void *data, void *fdata __UNUSED__) +{ + eina_list_free(data); + return EINA_TRUE; +} + +static void +_edje_class_members_free(Eina_Hash **ghash) +{ + if (!ghash || !*ghash) return; + eina_hash_foreach(*ghash, member_list_free, NULL); + eina_hash_free(*ghash); + *ghash = NULL; +} + +/************************** API Routines **************************/ + +#define FASTFREEZE 1 + +EAPI void +edje_freeze(void) +{ +#ifdef FASTFREEZE + _edje_freeze_val++; +#else +// FIXME: could just have a global freeze instead of per object +// above i tried.. but this broke some things. notable e17's menus. why? + Eina_List *l; + Evas_Object *data; + + EINA_LIST_FOREACH(_edje_edjes, l, data) + edje_object_freeze(data); +#endif +} + +#ifdef FASTFREEZE +static void +_edje_thaw_edje(Edje *ed) +{ + unsigned int i; + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + { + Edje *ed2; + + ed2 = _edje_fetch(rp->swallowed_object); + if (ed2) _edje_thaw_edje(ed2); + } + } + if ((ed->recalc) && (ed->freeze <= 0)) _edje_recalc_do(ed); +} +#endif + +EAPI void +edje_thaw(void) +{ +#ifdef FASTFREEZE + _edje_freeze_val--; + if ((_edje_freeze_val <= 0) && (_edje_freeze_calc_count > 0)) + { + Edje *ed; + + _edje_freeze_calc_count = 0; + EINA_LIST_FREE(_edje_freeze_calc_list, ed) + { + _edje_thaw_edje(ed); + ed->freeze_calc = 0; + } + } +#else + Evas_Object *data; + +// FIXME: could just have a global freeze instead of per object +// comment as above.. why? + Eina_List *l; + + EINA_LIST_FOREACH(_edje_edjes, l, data) + edje_object_thaw(data); +#endif +} + +EAPI void +edje_fontset_append_set(const char *fonts) +{ + if (_edje_fontset_append) + free(_edje_fontset_append); + _edje_fontset_append = fonts ? strdup(fonts) : NULL; +} + +EAPI const char * +edje_fontset_append_get(void) +{ + return _edje_fontset_append; +} + +EAPI void +edje_scale_set(double scale) +{ + Eina_List *l; + Evas_Object *data; + + if (_edje_scale == FROM_DOUBLE(scale)) return; + _edje_scale = FROM_DOUBLE(scale); + EINA_LIST_FOREACH(_edje_edjes, l, data) + edje_object_calc_force(data); +} + +EAPI double +edje_scale_get(void) +{ + return TO_DOUBLE(_edje_scale); +} + +EAPI void +edje_password_show_last_set(Eina_Bool password_show_last) +{ + if (_edje_password_show_last == password_show_last) return; + _edje_password_show_last = password_show_last; +} + +EAPI void +edje_password_show_last_timeout_set(double password_show_last_timeout) +{ + if (_edje_password_show_last_timeout == FROM_DOUBLE(password_show_last_timeout)) return; + _edje_password_show_last_timeout = FROM_DOUBLE(password_show_last_timeout); +} + +EAPI Eina_Bool +edje_object_scale_set(Evas_Object *obj, double scale) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + if (ed->scale == scale) return EINA_TRUE; + ed->scale = FROM_DOUBLE(scale); + edje_object_calc_force(obj); + return EINA_TRUE; +} + +EAPI double +edje_object_scale_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return 0.0; + return TO_DOUBLE(ed->scale); +} + +EAPI Eina_Bool +edje_object_mirrored_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + + return ed->is_rtl; +} + +void +_edje_object_orientation_inform(Evas_Object *obj) +{ + if (edje_object_mirrored_get(obj)) + edje_object_signal_emit(obj, "edje,state,rtl", "edje"); + else + edje_object_signal_emit(obj, "edje,state,ltr", "edje"); +} + +EAPI void +edje_object_mirrored_set(Evas_Object *obj, Eina_Bool rtl) +{ + Edje *ed; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return; + if (ed->is_rtl == rtl) return; + + ed->is_rtl = rtl; + + for (i = 0 ; i < ed->table_parts_size ; i++) + { + Edje_Real_Part *ep; + const char *s; + double v; + + ep = ed->table_parts[i]; + s = ep->param1.description->state.name, + v = ep->param1.description->state.value; + _edje_part_description_apply(ed, ep, s, v , NULL, 0.0); + ep->chosen_description = ep->param1.description; + } + _edje_recalc_do(ed); + + _edje_object_orientation_inform(obj); + + return; +} + +EAPI const char * +edje_object_data_get(const Evas_Object *obj, const char *key) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if ((!ed) || (!key)) + return NULL; + if (!ed->collection) return NULL; + if (!ed->collection->data) return NULL; + return edje_string_get(eina_hash_find(ed->collection->data, key)); +} + +EAPI int +edje_object_freeze(Evas_Object *obj) +{ + Edje *ed; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return 0; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_freeze(rp->swallowed_object); + } + return _edje_freeze(ed); +} + +EAPI int +edje_object_thaw(Evas_Object *obj) +{ + Edje *ed; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return 0; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_thaw(rp->swallowed_object); + } + return _edje_thaw(ed); +} + +EAPI Eina_Bool +edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) +{ + Eina_List *members; + Edje_Color_Class *cc; + + if (!color_class) return EINA_FALSE; + + cc = eina_hash_find(_edje_color_class_hash, color_class); + if (!cc) + { + cc = calloc(1, sizeof(Edje_Color_Class)); + if (!cc) return EINA_FALSE; + cc->name = eina_stringshare_add(color_class); + if (!cc->name) + { + free(cc); + return EINA_FALSE; + } + if (!_edje_color_class_hash) + _edje_color_class_hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(_edje_color_class_hash, color_class, cc); + } + + if (r < 0) r = 0; + else if (r > 255) r = 255; + if (g < 0) g = 0; + else if (g > 255) g = 255; + if (b < 0) b = 0; + else if (b > 255) b = 255; + if (a < 0) a = 0; + else if (a > 255) a = 255; + if ((cc->r == r) && (cc->g == g) && + (cc->b == b) && (cc->a == a) && + (cc->r2 == r2) && (cc->g2 == g2) && + (cc->b2 == b2) && (cc->a2 == a2) && + (cc->r3 == r3) && (cc->g3 == g3) && + (cc->b3 == b3) && (cc->a3 == a3)) + return EINA_TRUE; + cc->r = r; + cc->g = g; + cc->b = b; + cc->a = a; + cc->r2 = r2; + cc->g2 = g2; + cc->b2 = b2; + cc->a2 = a2; + cc->r3 = r3; + cc->g3 = g3; + cc->b3 = b3; + cc->a3 = a3; + + members = eina_hash_find(_edje_color_class_member_hash, color_class); + while (members) + { + Edje *ed; + + ed = eina_list_data_get(members); + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + _edje_emit(ed, "color_class,set", color_class); + members = eina_list_next(members); + } + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_color_class_get(const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) +{ + Edje_Color_Class *cc; + + if (!color_class) + cc = NULL; + else + cc = eina_hash_find(_edje_color_class_hash, color_class); + + if (cc) + { +#define X(C) if (C) *C = cc->C +#define S(_r, _g, _b, _a) X(_r); X(_g); X(_b); X(_a) + S(r, g, b, a); + S(r2, g2, b2, a2); + S(r3, g3, b3, a3); +#undef S +#undef X + return EINA_TRUE; + } + else + { +#define X(C) if (C) *C = 0 +#define S(_r, _g, _b, _a) X(_r); X(_g); X(_b); X(_a) + S(r, g, b, a); + S(r2, g2, b2, a2); + S(r3, g3, b3, a3); +#undef S +#undef X + return EINA_FALSE; + } +} + +void +edje_color_class_del(const char *color_class) +{ + Edje_Color_Class *cc; + Eina_List *members; + + if (!color_class) return; + + cc = eina_hash_find(_edje_color_class_hash, color_class); + if (!cc) return; + + eina_hash_del(_edje_color_class_hash, color_class, cc); + eina_stringshare_del(cc->name); + free(cc); + + members = eina_hash_find(_edje_color_class_member_hash, color_class); + while (members) + { + Edje *ed; + + ed = eina_list_data_get(members); + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + _edje_emit(ed, "color_class,del", color_class); + members = eina_list_next(members); + } +} + +Eina_List * +edje_color_class_list(void) +{ + Edje_List_Foreach_Data fdata; + + if (!_edje_color_class_member_hash) return NULL; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(_edje_color_class_member_hash, + _edje_color_class_list_foreach, &fdata); + + return fdata.list; +} + +static Eina_Bool +_edje_color_class_list_foreach(const Eina_Hash *hash __UNUSED__, const void *key, void *data __UNUSED__, void *fdata) +{ + Edje_List_Foreach_Data *fd; + + fd = fdata; + fd->list = eina_list_append(fd->list, strdup(key)); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, int g, int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3) +{ + Edje *ed; + Edje_Color_Class *cc; + unsigned int i; + + ed = _edje_fetch(obj); + if ((!ed) || (!color_class)) return EINA_FALSE; + if (r < 0) r = 0; + else if (r > 255) r = 255; + if (g < 0) g = 0; + else if (g > 255) g = 255; + if (b < 0) b = 0; + else if (b > 255) b = 255; + if (a < 0) a = 0; + else if (a > 255) a = 255; + cc = eina_hash_find(ed->color_classes, color_class); + if (cc) + { + if ((cc->r == r) && (cc->g == g) && + (cc->b == b) && (cc->a == a) && + (cc->r2 == r2) && (cc->g2 == g2) && + (cc->b2 == b2) && (cc->a2 == a2) && + (cc->r3 == r3) && (cc->g3 == g3) && + (cc->b3 == b3) && (cc->a3 == a3)) + return EINA_TRUE; + cc->r = r; + cc->g = g; + cc->b = b; + cc->a = a; + cc->r2 = r2; + cc->g2 = g2; + cc->b2 = b2; + cc->a2 = a2; + cc->r3 = r3; + cc->g3 = g3; + cc->b3 = b3; + cc->a3 = a3; + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + return EINA_TRUE; + } + + color_class = eina_stringshare_add(color_class); + if (!color_class) return EINA_FALSE; + cc = malloc(sizeof(Edje_Color_Class)); + if (!cc) + { + eina_stringshare_del(color_class); + return EINA_FALSE; + } + cc->name = color_class; + cc->r = r; + cc->g = g; + cc->b = b; + cc->a = a; + cc->r2 = r2; + cc->g2 = g2; + cc->b2 = b2; + cc->a2 = a2; + cc->r3 = r3; + cc->g3 = g3; + cc->b3 = b3; + cc->a3 = a3; + eina_hash_direct_add(ed->color_classes, cc->name, cc); + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_color_class_set(rp->swallowed_object, color_class, + r, g, b, a, r2, g2, b2, a2, r3, g3, b3, + a3); + } + + _edje_recalc(ed); + _edje_emit(ed, "color_class,set", color_class); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_color_class_get(const Evas_Object *obj, const char *color_class, int *r, int *g, int *b, int *a, int *r2, int *g2, int *b2, int *a2, int *r3, int *g3, int *b3, int *a3) +{ + Edje *ed = _edje_fetch(obj); + Edje_Color_Class *cc = _edje_color_class_find(ed, color_class); + + if (cc) + { +#define X(C) if (C) *C = cc->C +#define S(_r, _g, _b, _a) X(_r); X(_g); X(_b); X(_a) + S(r, g, b, a); + S(r2, g2, b2, a2); + S(r3, g3, b3, a3); +#undef S +#undef X + return EINA_TRUE; + } + else + { +#define X(C) if (C) *C = 0 +#define S(_r, _g, _b, _a) X(_r); X(_g); X(_b); X(_a) + S(r, g, b, a); + S(r2, g2, b2, a2); + S(r3, g3, b3, a3); +#undef S +#undef X + return EINA_FALSE; + } +} + +void +edje_object_color_class_del(Evas_Object *obj, const char *color_class) +{ + Edje *ed; + Edje_Color_Class *cc = NULL; + unsigned int i; + + ed = _edje_fetch(obj); + + if ((!ed) || (!color_class)) return; + + eina_hash_del(ed->color_classes, color_class, cc); + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_color_class_del(rp->swallowed_object, color_class); + } + + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + _edje_emit(ed, "color_class,del", color_class); +} + +EAPI Eina_Bool +edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size size) +{ + Eina_List *members; + Edje_Text_Class *tc; + + if (!text_class) return EINA_FALSE; + if (!font) font = ""; + + tc = eina_hash_find(_edje_text_class_hash, text_class); + /* Create new text class */ + if (!tc) + { + tc = calloc(1, sizeof(Edje_Text_Class)); + if (!tc) return EINA_FALSE; + tc->name = eina_stringshare_add(text_class); + if (!tc->name) + { + free(tc); + return EINA_FALSE; + } + if (!_edje_text_class_hash) _edje_text_class_hash = eina_hash_string_superfast_new(NULL); + eina_hash_add(_edje_text_class_hash, text_class, tc); + + tc->font = eina_stringshare_add(font); + tc->size = size; + } + else + { + /* Match and the same, return */ + if ((tc->size == size) || + (tc->font == font) || + (tc->font && font && !strcmp(tc->font, font))) + return EINA_TRUE; + + /* Update the class found */ + eina_stringshare_replace(&tc->font, font); + tc->size = size; + } + + /* Tell all members of the text class to recalc */ + members = eina_hash_find(_edje_text_class_member_hash, text_class); + while (members) + { + Edje *ed; + + ed = eina_list_data_get(members); + ed->dirty = 1; + ed->recalc_call = 1; + _edje_textblock_style_all_update(ed); +#ifdef EDJE_CALC_CACHE + ed->text_part_change = 1; +#endif + _edje_recalc(ed); + members = eina_list_next(members); + } + return EINA_TRUE; +} + +void +edje_text_class_del(const char *text_class) +{ + Edje_Text_Class *tc; + Eina_List *members; + + if (!text_class) return; + + tc = eina_hash_find(_edje_text_class_hash, text_class); + if (!tc) return; + + eina_hash_del(_edje_text_class_hash, text_class, tc); + eina_stringshare_del(tc->name); + eina_stringshare_del(tc->font); + free(tc); + + members = eina_hash_find(_edje_text_class_member_hash, text_class); + while (members) + { + Edje *ed; + + ed = eina_list_data_get(members); + ed->dirty = 1; + _edje_textblock_style_all_update(ed); +#ifdef EDJE_CALC_CACHE + ed->text_part_change = 1; +#endif + _edje_recalc(ed); + members = eina_list_next(members); + } +} + +Eina_List * +edje_text_class_list(void) +{ + Edje_List_Foreach_Data fdata; + + memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); + eina_hash_foreach(_edje_text_class_member_hash, + _edje_text_class_list_foreach, &fdata); + return fdata.list; +} + +static Eina_Bool +_edje_text_class_list_foreach(const Eina_Hash *hash __UNUSED__, const void *key, void *data __UNUSED__, void *fdata) +{ + Edje_List_Foreach_Data *fd; + + fd = fdata; + fd->list = eina_list_append(fd->list, eina_stringshare_add(key)); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char *font, Evas_Font_Size size) +{ + Edje *ed; + Eina_List *l; + Edje_Text_Class *tc = NULL; + unsigned int i; + + ed = _edje_fetch(obj); + if ((!ed) || (!text_class)) return EINA_FALSE; + + /* for each text_class in the edje */ + EINA_LIST_FOREACH(ed->text_classes, l, tc) + { + if ((tc->name) && (!strcmp(tc->name, text_class))) + { + /* Match and the same, return */ + if ((tc->size == size) && + ((tc->font == font) || + (tc->font && font && !strcmp(tc->font, font)))) + return EINA_TRUE; + + /* Update new text class properties */ + eina_stringshare_replace(&tc->font, font); + tc->size = size; + break; + } + } + + if (!tc) + { + /* No matches, create a new text class */ + tc = calloc(1, sizeof(Edje_Text_Class)); + if (!tc) return EINA_FALSE; + tc->name = eina_stringshare_add(text_class); + if (!tc->name) + { + free(tc); + return EINA_FALSE; + } + tc->font = eina_stringshare_add(font); + tc->size = size; + /* Add to edje's text class list */ + ed->text_classes = eina_list_append(ed->text_classes, tc); + } + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if (rp->part->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object) + edje_object_text_class_set(rp->swallowed_object, text_class, + font, size); + } + + ed->dirty = 1; + ed->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + ed->text_part_change = 1; +#endif + _edje_textblock_style_all_update(ed); + _edje_recalc(ed); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_exists(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + return EINA_TRUE; +} + +EAPI const Evas_Object * +edje_object_part_object_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + return rp->object; +} + +EAPI Eina_Bool +edje_object_part_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h ) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + return EINA_FALSE; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) + { + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + return EINA_FALSE; + } + if (x) *x = rp->x; + if (y) *y = rp->y; + if (w) *w = rp->w; + if (h) *h = rp->h; + return EINA_TRUE; +} + +EAPI void +edje_object_item_provider_set(Evas_Object *obj, Edje_Item_Provider_Cb func, void *data) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return; + ed->item_provider.func = func; + ed->item_provider.data = data; +} + +/* FIXDOC: New Function */ +EAPI void +edje_object_text_change_cb_set(Evas_Object *obj, Edje_Text_Change_Cb func, void *data) +{ + Edje *ed; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return; + ed->text_change.func = func; + ed->text_change.data = data; + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if ((rp->part->type == EDJE_PART_TYPE_GROUP) && (rp->swallowed_object)) + edje_object_text_change_cb_set(rp->swallowed_object, func, data); + } +} + +Eina_Bool +_edje_object_part_text_raw_set(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text) +{ + if ((!rp->text.text) && (!text)) + return EINA_TRUE; /* nothing to do, no error */ + if ((rp->text.text) && (text) && + (!strcmp(rp->text.text, text))) + return EINA_TRUE; /* nothing to do, no error */ + if (rp->text.text) + { + eina_stringshare_del(rp->text.text); + rp->text.text = NULL; + } + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_text_markup_set(rp, text); + else + if (text) rp->text.text = eina_stringshare_add(text); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + rp->edje->recalc_hints = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + if (rp->edje->text_change.func) + rp->edje->text_change.func(rp->edje->text_change.data, obj, part); + return EINA_TRUE; +} + +Eina_Bool +_edje_object_part_text_raw_append(Evas_Object *obj, Edje_Real_Part *rp, const char *part, const char *text) +{ + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_text_markup_append(rp, text); + else if (text) + { + if (rp->text.text) + { + char *new = NULL; + int len_added = strlen(text); + int len_old = strlen(rp->text.text); + new = malloc(len_old + len_added + 1); + memcpy(new, rp->text.text, len_old); + memcpy(new + len_old, text, len_added); + new[len_old + len_added] = '\0'; + eina_stringshare_replace(&rp->text.text, new); + free(new); + } + else + { + eina_stringshare_replace(&rp->text.text, text); + } + } + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + if (rp->edje->text_change.func) + rp->edje->text_change.func(rp->edje->text_change.data, obj, part); + return EINA_TRUE; +} + +EAPI void +edje_object_part_text_style_user_push(Evas_Object *obj, const char *part, + const char *style) +{ + Edje *ed; + Edje_Real_Part *rp; + Evas_Textblock_Style *ts; + + ed = _edje_fetch(obj); + if ((!ed) || (!part) || (!style)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return; + + ts = evas_textblock_style_new(); + evas_textblock_style_set(ts, style); + evas_object_textblock_style_user_push(rp->object, ts); + evas_textblock_style_free(ts); + ed->recalc_hints = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(ed); +} + +EAPI void +edje_object_part_text_style_user_pop(Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return; + + evas_object_textblock_style_user_pop(rp->object); + ed->recalc_hints = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(ed); +} + +EAPI const char * +edje_object_part_text_style_user_peek(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + const Evas_Textblock_Style *ts; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return NULL; + + ts = evas_object_textblock_style_user_peek(rp->object); + if (ts) + return evas_textblock_style_get(ts); + else + return NULL; +} + +static void +_edje_user_define_string(Edje *ed, const char *part, const char *raw_text) +{ + /* NOTE: This one is tricky, text is referenced in rp->text.text for the life of the + rp. So on edje_object_file_set, we should first ref it, before destroying the old + layout. */ + Edje_User_Defined *eud; + Eina_List *l; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_STRING && !strcmp(eud->part, part)) + { + if (!raw_text) + { + _edje_user_definition_free(eud); + return ; + } + eud->u.string.text = raw_text; + return ; + } + + eud = _edje_user_definition_new(EDJE_USER_STRING, part, ed); + if (!eud) return ; + eud->u.string.text = raw_text; +} + +EAPI Eina_Bool +edje_object_part_text_set(Evas_Object *obj, const char *part, const char *text) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if ((rp->part->type != EDJE_PART_TYPE_TEXT) && + (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return EINA_FALSE; + r = _edje_object_part_text_raw_set(obj, rp, part, text); + _edje_user_define_string(ed, part, rp->text.text); + return r; +} + +EAPI const char * +edje_object_part_text_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_text_get(rp); + else + { + if (rp->part->type == EDJE_PART_TYPE_TEXT) return rp->text.text; + if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + return evas_object_textblock_text_markup_get(rp->object); + } + return NULL; +} + +EAPI Eina_Bool +edje_object_part_text_escaped_set(Evas_Object *obj, const char *part, const char *text) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool ret; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if ((rp->part->type == EDJE_PART_TYPE_TEXT) && (text)) + { + Eina_Strbuf *sbuf; + char *esc_start = NULL, *esc_end = NULL; + char *s, *p; + + sbuf = eina_strbuf_new(); + p = (char *)text; + s = p; + for (;;) + { + if ((*p == 0) || (esc_end) || (esc_start)) + { + if (esc_end) + { + const char *escape; + + escape = evas_textblock_escape_string_range_get + (esc_start, esc_end + 1); + if (escape) eina_strbuf_append(sbuf, escape); + esc_start = esc_end = NULL; + } + else if (*p == 0) + { + if (!s) s = esc_start; /* This would happen when there is & that isn't escaped */ + eina_strbuf_append_length(sbuf, s, p - s); + s = NULL; + } + if (*p == 0) + break; + } + + if (*p == '&') + { + if (!s) s = esc_start; /* This would happen when there is & that isn't escaped */ + esc_start = p; + esc_end = NULL; + eina_strbuf_append_length(sbuf, s, p - s); + s = NULL; + } + else if (*p == ';') + { + if (esc_start) + { + esc_end = p; + s = p + 1; + } + } + p++; + } + ret = _edje_object_part_text_raw_set + (obj, rp, part, eina_strbuf_string_get(sbuf)); + _edje_user_define_string(ed, part, rp->text.text); + eina_strbuf_free(sbuf); + return ret; + } + if (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) return EINA_FALSE; + ret = _edje_object_part_text_raw_set(obj, rp, part, text); + _edje_user_define_string(ed, part, rp->text.text); + return ret; +} + + +char * +_edje_text_escape(const char *text) +{ + Eina_Strbuf *txt; + char *ret; + const char *text_end; + size_t text_len; + + if (!text) return NULL; + + txt = eina_strbuf_new(); + text_len = strlen(text); + + text_end = text + text_len; + while (text < text_end) + { + int advance; + const char *escaped = evas_textblock_string_escape_get(text, &advance); + if (!escaped) + { + eina_strbuf_append_char(txt, text[0]); + advance = 1; + } + else + eina_strbuf_append(txt, escaped); + + text += advance; + } + + ret = eina_strbuf_string_steal(txt); + eina_strbuf_free(txt); + return ret; +} + +char * +_edje_text_unescape(const char *text) +{ + Eina_Strbuf *txt; + char *ret; + const char *text_end, *last, *escape_start; + size_t text_len; + + if (!text) return NULL; + + txt = eina_strbuf_new(); + text_len = strlen(text); + + text_end = text + text_len; + last = text; + escape_start = NULL; + for (; text < text_end; text++) + { + if (*text == '&') + { + size_t len; + const char *str; + + if (last) + { + len = text - last; + str = last; + } + else + { + len = text - escape_start; + str = escape_start; + } + + if (len > 0) + eina_strbuf_append_n(txt, str, len); + + escape_start = text; + last = NULL; + } + else if ((*text == ';') && (escape_start)) + { + size_t len; + const char *str = evas_textblock_escape_string_range_get(escape_start, text); + + if (str) + len = strlen(str); + else + { + str = escape_start; + len = text + 1 - escape_start; + } + + eina_strbuf_append_n(txt, str, len); + + escape_start = NULL; + last = text + 1; + } + } + + if (!last && escape_start) + last = escape_start; + + if (last && (text > last)) + { + size_t len = text - last; + eina_strbuf_append_n(txt, last, len); + } + + ret = eina_strbuf_string_steal(txt); + eina_strbuf_free(txt); + return ret; +} + +EAPI Eina_Bool +edje_object_part_text_unescaped_set(Evas_Object *obj, const char *part, const char *text_to_escape) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool ret = EINA_FALSE; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return ret; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return ret; + if (rp->part->type == EDJE_PART_TYPE_TEXT) + ret = _edje_object_part_text_raw_set(obj, rp, part, text_to_escape); + else if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + char *text = _edje_text_escape(text_to_escape); + + ret = _edje_object_part_text_raw_set(obj, rp, part, text); + free(text); + } + _edje_user_define_string(ed, part, rp->text.text); + return ret; +} + +EAPI char * +edje_object_part_text_unescaped_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + const char *t = _edje_entry_text_get(rp); + return _edje_text_unescape(t); + } + else + { + if (rp->part->type == EDJE_PART_TYPE_TEXT) return strdup(rp->text.text); + if (rp->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + const char *t = evas_object_textblock_text_markup_get(rp->object); + return _edje_text_unescape(t); + } + } + return NULL; +} + +EAPI const char * +edje_object_part_text_selection_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_selection_get(rp); + return NULL; +} + +EAPI void +edje_object_part_text_select_none(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_none(rp); +} + +EAPI void +edje_object_part_text_select_all(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_all(rp); +} + +EAPI void +edje_object_part_text_insert(Evas_Object *obj, const char *part, const char *text) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return; + if (rp->part->entry_mode <= EDJE_ENTRY_EDIT_MODE_NONE) return; + _edje_entry_text_markup_insert(rp, text); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + rp->edje->recalc_hints = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + if (rp->edje->text_change.func) + rp->edje->text_change.func(rp->edje->text_change.data, obj, part); +} + +EAPI void +edje_object_part_text_append(Evas_Object *obj, const char *part, const char *text) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if ((rp->part->type != EDJE_PART_TYPE_TEXTBLOCK)) return; + _edje_object_part_text_raw_append(obj, rp, part, text); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + rp->edje->recalc_hints = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + if (rp->edje->text_change.func) + rp->edje->text_change.func(rp->edje->text_change.data, obj, part); +} + +EAPI const Eina_List * +edje_object_part_text_anchor_list_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_anchors_list(rp); + return NULL; +} + +EAPI const Eina_List * +edje_object_part_text_anchor_geometry_get(const Evas_Object *obj, const char *part, const char *anchor) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_anchor_geometry_get(rp, anchor); + return NULL; +} + +EAPI const Eina_List * +edje_object_part_text_item_list_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_items_list(rp); + return NULL; +} + +EAPI Eina_Bool +edje_object_part_text_item_geometry_get(const Evas_Object *obj, const char *part, const char *item, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_item_geometry_get(rp, item, cx, cy, cw, ch); + return EINA_FALSE; +} + +EAPI void +edje_object_part_text_cursor_geometry_get(const Evas_Object *obj, const char *part, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_geometry_get(rp, x, y, w, h); + if (x) *x -= rp->edje->x; + if (y) *y -= rp->edje->y; + } +} + +EAPI void +edje_object_part_text_user_insert(const Evas_Object *obj, const char *part, const char *text) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_user_insert(rp, text); +} + +EAPI void +edje_object_part_text_select_allow_set(const Evas_Object *obj, const char *part, Eina_Bool allow) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_allow_set(rp, allow); +} + +EAPI void +edje_object_part_text_select_abort(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_abort(rp); +} + +EAPI void +edje_object_part_text_select_begin(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_begin(rp); +} + +EAPI void +edje_object_part_text_select_extend(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_select_extend(rp); +} + +EAPI void * +edje_object_part_text_imf_context_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + rp = _edje_real_part_recursive_get(ed, (char *)part); + if (!rp) return NULL; + + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + return _edje_entry_imf_context_get(rp); + else + return NULL; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_next(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_next(rp, cur); + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_prev(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_prev(rp, cur); + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_up(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_up(rp, cur); + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_down(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_down(rp, cur); + } + return EINA_FALSE; +} + +EAPI void +edje_object_part_text_cursor_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_begin(rp, cur); + } +} + +EAPI void +edje_object_part_text_cursor_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_end(rp, cur); + } +} + +EAPI void +edje_object_part_text_cursor_copy(Evas_Object *obj, const char *part, Edje_Cursor src, Edje_Cursor dst) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_copy(rp, src, dst); + } +} + +EAPI void +edje_object_part_text_cursor_line_begin_set(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_line_begin(rp, cur); + } +} + +EAPI void +edje_object_part_text_cursor_line_end_set(Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_line_end(rp, cur); + } +} + +EAPI Eina_Bool +edje_object_part_text_cursor_coord_set(Evas_Object *obj, const char *part, + Edje_Cursor cur, Evas_Coord x, Evas_Coord y) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_coord_set(rp, cur, x, y); + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_is_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_is_format_get(rp, cur); + } + return EINA_FALSE; +} + +EAPI Eina_Bool +edje_object_part_text_cursor_is_visible_format_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_is_visible_format_get(rp, cur); + } + return 0; +} + +EAPI char * +edje_object_part_text_cursor_content_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_content_get(rp, cur); + } + return NULL; +} + +EAPI void +edje_object_part_text_cursor_pos_set(Evas_Object *obj, const char *part, Edje_Cursor cur, int pos) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_cursor_pos_set(rp, cur, pos); + } +} + +EAPI int +edje_object_part_text_cursor_pos_get(const Evas_Object *obj, const char *part, Edje_Cursor cur) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return 0; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return 0; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_cursor_pos_get(rp, cur); + } + return 0; +} + +EAPI void +edje_object_part_text_imf_context_reset(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_imf_context_reset(rp); + } +} + +EAPI void +edje_object_part_text_input_panel_layout_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Layout layout) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_layout_set(rp, layout); + } +} + +EAPI Edje_Input_Panel_Layout +edje_object_part_text_input_panel_layout_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_INPUT_PANEL_LAYOUT_INVALID; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_input_panel_layout_get(rp); + } + return EDJE_INPUT_PANEL_LAYOUT_INVALID; +} + +EAPI void +edje_object_part_text_autocapital_type_set(Evas_Object *obj, const char *part, Edje_Text_Autocapital_Type autocapital_type) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_autocapital_type_set(rp, autocapital_type); + } +} + +EAPI Edje_Text_Autocapital_Type +edje_object_part_text_autocapital_type_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_autocapital_type_get(rp); + } + return EDJE_TEXT_AUTOCAPITAL_TYPE_NONE; +} + +EAPI void +edje_object_part_text_prediction_allow_set(Evas_Object *obj, const char *part, Eina_Bool prediction) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_prediction_allow_set(rp, prediction); + } +} + +EAPI Eina_Bool +edje_object_part_text_prediction_allow_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_prediction_allow_get(rp); + } + return EINA_FALSE; +} + +EAPI void +edje_object_part_text_input_panel_enabled_set(Evas_Object *obj, const char *part, Eina_Bool enabled) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_enabled_set(rp, enabled); + } +} + +EAPI Eina_Bool +edje_object_part_text_input_panel_enabled_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_input_panel_enabled_get(rp); + } + return EINA_FALSE; +} + +EAPI void +edje_object_part_text_input_panel_show(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_input_panel_show(rp); +} + +EAPI void +edje_object_part_text_input_panel_hide(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + _edje_entry_input_panel_hide(rp); +} + +EAPI void +edje_object_part_text_input_panel_language_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Lang lang) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_language_set(rp, lang); + } +} + +EAPI Edje_Input_Panel_Lang +edje_object_part_text_input_panel_language_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_INPUT_PANEL_LANG_AUTOMATIC; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EDJE_INPUT_PANEL_LANG_AUTOMATIC; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_input_panel_language_get(rp); + } + return EDJE_INPUT_PANEL_LANG_AUTOMATIC; +} + +EAPI void +edje_object_part_text_input_panel_imdata_set(Evas_Object *obj, const char *part, const void *data, int len) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_imdata_set(rp, data, len); + } +} + +EAPI void +edje_object_part_text_input_panel_imdata_get(const Evas_Object *obj, const char *part, void *data, int *len) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_imdata_get(rp, data, len); + } +} + +EAPI void +edje_object_part_text_input_panel_return_key_type_set(Evas_Object *obj, const char *part, Edje_Input_Panel_Return_Key_Type return_key_type) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_return_key_type_set(rp, return_key_type); + } +} + +EAPI Edje_Input_Panel_Return_Key_Type +edje_object_part_text_input_panel_return_key_type_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_input_panel_return_key_type_get(rp); + } + return EDJE_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT; +} + +EAPI void +edje_object_part_text_input_panel_return_key_disabled_set(Evas_Object *obj, const char *part, Eina_Bool disabled) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + _edje_entry_input_panel_return_key_disabled_set(rp, disabled); + } +} + +EAPI Eina_Bool +edje_object_part_text_input_panel_return_key_disabled_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE) + { + return _edje_entry_input_panel_return_key_disabled_get(rp); + } + return EINA_FALSE; +} + +EAPI void +edje_object_text_insert_filter_callback_add(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data) +{ + Edje *ed; + Edje_Text_Insert_Filter_Callback *cb; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + cb = calloc(1, sizeof(Edje_Text_Insert_Filter_Callback)); + cb->part = eina_stringshare_add(part); + cb->func = func; + cb->data = (void *)data; + ed->text_insert_filter_callbacks = + eina_list_append(ed->text_insert_filter_callbacks, cb); +} + +EAPI void * +edje_object_text_insert_filter_callback_del(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func) +{ + Edje *ed; + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->text_insert_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func)) + { + void *data = cb->data; + ed->text_insert_filter_callbacks = + eina_list_remove_list(ed->text_insert_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return data; + } + } + return NULL; +} + +EAPI void * +edje_object_text_insert_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Text_Filter_Cb func, void *data) +{ + Edje *ed; + Edje_Text_Insert_Filter_Callback *cb; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->text_insert_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func) && + (cb->data == data)) + { + void *tmp = cb->data; + ed->text_insert_filter_callbacks = + eina_list_remove_list(ed->text_insert_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return tmp; + } + } + return NULL; +} + +EAPI void +edje_object_text_markup_filter_callback_add(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data) +{ + Edje *ed; + Edje_Markup_Filter_Callback *cb; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return; + cb = calloc(1, sizeof(Edje_Markup_Filter_Callback)); + cb->part = eina_stringshare_add(part); + cb->func = func; + cb->data = (void *)data; + ed->markup_filter_callbacks = + eina_list_append(ed->markup_filter_callbacks, cb); +} + +EAPI void * +edje_object_text_markup_filter_callback_del(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func) +{ + Edje *ed; + Edje_Markup_Filter_Callback *cb; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func)) + { + void *data = cb->data; + ed->markup_filter_callbacks = + eina_list_remove_list(ed->markup_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return data; + } + } + return NULL; +} + +EAPI void * +edje_object_text_markup_filter_callback_del_full(Evas_Object *obj, const char *part, Edje_Markup_Filter_Cb func, void *data) +{ + Edje *ed; + Edje_Markup_Filter_Callback *cb; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + EINA_LIST_FOREACH(ed->markup_filter_callbacks, l, cb) + { + if ((!strcmp(cb->part, part)) && (cb->func == func) && + (cb->data == data)) + { + void *tmp = cb->data; + ed->markup_filter_callbacks = + eina_list_remove_list(ed->markup_filter_callbacks, l); + eina_stringshare_del(cb->part); + free(cb); + return tmp; + } + } + return NULL; +} + +EAPI Eina_Bool +edje_object_part_swallow(Evas_Object *obj, const char *part, Evas_Object *obj_swallow) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud = NULL; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + /* Need to recalc before providing the object. */ + // XXX: I guess this is not required, removing for testing purposes + // XXX: uncomment if you see glitches in e17 or others. + // XXX: by Gustavo, January 21th 2009. + // XXX: I got a backtrace with over 30000 calls without this, + // XXX: only with 32px shelves. The problem is probably somewhere else, + // XXX: but until it's found, leave this here. + // XXX: by Sachiel, January 21th 2009, 19:30 UTC + _edje_recalc_do(ed); + + rp = evas_object_data_get(obj_swallow, "\377 edje.swallowing_part"); + if (rp) + { + /* The object is already swallowed somewhere, unswallow it first */ + edje_object_part_unswallow(rp->edje->obj, obj_swallow); + } + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) + { + DBG("cannot swallow part %s: part not exist!", part); + return EINA_FALSE; + } + if (rp->part->type != EDJE_PART_TYPE_SWALLOW) + { + ERR("cannot swallow part %s: not swallow type!", rp->part->name); + return EINA_FALSE; + } + _edje_real_part_swallow(rp, obj_swallow, EINA_TRUE); + + if (rp->swallowed_object) + { + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_SWALLOW, part, ed); + evas_object_event_callback_add(obj_swallow, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + else ed->user_defined = eina_list_append(ed->user_defined, eud); + + if (eud) + { + eud->u.swallow.child = obj_swallow; + } + } + + return EINA_TRUE; +} + +static void +_recalc_extern_parent(Evas_Object *obj) +{ + Evas_Object *parent; + Edje *ed; + + parent = evas_object_smart_parent_get(obj); + ed = _edje_fetch(parent); + + ed->dirty = 1; + ed->recalc_call = 1; // ZZZ: ??? + _edje_recalc(ed); +} + +EAPI void +edje_extern_object_min_size_set(Evas_Object *obj, Evas_Coord minw, Evas_Coord minh) +{ + Edje_Real_Part *rp; + + evas_object_size_hint_min_set(obj, minw, minh); + rp = evas_object_data_get(obj, "\377 edje.swallowing_part"); + if (rp) + { + rp->swallow_params.min.w = minw; + rp->swallow_params.min.h = minh; + + _recalc_extern_parent(obj); + } +} + +EAPI void +edje_extern_object_max_size_set(Evas_Object *obj, Evas_Coord maxw, Evas_Coord maxh) +{ + Edje_Real_Part *rp; + + evas_object_size_hint_max_set(obj, maxw, maxh); + rp = evas_object_data_get(obj, "\377 edje.swallowing_part"); + if (rp) + { + rp->swallow_params.max.w = maxw; + rp->swallow_params.max.h = maxh; + + _recalc_extern_parent(obj); + } +} + +EAPI void +edje_extern_object_aspect_set(Evas_Object *obj, Edje_Aspect_Control aspect, Evas_Coord aw, Evas_Coord ah) +{ + Edje_Real_Part *rp; + Evas_Aspect_Control asp; + + asp = EVAS_ASPECT_CONTROL_NONE; + switch (aspect) + { + case EDJE_ASPECT_CONTROL_NONE: asp = EVAS_ASPECT_CONTROL_NONE; break; + case EDJE_ASPECT_CONTROL_NEITHER: asp = EVAS_ASPECT_CONTROL_NEITHER; break; + case EDJE_ASPECT_CONTROL_HORIZONTAL: asp = EVAS_ASPECT_CONTROL_HORIZONTAL; break; + case EDJE_ASPECT_CONTROL_VERTICAL: asp = EVAS_ASPECT_CONTROL_VERTICAL; break; + case EDJE_ASPECT_CONTROL_BOTH: asp = EVAS_ASPECT_CONTROL_BOTH; break; + default: break; + } + if (aw < 1) aw = 1; + if (ah < 1) ah = 1; + evas_object_size_hint_aspect_set(obj, asp, aw, ah); + rp = evas_object_data_get(obj, "\377 edje.swallowing_part"); + if (rp) + { + rp->swallow_params.aspect.mode = aspect; + rp->swallow_params.aspect.w = aw; + rp->swallow_params.aspect.h = ah; + _recalc_extern_parent(obj); + } +} + +struct edje_box_layout_builtin { + const char *name; + Evas_Object_Box_Layout cb; +}; + +static Evas_Object_Box_Layout +_edje_box_layout_builtin_find(const char *name) +{ + const struct edje_box_layout_builtin _edje_box_layout_builtin[] = { + {"horizontal", evas_object_box_layout_horizontal}, + {"horizontal_flow", evas_object_box_layout_flow_horizontal}, + {"horizontal_homogeneous", evas_object_box_layout_homogeneous_horizontal}, + {"horizontal_max", evas_object_box_layout_homogeneous_max_size_horizontal}, + {"stack", evas_object_box_layout_stack}, + {"vertical", evas_object_box_layout_vertical}, + {"vertical_flow", evas_object_box_layout_flow_vertical}, + {"vertical_homogeneous", evas_object_box_layout_homogeneous_vertical}, + {"vertical_max", evas_object_box_layout_homogeneous_max_size_vertical}, + {NULL, NULL} + }; + const struct edje_box_layout_builtin *base; + + switch (name[0]) + { + case 'h': + base = _edje_box_layout_builtin + 0; + break; + case 's': + base = _edje_box_layout_builtin + 4; + break; + case 'v': + base = _edje_box_layout_builtin + 5; + break; + default: + return NULL; + } + + for (; (base->name) && (base->name[0] == name[0]); base++) + if (strcmp(base->name, name) == 0) + return base->cb; + + return NULL; +} + +static Eina_Rbtree_Direction +_edje_box_layout_external_node_cmp(const Eina_Rbtree *left, const Eina_Rbtree *right, __UNUSED__ void *data) +{ + Edje_Box_Layout *l = (Edje_Box_Layout *)left; + Edje_Box_Layout *r = (Edje_Box_Layout *)right; + + if (strcmp(l->name, r->name) < 0) + return EINA_RBTREE_RIGHT; + else + return EINA_RBTREE_LEFT; +} + +static int +_edje_box_layout_external_find_cmp(const Eina_Rbtree *node, const void *key, __UNUSED__ int length, __UNUSED__ void *data) +{ + Edje_Box_Layout *l = (Edje_Box_Layout *)node; + return strcmp(key, l->name); +} + +static Edje_Box_Layout * +_edje_box_layout_external_find(const char *name) +{ + return (Edje_Box_Layout *)eina_rbtree_inline_lookup + (_edje_box_layout_registry, name, 0, _edje_box_layout_external_find_cmp, + NULL); +} + +Eina_Bool +_edje_box_layout_find(const char *name, Evas_Object_Box_Layout *cb, void **data, void (**free_data)(void *data)) +{ + const Edje_Box_Layout *l; + + if (!name) return EINA_FALSE; + + *cb = _edje_box_layout_builtin_find(name); + if (*cb) + { + *free_data = NULL; + *data = NULL; + return EINA_TRUE; + } + + l = _edje_box_layout_external_find(name); + if (!l) return EINA_FALSE; + + *cb = l->func; + *free_data = l->layout_data_free; + if (l->layout_data_get) + *data = l->layout_data_get(l->data); + else + *data = NULL; + + return EINA_TRUE; +} + +static void +_edje_box_layout_external_free(Eina_Rbtree *node, __UNUSED__ void *data) +{ + Edje_Box_Layout *l = (Edje_Box_Layout *)node; + + if (l->data && l->free_data) + l->free_data(l->data); + free(l); +} + +static Edje_Box_Layout * +_edje_box_layout_external_new(const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data) +{ + Edje_Box_Layout *l; + size_t name_len; + + name_len = strlen(name) + 1; + l = malloc(sizeof(Edje_Box_Layout) + name_len); + if (!l) return NULL; + + l->func = func; + l->layout_data_get = layout_data_get; + l->layout_data_free = layout_data_free; + l->free_data = free_data; + l->data = data; + + memcpy(l->name, name, name_len); + + return l; +} + +EAPI void +edje_box_layout_register(const char *name, Evas_Object_Box_Layout func, void *(*layout_data_get)(void *), void (*layout_data_free)(void *), void (*free_data)(void *), void *data) +{ + Edje_Box_Layout *l; + + if (!name) return; + + if (_edje_box_layout_builtin_find(name)) + { + ERR("Cannot register layout '%s': would override builtin!", + name); + + if (data && free_data) free_data(data); + return; + } + + l = _edje_box_layout_external_find(name); + if (!l) + { + if (!func) + { + if (data && free_data) free_data(data); + return; + } + + l = _edje_box_layout_external_new + (name, func, layout_data_get, layout_data_free, free_data, data); + if (!l) + return; + + _edje_box_layout_registry = eina_rbtree_inline_insert + (_edje_box_layout_registry, (Eina_Rbtree *)l, + _edje_box_layout_external_node_cmp, NULL); + } + else + { + if (func) + { + if (l->data && l->free_data) l->free_data(l->data); + + l->func = func; + l->layout_data_get = layout_data_get; + l->layout_data_free = layout_data_free; + l->free_data = free_data; + l->data = data; + } + else + { + if (data && free_data) free_data(data); + + _edje_box_layout_registry = eina_rbtree_inline_remove + (_edje_box_layout_registry, (Eina_Rbtree *)l, + _edje_box_layout_external_node_cmp, NULL); + _edje_box_layout_external_free((Eina_Rbtree *)l, NULL); + } + } +} + +EAPI void +edje_object_part_unswallow(Evas_Object *obj, Evas_Object *obj_swallow) +{ + Edje_Real_Part *rp; + + if (!obj_swallow) return; + + rp = (Edje_Real_Part *)evas_object_data_get(obj_swallow, "\377 edje.swallowing_part"); + if (!rp) + return; + if (rp->part->type != EDJE_PART_TYPE_SWALLOW) + { + ERR("cannot unswallow part %s: not swallow type!", rp->part->name); + return; + } + + if (rp->swallowed_object == obj_swallow) + { + Edje_User_Defined *eud; + Eina_List *l; + + if (obj) + { + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed && obj) + { + ERR("edje_object_part_unswallow called on a non Edje object ('%s').", + evas_object_type_get(obj)); + } + else + { + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_SWALLOW && eud->u.swallow.child == obj_swallow) + { + _edje_user_definition_free(eud); + return ; + } + } + } + + _edje_real_part_swallow_clear(rp); + rp->swallowed_object = NULL; + rp->swallow_params.min.w = 0; + rp->swallow_params.min.h = 0; + rp->swallow_params.max.w = 0; + rp->swallow_params.max.h = 0; + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc_do(rp->edje); + return; + } +} + +EAPI Evas_Object * +edje_object_part_swallow_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + return rp->swallowed_object; +} + +EAPI void +edje_object_size_min_get(const Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if ((!ed) || (!ed->collection)) + { + if (minw) *minw = 0; + if (minh) *minh = 0; + return; + } + if (minw) *minw = ed->collection->prop.min.w; + if (minh) *minh = ed->collection->prop.min.h; +} + +EAPI void +edje_object_size_max_get(const Evas_Object *obj, Evas_Coord *maxw, Evas_Coord *maxh) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if ((!ed) || (!ed->collection)) + { + if (maxw) *maxw = 0; + if (maxh) *maxh = 0; + return; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + if (ed->collection->prop.max.w == 0) + { + /* XXX TODO: convert maxw to 0, fix things that break. */ + if (maxw) *maxw = EDJE_INF_MAX_W; + } + else + { + if (maxw) *maxw = ed->collection->prop.max.w; + } + if (ed->collection->prop.max.h == 0) + { + /* XXX TODO: convert maxh to 0, fix things that break. */ + if (maxh) *maxh = EDJE_INF_MAX_H; + } + else + { + if (maxh) *maxh = ed->collection->prop.max.h; + } +} + +EAPI void +edje_object_calc_force(Evas_Object *obj) +{ + Edje *ed; + int pf, pf2; + + ed = _edje_fetch(obj); + if (!ed) return; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + + pf2 = _edje_freeze_val; + pf = ed->freeze; + + _edje_freeze_val = 0; + ed->freeze = 0; + + _edje_recalc_do(ed); + + ed->freeze = pf; + _edje_freeze_val = pf2; +} + +EAPI void +edje_object_size_min_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh) +{ + edje_object_size_min_restricted_calc(obj, minw, minh, 0, 0); +} + +EAPI Eina_Bool +edje_object_parts_extends_calc(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) +{ + Edje *ed; + Evas_Coord xx1 = INT_MAX, yy1 = INT_MAX; + Evas_Coord xx2 = 0, yy2 = 0; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) + { + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; + return EINA_FALSE; + } + + ed->calc_only = 1; + + /* Need to recalc before providing the object. */ + ed->dirty = 1; + _edje_recalc_do(ed); + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + Evas_Coord rpx1, rpy1; + Evas_Coord rpx2, rpy2; + + rp = ed->table_parts[i]; + + rpx1 = rp->x; + rpy1 = rp->y; + rpx2 = rpx1 + rp->w; + rpy2 = rpy1 + rp->h; + + if (xx1 > rpx1) xx1 = rpx1; + if (yy1 > rpy1) yy1 = rpy1; + if (xx2 < rpx2) xx2 = rpx2; + if (yy2 < rpy2) yy2 = rpy2; + } + + ed->calc_only = 0; + + if (x) *x = xx1; + if (y) *y = yy1; + if (w) *w = xx2 - xx1; + if (h) *h = yy2 - yy1; + + return EINA_TRUE; +} + +EAPI void +edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Coord *minh, Evas_Coord restrictedw, Evas_Coord restrictedh) +{ + Edje *ed; + Evas_Coord pw, ph; + int maxw, maxh; + int okw, okh; + int reset_maxwh; + Edje_Real_Part *pep = NULL; + Eina_Bool has_non_fixed_tb = EINA_FALSE; + + ed = _edje_fetch(obj); + if ((!ed) || (!ed->collection)) + { + if (minw) *minw = restrictedw; + if (minh) *minh = restrictedh; + return; + } + reset_maxwh = 1; + ed->calc_only = 1; + pw = ed->w; + ph = ed->h; + + again: + ed->w = restrictedw; + ed->h = restrictedh; + + maxw = 0; + maxh = 0; + + do + { + unsigned int i; + + okw = okh = 0; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc_do(ed); + if (reset_maxwh) + { + maxw = 0; + maxh = 0; + } + pep = NULL; + has_non_fixed_tb = EINA_FALSE; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *ep; + int w, h; + int didw; + + ep = ed->table_parts[i]; + w = ep->w - ep->req.w; + h = ep->h - ep->req.h; + didw = 0; + if (ep->chosen_description) + { + if (!ep->chosen_description->fixed.w) + { + if ((ep->part->type == EDJE_PART_TYPE_TEXTBLOCK)) + { + Evas_Coord tb_mw; + evas_object_textblock_size_formatted_get(ep->object, + &tb_mw, NULL); + tb_mw -= ep->req.w; + if (tb_mw > w) + { + w = tb_mw; + } + has_non_fixed_tb = EINA_TRUE; + } + if (w > maxw) + { + maxw = w; + okw = 1; + pep = ep; + didw = 1; + } + } + if (!ep->chosen_description->fixed.h) + { + if (!((ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) && + (!((Edje_Part_Description_Text *)ep->chosen_description)->text.min_x) && + (didw))) + { + if (h > maxh) + { + maxh = h; + okh = 1; + pep = ep; + } + } + + if (ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) + { + has_non_fixed_tb = EINA_TRUE; + } + } + } + } + if (okw) + { + ed->w += maxw; + if (ed->w < restrictedw) ed->w = restrictedw; + } + if (okh) + { + ed->h += maxh; + if (ed->h < restrictedh) ed->h = restrictedh; + } + if ((ed->w > 4000) || (ed->h > 4000)) + { + /* Only print it if we have a non-fixed textblock. + * We should possibly avoid all of this if in this case, but in + * the meanwhile, just doing this. */ + if (!has_non_fixed_tb) + { + if (pep) + ERR("file %s, group %s has a non-fixed part '%s'. Adding 'fixed: 1 1;' to source EDC may help. Continuing discarding faulty part.", + ed->path, ed->group, pep->part->name); + else + ERR("file %s, group %s overflowed 4000x4000 with minimum size of %dx%d. Continuing discarding faulty parts.", + ed->path, ed->group, ed->w, ed->h); + } + + if (reset_maxwh) + { + reset_maxwh = 0; + goto again; + } + } + } + while (okw || okh); + ed->min.w = ed->w; + ed->min.h = ed->h; + + if (minw) *minw = ed->min.w; + if (minh) *minh = ed->min.h; + + ed->w = pw; + ed->h = ph; + ed->dirty = 1; +#ifdef EDJE_CALC_CACHE + ed->all_part_change = 1; +#endif + _edje_recalc(ed); + ed->calc_only = 0; +} + +/* FIXME: Correctly return other states */ +EAPI const char * +edje_object_part_state_get(const Evas_Object *obj, const char *part, double *val_ret) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (val_ret) *val_ret = 0; + return ""; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) + { + if (val_ret) *val_ret = 0; + INF("part not found"); + return ""; + } + if (rp->chosen_description) + { + if (val_ret) *val_ret = rp->chosen_description->state.value; + if (rp->chosen_description->state.name) + return rp->chosen_description->state.name; + return "default"; + } + else + { + if (rp->param1.description) + { + if (val_ret) *val_ret = rp->param1.description->state.value; + if (rp->param1.description->state.name) + return rp->param1.description->state.name; + return "default"; + } + } + if (val_ret) *val_ret = 0; + return ""; +} + +EAPI Edje_Drag_Dir +edje_object_part_drag_dir_get(const Evas_Object *obj, const char *part) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EDJE_DRAG_DIR_NONE; + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EDJE_DRAG_DIR_NONE; + if ((rp->part->dragable.x) && (rp->part->dragable.y)) return EDJE_DRAG_DIR_XY; + else if (rp->part->dragable.x) return EDJE_DRAG_DIR_X; + else if (rp->part->dragable.y) return EDJE_DRAG_DIR_Y; + return EDJE_DRAG_DIR_NONE; +} + +EAPI Eina_Bool +edje_object_part_drag_value_set(Evas_Object *obj, const char *part, double dx, double dy) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + if (rp->drag->down.count > 0) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_VALUE && !strcmp(part, eud->part)) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_VALUE, part, ed); + if (eud) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + } + } + + if (rp->part->dragable.confine_id != -1) + { + dx = CLAMP(dx, 0.0, 1.0); + dy = CLAMP(dy, 0.0, 1.0); + } + if (rp->part->dragable.x < 0) dx = 1.0 - dx; + if (rp->part->dragable.y < 0) dy = 1.0 - dy; + if ((rp->drag->val.x == FROM_DOUBLE(dx)) && (rp->drag->val.y == FROM_DOUBLE(dy))) return EINA_TRUE; + rp->drag->val.x = FROM_DOUBLE(dx); + rp->drag->val.y = FROM_DOUBLE(dy); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_dragable_pos_set(rp->edje, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(rp->edje, "drag,set", rp->part->name); + return EINA_TRUE; +} + +/* FIXME: Should this be x and y instead of dx/dy? */ +EAPI Eina_Bool +edje_object_part_drag_value_get(const Evas_Object *obj, const char *part, double *dx, double *dy) +{ + Edje *ed; + Edje_Real_Part *rp; + double ddx, ddy; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp || !rp->drag) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + ddx = TO_DOUBLE(rp->drag->val.x); + ddy = TO_DOUBLE(rp->drag->val.y); + if (rp->part->dragable.x < 0) ddx = 1.0 - ddx; + if (rp->part->dragable.y < 0) ddy = 1.0 - ddy; + if (dx) *dx = ddx; + if (dy) *dy = ddy; + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_size_set(Evas_Object *obj, const char *part, double dw, double dh) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_SIZE && !strcmp(part, eud->part)) + { + eud->u.drag_size.w = dw; + eud->u.drag_size.h = dh; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_SIZE, part, ed); + if (eud) + { + eud->u.drag_size.w = dw; + eud->u.drag_size.h = dh; + } + } + + if (dw < 0.0) dw = 0.0; + else if (dw > 1.0) dw = 1.0; + if (dh < 0.0) dh = 0.0; + else if (dh > 1.0) dh = 1.0; + if ((rp->drag->size.x == FROM_DOUBLE(dw)) && (rp->drag->size.y == FROM_DOUBLE(dh))) return EINA_TRUE; + rp->drag->size.x = FROM_DOUBLE(dw); + rp->drag->size.y = FROM_DOUBLE(dh); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_size_get(const Evas_Object *obj, const char *part, double *dw, double *dh) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (dw) *dw = 0; + if (dh) *dh = 0; + return EINA_FALSE; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp || !rp->drag) + { + if (dw) *dw = 0; + if (dh) *dh = 0; + return EINA_FALSE; + } + if (dw) *dw = TO_DOUBLE(rp->drag->size.x); + if (dh) *dh = TO_DOUBLE(rp->drag->size.y); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_step_set(Evas_Object *obj, const char *part, double dx, double dy) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_STEP && !strcmp(part, eud->part)) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_STEP, part, ed); + if (eud) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + } + } + + if (dx < 0.0) dx = 0.0; + else if (dx > 1.0) dx = 1.0; + if (dy < 0.0) dy = 0.0; + else if (dy > 1.0) dy = 1.0; + rp->drag->step.x = FROM_DOUBLE(dx); + rp->drag->step.y = FROM_DOUBLE(dy); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_step_get(const Evas_Object *obj, const char *part, double *dx, double *dy) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp || !rp->drag) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + if (dx) *dx = TO_DOUBLE(rp->drag->step.x); + if (dy) *dy = TO_DOUBLE(rp->drag->step.y); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_page_set(Evas_Object *obj, const char *part, double dx, double dy) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_PAGE && !strcmp(part, eud->part)) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_PAGE, part, ed); + if (eud) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + } + } + + if (dx < 0.0) dx = 0.0; + else if (dx > 1.0) dx = 1.0; + if (dy < 0.0) dy = 0.0; + else if (dy > 1.0) dy = 1.0; + rp->drag->page.x = FROM_DOUBLE(dx); + rp->drag->page.y = FROM_DOUBLE(dy); +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_page_get(const Evas_Object *obj, const char *part, double *dx, double *dy) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + + /* Need to recalc before providing the object. */ + _edje_recalc_do(ed); + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp || !rp->drag) + { + if (dx) *dx = 0; + if (dy) *dy = 0; + return EINA_FALSE; + } + if (dx) *dx = TO_DOUBLE(rp->drag->page.x); + if (dy) *dy = TO_DOUBLE(rp->drag->page.y); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_step(Evas_Object *obj, const char *part, double dx, double dy) +{ + Edje *ed; + Edje_Real_Part *rp; + FLOAT_T px, py; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + if (rp->drag->down.count > 0) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_STEP && !strcmp(part, eud->part)) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_STEP, part, ed); + if (eud) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + } + } + + px = rp->drag->val.x; + py = rp->drag->val.y; + rp->drag->val.x = ADD(px, MUL(FROM_DOUBLE(dx), + MUL(rp->drag->step.x, rp->part->dragable.x))); + rp->drag->val.y = ADD(py, MUL(FROM_DOUBLE(dy), + MUL(rp->drag->step.y, rp->part->dragable.y))); + rp->drag->val.x = CLAMP (rp->drag->val.x, ZERO, FROM_DOUBLE(1.0)); + rp->drag->val.y = CLAMP (rp->drag->val.y, ZERO, FROM_DOUBLE(1.0)); + if ((px == rp->drag->val.x) && (py == rp->drag->val.y)) return EINA_TRUE; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_dragable_pos_set(rp->edje, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(rp->edje, "drag,step", rp->part->name); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_drag_page(Evas_Object *obj, const char *part, double dx, double dy) +{ + Edje *ed; + Edje_Real_Part *rp; + FLOAT_T px, py; + Edje_User_Defined *eud; + Eina_List *l; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (!rp->drag) return EINA_FALSE; + if (rp->drag->down.count > 0) return EINA_FALSE; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_DRAG_PAGE && !strcmp(part, eud->part)) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + break; + } + if (!eud) + { + eud = _edje_user_definition_new(EDJE_USER_DRAG_PAGE, part, ed); + if (eud) + { + eud->u.drag_position.x = dx; + eud->u.drag_position.y = dy; + } + } + + px = rp->drag->val.x; + py = rp->drag->val.y; + rp->drag->val.x = ADD(px, MUL(FROM_DOUBLE(dx), MUL(rp->drag->page.x, rp->part->dragable.x))); + rp->drag->val.y = ADD(py, MUL(FROM_DOUBLE(dy), MUL(rp->drag->page.y, rp->part->dragable.y))); + rp->drag->val.x = CLAMP (rp->drag->val.x, ZERO, FROM_DOUBLE(1.0)); + rp->drag->val.y = CLAMP (rp->drag->val.y, ZERO, FROM_DOUBLE(1.0)); + if ((px == rp->drag->val.x) && (py == rp->drag->val.y)) return EINA_TRUE; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_dragable_pos_set(rp->edje, rp, rp->drag->val.x, rp->drag->val.y); + _edje_emit(rp->edje, "drag,page", rp->part->name); + return EINA_TRUE; +} + +void +_edje_box_init(void) +{ + +} + +void +_edje_box_shutdown(void) +{ + if (!_edje_box_layout_registry) + return; + + eina_rbtree_delete + (_edje_box_layout_registry, _edje_box_layout_external_free, NULL); + _edje_box_layout_registry = NULL; +} + +EAPI Eina_Bool +edje_object_part_box_append(Evas_Object *obj, const char *part, Evas_Object *child) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part) || (!child)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_BOX) return EINA_FALSE; + + r = _edje_real_part_box_append(rp, child); + + if (r) + { + Edje_User_Defined *eud; + + eud = _edje_user_definition_new(EDJE_USER_BOX_PACK, part, ed); + if (!eud) return r; + eud->u.box.child = child; + eud->u.box.index = -1; + + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + return r; +} + +EAPI Eina_Bool +edje_object_part_box_prepend(Evas_Object *obj, const char *part, Evas_Object *child) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_BOX) return EINA_FALSE; + + r = _edje_real_part_box_prepend(rp, child); + + if (r) + { + Edje_User_Defined *eud; + + eud = _edje_user_definition_new(EDJE_USER_BOX_PACK, part, ed); + if (!eud) return r; + eud->u.box.child = child; + + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + return r; +} + +EAPI Eina_Bool +edje_object_part_box_insert_before(Evas_Object *obj, const char *part, Evas_Object *child, const Evas_Object *reference) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_BOX) return EINA_FALSE; + + r = _edje_real_part_box_insert_before(rp, child, reference); + + if (r) + { + Edje_User_Defined *eud; + + eud = _edje_user_definition_new(EDJE_USER_BOX_PACK, part, ed); + if (!eud) return r; + eud->u.box.child = child; + + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + return r; +} + +EAPI Eina_Bool +edje_object_part_box_insert_at(Evas_Object *obj, const char *part, Evas_Object *child, unsigned int pos) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_BOX) return EINA_FALSE; + + r = _edje_real_part_box_insert_at(rp, child, pos); + + if (r) + { + Edje_User_Defined *eud; + + eud = _edje_user_definition_new(EDJE_USER_BOX_PACK, part, ed); + if (!eud) return r; + eud->u.box.child = child; + + evas_object_event_callback_add(child, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + return r; +} + +EAPI Evas_Object * +edje_object_part_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) +{ + Edje *ed; + Edje_Real_Part *rp; + Evas_Object *r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->type != EDJE_PART_TYPE_BOX) return NULL; + + r = _edje_real_part_box_remove(rp, child); + + if (r) + { + Edje_User_Defined *eud; + Eina_List *l; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_BOX_PACK && eud->u.box.child == child && !strcmp(eud->part, part)) + { + _edje_user_definition_free(eud); + return r; + } + } + return r; +} + +EAPI Evas_Object * +edje_object_part_box_remove_at(Evas_Object *obj, const char *part, unsigned int pos) +{ + Edje *ed; + Edje_Real_Part *rp; + Evas_Object *r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->type != EDJE_PART_TYPE_BOX) return NULL; + + r = _edje_real_part_box_remove_at(rp, pos); + + if (r) + { + Edje_User_Defined *eud; + Eina_List *l; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_BOX_PACK && eud->u.box.child == r && !strcmp(eud->part, part)) + { + _edje_user_definition_free(eud); + return r; + } + } + return r; +} + +EAPI Eina_Bool +edje_object_part_box_remove_all(Evas_Object *obj, const char *part, Eina_Bool clear) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_BOX) return EINA_FALSE; + + r = _edje_real_part_box_remove_all(rp, clear); + if (r) + { + Edje_User_Defined *eud; + Eina_List *ll, *l; + + EINA_LIST_FOREACH_SAFE(ed->user_defined, l, ll, eud) + if (eud->type == EDJE_USER_BOX_PACK && !strcmp(eud->part, part)) + { + _edje_user_definition_free(eud); + return r; + } + } + return r; +} + +EAPI Eina_List * +edje_object_access_part_list_get(const Evas_Object *obj) +{ + Edje *ed; + Eina_List *access_parts = NULL; + + ed = _edje_fetch(obj); + if ((!ed)) return NULL; + + unsigned int i; + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + rp = ed->table_parts[i]; + if (rp->part->access) + access_parts = eina_list_append(access_parts, rp->part->name); + } + + return access_parts; +} + +static void +_edje_box_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__) +{ + Edje_Real_Part *rp = data; + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +static void +_edje_box_child_add(Edje_Real_Part *rp, Evas_Object *child) +{ + evas_object_event_callback_add + (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp); + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +static void +_edje_box_child_remove(Edje_Real_Part *rp, Evas_Object *child) +{ + evas_object_event_callback_del_full + (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp); + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +Eina_Bool +_edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + Evas_Object_Box_Option *opt; + + opt = evas_object_box_append(rp->object, child_obj); + if (!opt) return EINA_FALSE; + + if (!_edje_box_layout_add_child(rp, child_obj)) + { + evas_object_box_remove(rp->object, child_obj); + return EINA_FALSE; + } + + _edje_box_child_add(rp, child_obj); + + return EINA_TRUE; +} + +Eina_Bool +_edje_real_part_box_prepend(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + Evas_Object_Box_Option *opt; + + opt = evas_object_box_prepend(rp->object, child_obj); + if (!opt) return EINA_FALSE; + + if (!_edje_box_layout_add_child(rp, child_obj)) + { + evas_object_box_remove(rp->object, child_obj); + return EINA_FALSE; + } + + _edje_box_child_add(rp, child_obj); + + return EINA_TRUE; +} + +Eina_Bool +_edje_real_part_box_insert_before(Edje_Real_Part *rp, Evas_Object *child_obj, const Evas_Object *ref) +{ + Evas_Object_Box_Option *opt; + + opt = evas_object_box_insert_before(rp->object, child_obj, ref); + if (!opt) return EINA_FALSE; + + if (!_edje_box_layout_add_child(rp, child_obj)) + { + evas_object_box_remove(rp->object, child_obj); + return EINA_FALSE; + } + + _edje_box_child_add(rp, child_obj); + + return EINA_TRUE; +} + +Eina_Bool +_edje_real_part_box_insert_at(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned int pos) +{ + Evas_Object_Box_Option *opt; + + opt = evas_object_box_insert_at(rp->object, child_obj, pos); + if (!opt) return EINA_FALSE; + + if (!_edje_box_layout_add_child(rp, child_obj)) + { + evas_object_box_remove(rp->object, child_obj); + return EINA_FALSE; + } + + _edje_box_child_add(rp, child_obj); + + return EINA_TRUE; +} + +Evas_Object * +_edje_real_part_box_remove(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + if (evas_object_data_get(child_obj, "\377 edje.box_item")) return NULL; + if (!evas_object_box_remove(rp->object, child_obj)) return NULL; + _edje_box_layout_remove_child(rp, child_obj); + _edje_box_child_remove(rp, child_obj); + return child_obj; +} + +Evas_Object * +_edje_real_part_box_remove_at(Edje_Real_Part *rp, unsigned int pos) +{ + Evas_Object_Box_Option *opt; + Evas_Object_Box_Data *priv; + Evas_Object *child_obj; + + priv = evas_object_smart_data_get(rp->object); + opt = eina_list_nth(priv->children, pos); + if (!opt) return NULL; + child_obj = opt->obj; + if (evas_object_data_get(child_obj, "\377 edje.box_item")) return NULL; + if (!evas_object_box_remove_at(rp->object, pos)) return NULL; + _edje_box_layout_remove_child(rp, child_obj); + _edje_box_child_remove(rp, child_obj); + return child_obj; +} + +Eina_Bool +_edje_real_part_box_remove_all(Edje_Real_Part *rp, Eina_Bool clear) +{ + Eina_List *children; + int i = 0; + + children = evas_object_box_children_get(rp->object); + while (children) + { + Evas_Object *child_obj = children->data; + if (evas_object_data_get(child_obj, "\377 edje.box_item")) + i++; + else + { + _edje_box_layout_remove_child(rp, child_obj); + _edje_box_child_remove(rp, child_obj); + if (!evas_object_box_remove_at(rp->object, i)) + return EINA_FALSE; + if (clear) + evas_object_del(child_obj); + } + children = eina_list_remove_list(children, children); + } + return EINA_TRUE; +} + +static void +_edje_table_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child, void *einfo __UNUSED__) +{ + Edje_User_Defined *eud; + Eina_List *l; + Edje_Real_Part *rp = data; + + EINA_LIST_FOREACH(rp->edje->user_defined, l, eud) + if (rp->part->type == EDJE_PART_TYPE_BOX) + { + if (eud->type == EDJE_USER_BOX_PACK && + eud->u.box.child == child && + !strcmp(rp->part->name, eud->part)) + { + _edje_user_definition_free(eud); + break; + } + } + else if (rp->part->type == EDJE_PART_TYPE_TABLE) + { + if (eud->type == EDJE_USER_TABLE_PACK && + eud->u.table.child == child && + !strcmp(rp->part->name, eud->part)) + { + _edje_user_definition_free(eud); + break; + } + } + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +static void +_edje_table_child_add(Edje_Real_Part *rp, Evas_Object *child) +{ + evas_object_event_callback_add + (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp); + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +static void +_edje_table_child_remove(Edje_Real_Part *rp, Evas_Object *child) +{ + evas_object_event_callback_del_full + (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp); + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + _edje_recalc(rp->edje); +} + +EAPI Evas_Object * +edje_object_part_table_child_get(const Evas_Object *obj, const char *part, unsigned int col, unsigned int row) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return NULL; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return NULL; + if (rp->part->type != EDJE_PART_TYPE_TABLE) return NULL; + + return evas_object_table_child_get(rp->object, col, row); +} + +EAPI Eina_Bool +edje_object_part_table_pack(Evas_Object *obj, const char *part, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) +{ + Edje *ed; + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_TABLE) return EINA_FALSE; + + r = _edje_real_part_table_pack(rp, child_obj, col, row, colspan, rowspan); + if (r) + { + eud = _edje_user_definition_new(EDJE_USER_TABLE_PACK, part, ed); + if (!eud) return r; + + eud->u.table.child = child_obj; + eud->u.table.col = col; + eud->u.table.row = row; + eud->u.table.colspan = colspan; + eud->u.table.rowspan = rowspan; + + evas_object_event_callback_add(child_obj, EVAS_CALLBACK_DEL, _edje_user_def_del_cb, eud); + } + return r; +} + +EAPI Eina_Bool +edje_object_part_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) +{ + Edje *ed; + Edje_Real_Part *rp; + Eina_Bool r; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_TABLE) return EINA_FALSE; + + r = _edje_real_part_table_unpack(rp, child_obj); + + if (r) + { + Edje_User_Defined *eud; + Eina_List *l; + + EINA_LIST_FOREACH(ed->user_defined, l, eud) + if (eud->type == EDJE_USER_TABLE_PACK && + eud->u.table.child == child_obj && + !strcmp(part, eud->part)) + { + _edje_user_definition_free(eud); + break; + } + } + + return r; +} + +EAPI Eina_Bool +edje_object_part_table_col_row_size_get(const Evas_Object *obj, const char *part, int *cols, int *rows) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_TABLE) return EINA_FALSE; + + evas_object_table_col_row_size_get(rp->object, cols, rows); + return EINA_TRUE; +} + +EAPI Eina_Bool +edje_object_part_table_clear(Evas_Object *obj, const char *part, Eina_Bool clear) +{ + Edje *ed; + Edje_Real_Part *rp; + + ed = _edje_fetch(obj); + if ((!ed) || (!part)) return EINA_FALSE; + + rp = _edje_real_part_recursive_get(ed, part); + if (!rp) return EINA_FALSE; + if (rp->part->type != EDJE_PART_TYPE_TABLE) return EINA_FALSE; + + _edje_real_part_table_clear(rp, clear); + return EINA_TRUE; +} + +static void +_edje_perspective_obj_del(void *data, __UNUSED__ Evas *e, __UNUSED__ Evas_Object *obj, __UNUSED__ void *event_info) +{ + Edje_Perspective *ps = data; + Evas_Object *o; + + EINA_LIST_FREE(ps->users, o) + { + Edje *ed; + + ed = evas_object_smart_data_get(o); + if (!ed) continue; + ed->persp = NULL; + ed->dirty = 1; + ed->recalc_call = 1; + _edje_recalc_do(ed); + } + free(ps); +} + +EAPI Edje_Perspective * +edje_perspective_new(Evas *e) +{ + Edje_Perspective *ps; + Evas_Coord vx, vy, vw, vh; + + if (!e) return NULL; + ps = calloc(1, sizeof(Edje_Perspective)); + ps->obj = evas_object_rectangle_add(e); + evas_object_data_set(ps->obj, "_edje_perspective", ps); + evas_object_event_callback_add(ps->obj, EVAS_CALLBACK_DEL, _edje_perspective_obj_del, ps); + evas_output_viewport_get(e, &vx, &vy, &vw, &vh); + ps->e = e; + ps->px = vx + (vw / 2); + ps->py = vy + (vh / 2); + ps->z0 = 0; + ps->foc = 1000; + return ps; +} + +EAPI void +edje_perspective_free(Edje_Perspective *ps) +{ + if (!ps) return; + evas_object_del(ps->obj); +} + +EAPI void +edje_perspective_set(Edje_Perspective *ps, Evas_Coord px, Evas_Coord py, Evas_Coord z0, Evas_Coord foc) +{ + Eina_List *l; + Evas_Object *o; + + if (!ps) return; + if ((ps->px == px) && (ps->py == py) && (ps->z0 == z0) && (ps->foc == foc)) return; + ps->px = px; + ps->py = py; + ps->z0 = z0; + ps->foc = foc; + EINA_LIST_FOREACH(ps->users, l, o) + { + Edje *ed; + + ed = evas_object_smart_data_get(o); + if (!ed) continue; + if (!ed->persp) + { + ed->dirty = 1; + ed->recalc_call = 1; + _edje_recalc_do(ed); + } + } + if (ps->global) + { + EINA_LIST_FOREACH(_edje_edjes, l, o) + { + Edje *ed; + + ed = evas_object_smart_data_get(o); + if (!ed) continue; + if (!ed->persp) + { + ed->dirty = 1; + ed->recalc_call = 1; + _edje_recalc_do(ed); + } + } + } +} + +EAPI void +edje_perspective_global_set(Edje_Perspective *ps, Eina_Bool global) +{ + Evas_Object *o; + Eina_List *l; + + if (!ps) return; + if (ps->global == global) return; + if (global) + { + o = evas_object_name_find(evas_object_evas_get(ps->obj), + "_edje_perspective"); + if (o) evas_object_name_set(o, NULL); + evas_object_name_set(ps->obj, "_edje_perspective"); + } + else + evas_object_name_set(ps->obj, NULL); + ps->global = global; + EINA_LIST_FOREACH(_edje_edjes, l, o) + { + Edje *ed; + + ed = evas_object_smart_data_get(o); + if (!ed) continue; + if (!ed->persp) + { + ed->dirty = 1; + ed->recalc_call = 1; + _edje_recalc_do(ed); + } + } +} + +EAPI Eina_Bool +edje_perspective_global_get(const Edje_Perspective *ps) +{ + if (!ps) return EINA_FALSE; + return ps->global; +} + +EAPI const Edje_Perspective * +edje_evas_global_perspective_get(const Evas *e) +{ + Evas_Object *obj; + + if (!e) return NULL; + obj = evas_object_name_find(e, "_edje_perspective"); + if (!obj) return NULL; + return evas_object_data_get(obj, "_edje_perspective"); +} + +EAPI void +edje_object_perspective_set(Evas_Object *obj, Edje_Perspective *ps) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return; + if (ed->persp == ps) return; + if (ed->persp != ps) + { + if (ed->persp) + ed->persp->users = eina_list_remove(ed->persp->users, obj); + } + ed->persp = ps; + if (ps) ps->users = eina_list_append(ps->users, obj); + ed->dirty = 1; + ed->recalc_call = 1; + _edje_recalc_do(ed); +} + +EAPI const Edje_Perspective * +edje_object_perspective_get(const Evas_Object *obj) +{ + Edje *ed; + + ed = evas_object_smart_data_get(obj); + if (!ed) return NULL; + return ed->persp; +} + +#define EDJE_PRELOAD_EMISSION "preload,done" +#define EDJE_PRELOAD_SOURCE NULL + +EAPI Eina_Bool +edje_object_preload(Evas_Object *obj, Eina_Bool cancel) +{ + Edje *ed; + int count; + unsigned int i; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + + _edje_recalc_do(ed); + + for (i = 0, count = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + Edje_Part *ep; + + rp = ed->table_parts[i]; + ep = rp->part; + + if (ep->type == EDJE_PART_TYPE_IMAGE || + (ep->type == EDJE_PART_TYPE_GROUP && rp->swallowed_object)) + count++; + } + + ed->preload_count = count; + + if (count > 0) + { + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + Edje_Part *ep; + + rp = ed->table_parts[i]; + ep = rp->part; + + if (ep->type == EDJE_PART_TYPE_IMAGE) + { + const char *file = NULL; + const char *key = NULL; + + evas_object_event_callback_del_full(rp->object, EVAS_CALLBACK_IMAGE_PRELOADED, _edje_object_image_preload_cb, ed); + + evas_object_image_file_get(rp->object, &file, &key); + if (!file && !key) + { + ed->preload_count--; + } + else + { + evas_object_event_callback_add(rp->object, EVAS_CALLBACK_IMAGE_PRELOADED, _edje_object_image_preload_cb, ed); + evas_object_image_preload(rp->object, cancel); + } + count--; + } + else if (ep->type == EDJE_PART_TYPE_GROUP) + { + if (rp->swallowed_object) { + char *tmp; + + if (rp->part->name) + { + tmp = alloca(strlen(rp->part->name) + 2); + sprintf(tmp, "%s:", rp->part->name); + + edje_object_signal_callback_del(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb); + edje_object_signal_callback_add(obj, EDJE_PRELOAD_EMISSION, tmp, _edje_object_signal_preload_cb, ed); + edje_object_preload(rp->swallowed_object, cancel); + } + else + { + ed->preload_count--; + } + + count--; + } + } + } + } + else + { + _edje_emit(ed, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE); + } + + return EINA_TRUE; +} + +EAPI void +edje_object_update_hints_set(Evas_Object *obj, Eina_Bool update) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return ; + if (ed->update_hints == !!update) return ; + + ed->update_hints = !!update; + if (update) + { + ed->recalc_hints = 1; + _edje_recalc(ed); + } +} + +EAPI Eina_Bool +edje_object_update_hints_get(Evas_Object *obj) +{ + Edje *ed; + + ed = _edje_fetch(obj); + if (!ed) return EINA_FALSE; + + return ed->update_hints; +} + +Eina_Bool +_edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan) +{ + Eina_Bool ret = + evas_object_table_pack(rp->object, child_obj, col, row, colspan, rowspan); + + _edje_table_child_add(rp, child_obj); + + return ret; +} + +Eina_Bool +_edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj) +{ + Eina_Bool ret = evas_object_table_unpack(rp->object, child_obj); + + if (ret) + _edje_table_child_remove(rp, child_obj); + + return ret; +} + +void +_edje_real_part_table_clear(Edje_Real_Part *rp, Eina_Bool clear) +{ + Eina_List *children; + + children = evas_object_table_children_get(rp->object); + while (children) + { + Evas_Object *child_obj = children->data; + + _edje_table_child_remove(rp, child_obj); + if (!evas_object_data_get(child_obj, "\377 edje.table_item")) + { + evas_object_table_unpack(rp->object, child_obj); + if (clear) + evas_object_del(child_obj); + } + children = eina_list_remove_list(children, children); + } +} + +Edje_Real_Part * +_edje_real_part_recursive_get(const Edje *ed, const char *part) +{ + Edje_Real_Part *rp; + char **path; + + path = eina_str_split(part, EDJE_PART_PATH_SEPARATOR_STRING, 0); + if (!path) return NULL; + + rp = _edje_real_part_recursive_get_helper(ed, path); + + free(*path); + free(path); + return rp; +} + +Evas_Object * +_edje_children_get(Edje_Real_Part *rp, const char *partid) +{ + Evas_Object *child; + Eina_List *l; + long int v; + char *p; + + if (!partid) return NULL; + + switch (rp->part->type) + { + case EDJE_PART_TYPE_EXTERNAL: + return _edje_external_content_get(rp->swallowed_object, partid); + case EDJE_PART_TYPE_BOX: + l = evas_object_box_children_get(rp->object); + break; + case EDJE_PART_TYPE_TABLE: + l = evas_object_table_children_get(rp->object); + break; + default: + return NULL; + } + + v = strtol(partid, &p, 10); + if ((*p == '\0') && (v >= 0)) + { + child = eina_list_nth(l, v); + } + else + { + Evas_Object *cur; + child = NULL; + EINA_LIST_FREE(l, cur) + { + const char *name = evas_object_name_get(cur); + if ((name) && (!strcmp(name, partid))) + { + child = cur; + break; + } + } + } + eina_list_free(l); + + return child; +} + +/* rebuild alternative path */ +char * +_edje_merge_path(const char *alias, char * const *path) +{ + char *tmp; + unsigned int length = 1; + unsigned int alias_length; + unsigned int i; + + if (!alias) return NULL; + + alias_length = strlen(alias); + + for (i = 0; path[i]; i++) + length += strlen(path[i]) + 1; + + tmp = malloc(sizeof (char) * (length + alias_length + 2)); + memcpy(tmp, alias, alias_length); + tmp[alias_length] = '\0'; + + for (i = 0; path[i]; i++) + { + strcat(tmp, EDJE_PART_PATH_SEPARATOR_STRING); + strcat(tmp, path[i]); + } + + return tmp; +} + + +Edje_Real_Part * +_edje_real_part_recursive_get_helper(const Edje *ed, char **path) +{ + Edje_Real_Part *rp; + Evas_Object *child; + char *idx = NULL; + + if (!path[0]) + return NULL; + + if (ed->collection && ed->collection->alias) + { + char *alias; + + alias = _edje_merge_path(eina_hash_find(ed->collection->alias, path[0]), path + 1); + if (alias) { + rp = _edje_real_part_recursive_get(ed, alias); + free(alias); + return rp; + } + } + + //printf(" lookup: %s on %s\n", path[0], ed->parent ? ed->parent : "-"); + idx = strchr(path[0], EDJE_PART_PATH_SEPARATOR_INDEXL); + if (idx) + { + char *end; + + end = strchr(idx + 1, EDJE_PART_PATH_SEPARATOR_INDEXR); + if (end) + { + *end = '\0'; + *idx = '\0'; + idx++; + } + } + + rp = _edje_real_part_get(ed, path[0]); + if (!path[1] && !idx) return rp; + if (!rp) return NULL; + + switch (rp->part->type) + { + case EDJE_PART_TYPE_GROUP: + if (!rp->swallowed_object) return NULL; + ed = _edje_fetch(rp->swallowed_object); + if (!ed) return NULL; + path++; + return _edje_real_part_recursive_get_helper(ed, path); + case EDJE_PART_TYPE_BOX: + case EDJE_PART_TYPE_TABLE: + case EDJE_PART_TYPE_EXTERNAL: + if (!idx) return rp; + path++; + + child = _edje_children_get(rp, idx); + + ed = _edje_fetch(child); + + if (!ed) return NULL; + return _edje_real_part_recursive_get_helper(ed, path); + default: + return NULL; + } +} + +/* Private Routines */ +Edje_Real_Part * +_edje_real_part_get(const Edje *ed, const char *part) +{ + unsigned int i; + + if (!part) return NULL; + + for (i = 0; i < ed->table_parts_size; i++) + { + Edje_Real_Part *rp; + + rp = ed->table_parts[i]; + if ((rp->part->name) && (!strcmp(rp->part->name, part))) return rp; + } + return NULL; +} + +Edje_Color_Class * +_edje_color_class_find(Edje *ed, const char *color_class) +{ + Edje_Color_Class *cc = NULL; + + if ((!ed) || (!color_class)) return NULL; + + /* first look through the object scope */ + cc = eina_hash_find(ed->color_classes, color_class); + if (cc) return cc; + + /* next look through the global scope */ + cc = eina_hash_find(_edje_color_class_hash, color_class); + if (cc) return cc; + + /* finally, look through the file scope */ + cc = eina_hash_find(ed->file->color_hash, color_class); + if (cc) return cc; + + return NULL; +} + +void +_edje_color_class_member_add(Edje *ed, const char *color_class) +{ + _edje_class_member_add(ed, &ed->members.color_class, &_edje_color_class_member_hash, color_class); +} + +void +_edje_color_class_member_direct_del(const char *color_class, void *l) +{ + _edje_class_member_direct_del(color_class, l, _edje_color_class_member_hash); +} + +void +_edje_color_class_member_del(Edje *ed, const char *color_class) +{ + if ((!ed) || (!color_class)) return; + + _edje_class_member_del(&ed->members.color_class, &_edje_color_class_member_hash, color_class); +} + +void +_edje_color_class_members_free(void) +{ + if (!_edje_color_class_member_hash) return; + eina_hash_foreach(_edje_color_class_member_hash, member_list_free, NULL); + eina_hash_free(_edje_color_class_member_hash); + _edje_color_class_member_hash = NULL; +} + +static Eina_Bool +color_class_hash_list_free(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED__, void *data, void *fdata __UNUSED__) +{ + Edje_Color_Class *cc; + + cc = data; + if (cc->name) eina_stringshare_del(cc->name); + free(cc); + return EINA_TRUE; +} + +void +_edje_color_class_hash_free(void) +{ + if (!_edje_color_class_hash) return; + eina_hash_foreach(_edje_color_class_hash, color_class_hash_list_free, NULL); + eina_hash_free(_edje_color_class_hash); + _edje_color_class_hash = NULL; +} + +void +_edje_color_class_on_del(Edje *ed, Edje_Part *ep) +{ + unsigned int i; + + if ((ep->default_desc) && (ep->default_desc->color_class)) + _edje_color_class_member_del(ed, ep->default_desc->color_class); + + for (i = 0; i < ep->other.desc_count; ++i) + if (ep->other.desc[i]->color_class) + _edje_color_class_member_del(ed, ep->other.desc[i]->color_class); +} + +Edje_Text_Class * +_edje_text_class_find(Edje *ed, const char *text_class) +{ + Eina_List *l; + Edje_Text_Class *tc; + + if ((!ed) || (!text_class)) return NULL; + EINA_LIST_FOREACH(ed->text_classes, l, tc) + if ((tc->name) && (!strcmp(text_class, tc->name))) return tc; + return eina_hash_find(_edje_text_class_hash, text_class); +} + +void +_edje_text_class_member_direct_del(const char *text_class, + void *l) +{ + _edje_class_member_direct_del(text_class, l, _edje_text_class_member_hash); +} + +void +_edje_text_class_member_add(Edje *ed, const char *text_class) +{ + _edje_class_member_add(ed, &ed->members.text_class, &_edje_text_class_member_hash, text_class); +} + +void +_edje_text_class_member_del(Edje *ed, const char *text_class) +{ + if ((!ed) || (!text_class)) return; + + _edje_class_member_del(&ed->members.text_class, &_edje_text_class_member_hash, text_class); +} + +void +_edje_text_class_members_free(void) +{ + _edje_class_members_free(&_edje_text_class_member_hash); +} + +static Eina_Bool +text_class_hash_list_free(const Eina_Hash *hash __UNUSED__, const void *key __UNUSED__, void *data, void *fdata __UNUSED__) +{ + Edje_Text_Class *tc; + + tc = data; + if (tc->name) eina_stringshare_del(tc->name); + if (tc->font) eina_stringshare_del(tc->font); + free(tc); + return EINA_TRUE; +} + +void +_edje_text_class_hash_free(void) +{ + if (!_edje_text_class_hash) return; + eina_hash_foreach(_edje_text_class_hash, text_class_hash_list_free, NULL); + eina_hash_free(_edje_text_class_hash); + _edje_text_class_hash = NULL; +} + +Edje * +_edje_fetch(const Evas_Object *obj) +{ + Edje *ed; + + if (!evas_object_smart_type_check(obj, "edje")) + return NULL; + ed = evas_object_smart_data_get(obj); + if ((ed) && (ed->delete_me)) return NULL; + return ed; +} + +int +_edje_freeze(Edje *ed) +{ + ed->freeze++; +// printf("FREEZE %i\n", ed->freeze); + return ed->freeze; +} + +int +_edje_thaw(Edje *ed) +{ + ed->freeze--; + if (ed->freeze < 0) + { +// printf("-------------########### OVER THAW\n"); + ed->freeze = 0; + } + if ((ed->freeze == 0) && (ed->recalc)) + { +// printf("thaw recalc\n"); + _edje_recalc(ed); + } + return ed->freeze; +} + +int +_edje_block(Edje *ed) +{ + _edje_ref(ed); + ed->block++; + return ed->block; +} + +int +_edje_unblock(Edje *ed) +{ + int ret = 0; + + if (!ed) return ret; + + ed->block--; + if (ed->block == 0) ed->block_break = 0; + ret = ed->block; + _edje_unref(ed); + return ret; +} + +int +_edje_block_break(Edje *ed) +{ + if (ed->block_break) return 1; + return 0; +} + +void +_edje_block_violate(Edje *ed) +{ + if (ed->block > 0) ed->block_break = 1; +} + +void +_edje_object_part_swallow_free_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) +{ + Edje_Real_Part *rp; + Edje_User_Defined *eud; + Eina_List *l; + + rp = data; + + EINA_LIST_FOREACH(rp->edje->user_defined, l, eud) + if (eud->type == EDJE_USER_SWALLOW && eud->u.swallow.child == obj) + { + _edje_user_definition_free(eud); + break; + } + + return; +} + +static void +_edje_real_part_swallow_hints_update(Edje_Real_Part *rp) +{ + const char *type; + + type = evas_object_type_get(rp->swallowed_object); + + rp->swallow_params.min.w = 0; + rp->swallow_params.min.h = 0; + rp->swallow_params.max.w = -1; + rp->swallow_params.max.h = -1; + if ((type) && (!strcmp(type, "edje"))) + { + Evas_Coord w, h; + +#if 0 + edje_object_size_min_get(rp->swallowed_object, &w, &h); + rp->swallow_params.min.w = w; + rp->swallow_params.min.h = h; +#endif + edje_object_size_max_get(rp->swallowed_object, &w, &h); + rp->swallow_params.max.w = w; + rp->swallow_params.max.h = h; + } + else if ((type) && ((!strcmp(type, "text")) || (!strcmp(type, "polygon")) || + (!strcmp(type, "line")))) + { + Evas_Coord w, h; + + evas_object_geometry_get(rp->swallowed_object, NULL, NULL, &w, &h); +#if 0 + rp->swallow_params.min.w = w; + rp->swallow_params.min.h = h; +#endif + rp->swallow_params.max.w = w; + rp->swallow_params.max.h = h; + } + { + Evas_Coord w1, h1, w2, h2, aw, ah; + Evas_Aspect_Control am; + + evas_object_size_hint_min_get(rp->swallowed_object, &w1, &h1); + evas_object_size_hint_max_get(rp->swallowed_object, &w2, &h2); + evas_object_size_hint_aspect_get(rp->swallowed_object, &am, &aw, &ah); + rp->swallow_params.min.w = w1; + rp->swallow_params.min.h = h1; + if (w2 > 0) rp->swallow_params.max.w = w2; + if (h2 > 0) rp->swallow_params.max.h = h2; + switch (am) + { + case EVAS_ASPECT_CONTROL_NONE: + rp->swallow_params.aspect.mode = EDJE_ASPECT_CONTROL_NONE; + break; + case EVAS_ASPECT_CONTROL_NEITHER: + rp->swallow_params.aspect.mode = EDJE_ASPECT_CONTROL_NEITHER; + break; + case EVAS_ASPECT_CONTROL_HORIZONTAL: + rp->swallow_params.aspect.mode = EDJE_ASPECT_CONTROL_HORIZONTAL; + break; + case EVAS_ASPECT_CONTROL_VERTICAL: + rp->swallow_params.aspect.mode = EDJE_ASPECT_CONTROL_VERTICAL; + break; + case EVAS_ASPECT_CONTROL_BOTH: + rp->swallow_params.aspect.mode = EDJE_ASPECT_CONTROL_BOTH; + break; + default: + break; + } + rp->swallow_params.aspect.w = aw; + rp->swallow_params.aspect.h = ah; + evas_object_data_set(rp->swallowed_object, "\377 edje.swallowing_part", rp); + } + +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif +} + +void +_edje_object_part_swallow_changed_hints_cb(void *data, __UNUSED__ Evas *e, __UNUSED__ Evas_Object *obj, __UNUSED__ void *event_info) +{ + Edje_Real_Part *rp; + + rp = data; + _edje_real_part_swallow_hints_update(rp); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + _edje_recalc(rp->edje); + return; +} + +void +_edje_real_part_swallow(Edje_Real_Part *rp, + Evas_Object *obj_swallow, + Eina_Bool hints_update) +{ + if (rp->swallowed_object) + { + if (rp->swallowed_object != obj_swallow) + { + edje_object_part_unswallow(rp->edje->obj, rp->swallowed_object); + } + else + { + if (hints_update) + _edje_real_part_swallow_hints_update(rp); + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + rp->edje->recalc_hints = 1; + _edje_recalc(rp->edje); + return; + } + } +#ifdef EDJE_CALC_CACHE + rp->invalidate = 1; +#endif + if (!obj_swallow) return; + rp->swallowed_object = obj_swallow; + evas_object_smart_member_add(rp->swallowed_object, rp->edje->obj); + if (rp->clip_to) + evas_object_clip_set(rp->swallowed_object, rp->clip_to->object); + else evas_object_clip_set(rp->swallowed_object, rp->edje->base.clipper); + evas_object_stack_above(rp->swallowed_object, rp->object); + evas_object_event_callback_add(rp->swallowed_object, + EVAS_CALLBACK_DEL, + _edje_object_part_swallow_free_cb, + rp); + evas_object_event_callback_add(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp); + + if (hints_update) + _edje_real_part_swallow_hints_update(rp); + + if (rp->part->mouse_events) + { + _edje_callbacks_add(obj_swallow, rp->edje, rp); + if (rp->part->repeat_events) + evas_object_repeat_events_set(obj_swallow, 1); + if (rp->part->pointer_mode != EVAS_OBJECT_POINTER_MODE_AUTOGRAB) + evas_object_pointer_mode_set(obj_swallow, rp->part->pointer_mode); + evas_object_pass_events_set(obj_swallow, 0); + } + else + evas_object_pass_events_set(obj_swallow, 1); + _edje_callbacks_focus_add(rp->swallowed_object, rp->edje, rp); + + if (rp->part->precise_is_inside) + evas_object_precise_is_inside_set(obj_swallow, 1); + + rp->edje->dirty = 1; + rp->edje->recalc_call = 1; + rp->edje->recalc_hints = 1; + _edje_recalc(rp->edje); +} + +void +_edje_real_part_swallow_clear(Edje_Real_Part *rp) +{ + evas_object_smart_member_del(rp->swallowed_object); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_DEL, + _edje_object_part_swallow_free_cb, + rp); + evas_object_event_callback_del_full(rp->swallowed_object, + EVAS_CALLBACK_CHANGED_SIZE_HINTS, + _edje_object_part_swallow_changed_hints_cb, + rp); + evas_object_clip_unset(rp->swallowed_object); + evas_object_data_del(rp->swallowed_object, "\377 edje.swallowing_part"); + if (rp->part->mouse_events) + _edje_callbacks_del(rp->swallowed_object, rp->edje); + _edje_callbacks_focus_del(rp->swallowed_object, rp->edje); + rp->swallowed_object = NULL; +} + +static void +_edje_object_preload(Edje *ed) +{ + ed->preload_count--; + if (!ed->preload_count) + _edje_emit(ed, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE); +} + +static void +_edje_object_image_preload_cb(void *data, __UNUSED__ Evas *e, Evas_Object *obj, __UNUSED__ void *event_info) +{ + Edje *ed = data; + + evas_object_event_callback_del_full(obj, EVAS_CALLBACK_IMAGE_PRELOADED, _edje_object_image_preload_cb, ed); + _edje_object_preload(ed); +} + +static void +_edje_object_signal_preload_cb(void *data, Evas_Object *obj, __UNUSED__ const char *emission, __UNUSED__ const char *source) +{ + Edje *ed = data; + + edje_object_signal_callback_del(obj, EDJE_PRELOAD_EMISSION, EDJE_PRELOAD_SOURCE, _edje_object_signal_preload_cb); + _edje_object_preload(ed); +} + +/** + * @internal + * + * for edje_cc + */ +EAPI void +_edje_program_remove(Edje_Part_Collection *edc, Edje_Program *p) +{ + Edje_Program ***array; + unsigned int *count; + unsigned int i; + + if (!p->signal && !p->source) + { + array = &edc->programs.nocmp; + count = &edc->programs.nocmp_count; + } + else if (p->signal && !strpbrk(p->signal, "*?[\\") + && p->source && !strpbrk(p->source, "*?[\\")) + { + array = &edc->programs.strcmp; + count = &edc->programs.strcmp_count; + } + else if (p->signal && edje_program_is_strncmp(p->signal) + && p->source && edje_program_is_strncmp(p->source)) + { + array = &edc->programs.strncmp; + count = &edc->programs.strncmp_count; + } + else if (p->signal && edje_program_is_strrncmp(p->signal) + && p->source && edje_program_is_strrncmp(p->source)) + { + array = &edc->programs.strrncmp; + count = &edc->programs.strrncmp_count; + } + else + { + array = &edc->programs.fnmatch; + count = &edc->programs.fnmatch_count; + } + + for (i = 0; i < *count; ++i) + if ((*array)[i] == p) + { + memmove(*array + i, *array + i + 1, sizeof (Edje_Program *) * (*count - i -1)); + (*count)--; + break; + } +} + +/** + * @internal + * + * for edje_cc + */ +EAPI void +_edje_program_insert(Edje_Part_Collection *edc, Edje_Program *p) +{ + Edje_Program ***array; + unsigned int *count; + + if (!p->signal && !p->source) + { + array = &edc->programs.nocmp; + count = &edc->programs.nocmp_count; + } + else if (p->signal && !strpbrk(p->signal, "*?[\\") + && p->source && !strpbrk(p->source, "*?[\\")) + { + array = &edc->programs.strcmp; + count = &edc->programs.strcmp_count; + } + else if (p->signal && edje_program_is_strncmp(p->signal) + && p->source && edje_program_is_strncmp(p->source)) + { + array = &edc->programs.strncmp; + count = &edc->programs.strncmp_count; + } + else if (p->signal && edje_program_is_strrncmp(p->signal) + && p->source && edje_program_is_strrncmp(p->source)) + { + array = &edc->programs.strrncmp; + count = &edc->programs.strrncmp_count; + } + else + { + array = &edc->programs.fnmatch; + count = &edc->programs.fnmatch_count; + } + + *array = realloc(*array, sizeof (Edje_Program *) * (*count + 1)); + (*array)[(*count)++] = p; +} + +const char * +edje_string_get(const Edje_String *es) +{ + /* FIXME: Handle localization here */ + if (!es) return NULL; + return es->str; +} + +const char * +edje_string_id_get(const Edje_String *es) +{ + /* FIXME: Handle localization here */ + if (!es) return NULL; + return es->str; +} + +static void +_cb_subobj_del(void *data, __UNUSED__ Evas *e, Evas_Object *obj, __UNUSED__ void *event_info) +{ + Edje *ed = data; + _edje_subobj_unregister(ed, obj); +} + +void +_edje_subobj_register(Edje *ed, Evas_Object *ob) +{ + ed->subobjs = eina_list_append(ed->subobjs, ob); + evas_object_event_callback_add(ob, EVAS_CALLBACK_DEL, + _cb_subobj_del, ed); +} + +void +_edje_subobj_unregister(Edje *ed, Evas_Object *obj) +{ + ed->subobjs = eina_list_remove(ed->subobjs, obj); + evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL, + _cb_subobj_del, ed); +} + +/* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/ diff --git a/src/lib/edje_var.c b/src/lib/edje_var.c new file mode 100644 index 0000000..c6c83b1 --- /dev/null +++ b/src/lib/edje_var.c @@ -0,0 +1,1093 @@ +#include "edje_private.h" + +static Eina_Bool _edje_var_timer_cb(void *data); +static Eina_Bool _edje_var_anim_cb(void *data); + +static Ecore_Animator *_edje_animator = NULL; +static Eina_List *_edje_anim_list = NULL; + +static Eina_Bool +_edje_var_timer_cb(void *data) +{ + Edje_Var_Timer *et; + Edje *ed; + Embryo_Function fn; + + et = data; + if (!et) return ECORE_CALLBACK_CANCEL; + ed = et->edje; +// _edje_embryo_script_reset(ed); + embryo_program_vm_push(ed->collection->script); + _edje_embryo_globals_init(ed); + embryo_parameter_cell_push(ed->collection->script, (Embryo_Cell)et->val); + ed->var_pool->timers = eina_list_remove(ed->var_pool->timers, et); + fn = et->func; + free(et); + { + void *pdata; + int ret; + + pdata = embryo_program_data_get(ed->collection->script); + embryo_program_data_set(ed->collection->script, ed); + embryo_program_max_cycle_run_set(ed->collection->script, 5000000); + ret = embryo_program_run(ed->collection->script, fn); + if (ret == EMBRYO_PROGRAM_FAIL) + { + ERR("ERROR with embryo script (timer callback). " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ERROR: '%s'", + ed->collection->part, + ed->file->path, + embryo_error_string_get(embryo_program_error_get(ed->collection->script))); + } + else if (ret == EMBRYO_PROGRAM_TOOLONG) + { + ERR("ERROR with embryo script (timer callback). " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ERROR: 'Script exceeded maximum allowed cycle count of %i'", + ed->collection->part, + ed->file->path, + embryo_program_max_cycle_run_get(ed->collection->script)); + } + embryo_program_data_set(ed->collection->script, pdata); + embryo_program_vm_pop(ed->collection->script); + _edje_recalc(ed); + } + return ECORE_CALLBACK_CANCEL; +} + +static Eina_Bool +_edje_var_anim_cb(void *data __UNUSED__) +{ + Eina_List *l, *tl = NULL; + double t; + const void *tmp; + + t = ecore_loop_time_get(); + EINA_LIST_FOREACH(_edje_anim_list, l, tmp) + tl = eina_list_append(tl, tmp); + while (tl) + { + Edje *ed; + Eina_List *tl2; + Edje_Var_Animator *ea; + + ed = eina_list_data_get(tl); + _edje_ref(ed); + _edje_block(ed); + _edje_freeze(ed); + tl = eina_list_remove(tl, ed); + if (!ed->var_pool) continue; + tl2 = NULL; + EINA_LIST_FOREACH(ed->var_pool->animators, l, tmp) + tl2 = eina_list_append(tl2, tmp); + ed->var_pool->walking_list++; + while (tl2) + { + ea = eina_list_data_get(tl2); + if ((ed->var_pool) && (!ea->delete_me)) + { + if ((!ed->paused) && (!ed->delete_me)) + { + Embryo_Function fn; + float v; + int ret; + + v = (t - ea->start) / ea->len; + if (v > 1.0) v= 1.0; +// _edje_embryo_script_reset(ed); + embryo_program_vm_push(ed->collection->script); + _edje_embryo_globals_init(ed); + embryo_parameter_cell_push(ed->collection->script, (Embryo_Cell)ea->val); + embryo_parameter_cell_push(ed->collection->script, EMBRYO_FLOAT_TO_CELL(v)); + fn = ea->func; + { + void *pdata; + + pdata = embryo_program_data_get(ed->collection->script); + embryo_program_data_set(ed->collection->script, ed); + embryo_program_max_cycle_run_set(ed->collection->script, 5000000); + ret = embryo_program_run(ed->collection->script, fn); + if (ret == EMBRYO_PROGRAM_FAIL) + { + ERR("ERROR with embryo script (anim callback). " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ERROR: '%s'", + ed->collection->part, + ed->file->path, + embryo_error_string_get(embryo_program_error_get(ed->collection->script))); + } + else if (ret == EMBRYO_PROGRAM_TOOLONG) + { + ERR("ERROR with embryo script (anim callback). " + "OBJECT NAME: '%s', " + "OBJECT FILE: '%s', " + "ERROR: 'Script exceeded maximum allowed cycle count of %i'", + ed->collection->part, + ed->file->path, + embryo_program_max_cycle_run_get(ed->collection->script)); + } + embryo_program_data_set(ed->collection->script, pdata); + embryo_program_vm_pop(ed->collection->script); + _edje_recalc(ed); + } + if (v == 1.0) ea->delete_me = 1; + } + } + tl2 = eina_list_remove(tl2, ea); + if (ed->block_break) + { + eina_list_free(tl2); + break; + } + } + ed->var_pool->walking_list--; + EINA_LIST_FOREACH(ed->var_pool->animators, l, ea) + { + if (ea->delete_me) + { + l = eina_list_next(l); + ed->var_pool->animators = eina_list_remove(ed->var_pool->animators, ea); + free(ea); + } + else + l = eina_list_next(l); + } + if (!ed->var_pool->animators) + _edje_anim_list = eina_list_remove(_edje_anim_list, ed); + _edje_unblock(ed); + _edje_thaw(ed); + _edje_unref(ed); + } + if (!_edje_anim_list) + { + if (_edje_animator) + { + ecore_animator_del(_edje_animator); + _edje_animator = NULL; + } + } + return !!_edje_animator; +} + +Edje_Var * +_edje_var_new(void) +{ + return calloc(1, sizeof(Edje_Var)); +} + +void +_edje_var_free(Edje_Var *var) +{ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + free(var->data.s.v); + } + } + free(var); +} + +void +_edje_var_init(Edje *ed) +{ + if (!ed) return; + if (!ed->collection) return; + if (!ed->collection->script) return; + if (ed->var_pool) return; + ed->var_pool = calloc(1, sizeof(Edje_Var_Pool)); + if (!ed->var_pool) return; + embryo_program_vm_push(ed->collection->script); + ed->var_pool->size = embryo_program_variable_count_get(ed->collection->script); + embryo_program_vm_pop(ed->collection->script); + if (ed->var_pool->size > 0) + ed->var_pool->vars = calloc(1, sizeof(Edje_Var) * ed->var_pool->size); +} + +void +_edje_var_shutdown(Edje *ed) +{ + if (!ed->var_pool) return; + if (ed->var_pool->vars) + { + int i; + + for (i = 0; i < ed->var_pool->size; i++) + { + if (ed->var_pool->vars[i].type == EDJE_VAR_STRING) + { + if (ed->var_pool->vars[i].data.s.v) + { + free(ed->var_pool->vars[i].data.s.v); + ed->var_pool->vars[i].data.s.v = NULL; + } + } + else if (ed->var_pool->vars[i].type == EDJE_VAR_LIST) + { + while (ed->var_pool->vars[i].data.l.v) + { + _edje_var_free(eina_list_data_get(ed->var_pool->vars[i].data.l.v)); + ed->var_pool->vars[i].data.l.v = eina_list_remove_list(ed->var_pool->vars[i].data.l.v, ed->var_pool->vars[i].data.l.v); + } + } + } + free(ed->var_pool->vars); + } + while (ed->var_pool->timers) + { + Edje_Var_Timer *et; + + et = eina_list_data_get(ed->var_pool->timers); + ecore_timer_del(et->timer); + free(et); + ed->var_pool->timers = eina_list_remove(ed->var_pool->timers, et); + } + if (ed->var_pool->animators) + { + _edje_anim_list = eina_list_remove(_edje_anim_list, ed); + if (!_edje_anim_list) + { + if (_edje_animator) + { + ecore_animator_del(_edje_animator); + _edje_animator = NULL; + } + } + } + while (ed->var_pool->animators) + { + Edje_Var_Animator *ea; + + ea = eina_list_data_get(ed->var_pool->animators); + free(ea); + ed->var_pool->animators = eina_list_remove(ed->var_pool->animators, ea); + } + free(ed->var_pool); + ed->var_pool = NULL; +} + +int +_edje_var_string_id_get(Edje *ed, const char *string) +{ + Embryo_Cell cell, *cptr; + + if (!ed) return 0; + if (!ed->collection) return 0; + if (!ed->collection->script) return 0; + if (!string) return 0; + cell = embryo_program_variable_find(ed->collection->script, (char *)string); + if (cell == EMBRYO_CELL_NONE) return 0; + cptr = embryo_data_address_get(ed->collection->script, cell); + if (!cptr) return 0; + return (int)(*cptr); +} + +int +_edje_var_var_int_get(Edje *ed __UNUSED__, Edje_Var *var) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + double f; + + f = atof(var->data.s.v); + free(var->data.s.v); + var->data.s.v = NULL; + var->data.i.v = (int)f; + } + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_FLOAT) + { + var->data.i.v = (int)(var->data.f.v); + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_NONE) + { + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_LIST) + { + return 0; + } + else if (var->type == EDJE_VAR_HASH) + { + return 0; + } + return var->data.i.v; +} + +void +_edje_var_var_int_set(Edje *ed __UNUSED__, Edje_Var *var, int v) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + free(var->data.s.v); + var->data.s.v = NULL; + } + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_FLOAT) + { + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_NONE) + { + var->type = EDJE_VAR_INT; + } + else if (var->type == EDJE_VAR_LIST) + { + return; + } + else if (var->type == EDJE_VAR_HASH) + { + return; + } + var->data.i.v = v; +} + +double +_edje_var_var_float_get(Edje *ed __UNUSED__, Edje_Var *var) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + double f; + + f = atof(var->data.s.v); + free(var->data.s.v); + var->data.s.v = NULL; + var->data.f.v = f; + } + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_INT) + { + var->data.f.v = (double)(var->data.i.v); + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_NONE) + { + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_LIST) + { + return 0.0; + } + else if (var->type == EDJE_VAR_HASH) + { + return 0.0; + } + return var->data.f.v; +} + +void +_edje_var_var_float_set(Edje *ed __UNUSED__, Edje_Var *var, double v) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + free(var->data.s.v); + var->data.s.v = NULL; + } + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_INT) + { + var->data.f.v = 0; + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_NONE) + { + var->type = EDJE_VAR_FLOAT; + } + else if (var->type == EDJE_VAR_LIST) + { + return; + } + else if (var->type == EDJE_VAR_HASH) + { + return; + } + var->data.f.v = v; +} + +const char * +_edje_var_var_str_get(Edje *ed __UNUSED__, Edje_Var *var) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_INT) + { + char buf[64]; + + snprintf(buf, sizeof(buf), "%i", var->data.i.v); + var->data.s.v = strdup(buf); + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_FLOAT) + { + char buf[64]; + + snprintf(buf, sizeof(buf), "%f", var->data.f.v); + var->data.s.v = strdup(buf); + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_NONE) + { + var->data.s.v = strdup(""); + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_LIST) + { + return NULL; + } + else if (var->type == EDJE_VAR_HASH) + { + return NULL; + } + return var->data.s.v; +} + +void +_edje_var_var_str_set(Edje *ed __UNUSED__, Edje_Var *var, const char *str) +{ + /* auto-cast */ + if (var->type == EDJE_VAR_STRING) + { + if (var->data.s.v) + { + free(var->data.s.v); + var->data.s.v = NULL; + } + } + else if (var->type == EDJE_VAR_INT) + { + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_FLOAT) + { + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_NONE) + { + var->type = EDJE_VAR_STRING; + } + else if (var->type == EDJE_VAR_LIST) + { + return; + } + else if (var->type == EDJE_VAR_HASH) + { + return; + } + var->data.s.v = strdup(str); +} + +int +_edje_var_int_get(Edje *ed, int id) +{ + if (!ed) return 0; + if (!ed->var_pool) return 0; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return 0; + return _edje_var_var_int_get(ed, &(ed->var_pool->vars[id])); +} + +void +_edje_var_int_set(Edje *ed, int id, int v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + _edje_var_var_int_set(ed, &(ed->var_pool->vars[id]), v); +} + +double +_edje_var_float_get(Edje *ed, int id) +{ + if (!ed) return 0; + if (!ed->var_pool) return 0; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return 0; + return _edje_var_var_float_get(ed, &(ed->var_pool->vars[id])); +} + +void +_edje_var_float_set(Edje *ed, int id, double v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + _edje_var_var_float_set(ed, &(ed->var_pool->vars[id]), v); +} + +const char * +_edje_var_str_get(Edje *ed, int id) +{ + if (!ed) return NULL; + if (!ed->var_pool) return NULL; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return NULL; + return _edje_var_var_str_get(ed, &(ed->var_pool->vars[id])); +} + +void +_edje_var_str_set(Edje *ed, int id, const char *str) +{ + if (!ed) return; + if (!ed->var_pool) return; + if (!str) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + _edje_var_var_str_set(ed, &(ed->var_pool->vars[id]), str); +} + +/* list stuff */ + +void +_edje_var_list_var_append(Edje *ed, int id, Edje_Var *var) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + ed->var_pool->vars[id].data.l.v = eina_list_append(ed->var_pool->vars[id].data.l.v, var); +} + +void +_edje_var_list_var_prepend(Edje *ed, int id, Edje_Var *var) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + ed->var_pool->vars[id].data.l.v = eina_list_prepend(ed->var_pool->vars[id].data.l.v, var); +} + +void +_edje_var_list_var_append_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + ed->var_pool->vars[id].data.l.v = eina_list_append_relative(ed->var_pool->vars[id].data.l.v, var, relative); +} + +void +_edje_var_list_var_prepend_relative(Edje *ed, int id, Edje_Var *var, Edje_Var *relative) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + ed->var_pool->vars[id].data.l.v = eina_list_prepend_relative(ed->var_pool->vars[id].data.l.v, var, relative); +} + +Edje_Var * +_edje_var_list_nth(Edje *ed, int id, int n) +{ + if (!ed) return NULL; + if (!ed->var_pool) return NULL; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return NULL; + if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return NULL; + return eina_list_nth(ed->var_pool->vars[id].data.l.v, n); +} + +int +_edje_var_list_count_get(Edje *ed, int id) +{ + if (!ed) return 0; + if (!ed->var_pool) return 0; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return 0; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return 0; + return eina_list_count(ed->var_pool->vars[id].data.l.v); +} + +void +_edje_var_list_remove_nth(Edje *ed, int id, int n) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Eina_List *nth; + + nth = eina_list_nth_list(ed->var_pool->vars[id].data.l.v, n); + if (nth) + { + _edje_var_free(eina_list_data_get(nth)); + ed->var_pool->vars[id].data.l.v = eina_list_remove_list(ed->var_pool->vars[id].data.l.v, nth); + } + } +} + +int +_edje_var_list_nth_int_get(Edje *ed, int id, int n) +{ + if (!ed) return 0; + if (!ed->var_pool) return 0; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return 0; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return 0; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return 0; + return _edje_var_var_int_get(ed, var); + } +} + +void +_edje_var_list_nth_int_set(Edje *ed, int id, int n, int v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return; + _edje_var_var_int_set(ed, var, v); + } +} + +void +_edje_var_list_int_append(Edje *ed, int id, int v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_int_set(ed, var, v); + _edje_var_list_var_append(ed, id, var); + } +} + +void +_edje_var_list_int_prepend(Edje *ed, int id, int v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_int_set(ed, var, v); + _edje_var_list_var_prepend(ed, id, var); + } +} + +void +_edje_var_list_int_insert(Edje *ed, int id, int n, int v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var, *var_rel; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_int_set(ed, var, v); + var_rel = _edje_var_list_nth(ed, id, n); + if (!var_rel) + _edje_var_list_var_append(ed, id, var); + else + _edje_var_list_var_prepend_relative(ed, id, var, var_rel); + } +} + +double +_edje_var_list_nth_float_get(Edje *ed, int id, int n) +{ + if (!ed) return 0; + if (!ed->var_pool) return 0; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return 0; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return 0; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return 0; + return _edje_var_var_float_get(ed, var); + } +} + +void +_edje_var_list_nth_float_set(Edje *ed, int id, int n, double v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return; + _edje_var_var_float_set(ed, var, v); + } +} + +void +_edje_var_list_float_append(Edje *ed, int id, double v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_float_set(ed, var, v); + _edje_var_list_var_append(ed, id, var); + } +} + +void +_edje_var_list_float_prepend(Edje *ed, int id, double v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_float_set(ed, var, v); + _edje_var_list_var_prepend(ed, id, var); + } +} + +void +_edje_var_list_float_insert(Edje *ed, int id, int n, double v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var, *var_rel; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_float_set(ed, var, v); + var_rel = _edje_var_list_nth(ed, id, n); + if (!var_rel) + _edje_var_list_var_append(ed, id, var); + else + _edje_var_list_var_prepend_relative(ed, id, var, var_rel); + } +} + +const char * +_edje_var_list_nth_str_get(Edje *ed, int id, int n) +{ + if (!ed) return NULL; + if (!ed->var_pool) return NULL; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return NULL; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return NULL; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return NULL; + return _edje_var_var_str_get(ed, var); + } +} + +void +_edje_var_list_nth_str_set(Edje *ed, int id, int n, const char *v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + id += EDJE_VAR_MAGIC_BASE; + var = _edje_var_list_nth(ed, id, n); + if (!var) return; + _edje_var_var_str_set(ed, var, v); + } +} + +void +_edje_var_list_str_append(Edje *ed, int id, const char *v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_str_set(ed, var, v); + _edje_var_list_var_append(ed, id, var); + } +} + +void +_edje_var_list_str_prepend(Edje *ed, int id, const char *v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_str_set(ed, var, v); + _edje_var_list_var_prepend(ed, id, var); + } +} + +void +_edje_var_list_str_insert(Edje *ed, int id, int n, const char *v) +{ + if (!ed) return; + if (!ed->var_pool) return; + id -= EDJE_VAR_MAGIC_BASE; + if ((id < 0) || (id >= ed->var_pool->size)) return; + if (ed->var_pool->vars[id].type == EDJE_VAR_NONE) + ed->var_pool->vars[id].type = EDJE_VAR_LIST; + else if (ed->var_pool->vars[id].type != EDJE_VAR_LIST) return; + { + Edje_Var *var, *var_rel; + + var = _edje_var_new(); + if (!var) return; + id += EDJE_VAR_MAGIC_BASE; + _edje_var_var_str_set(ed, var, v); + var_rel = _edje_var_list_nth(ed, id, n); + if (!var_rel) + _edje_var_list_var_append(ed, id, var); + else + _edje_var_list_var_prepend_relative(ed, id, var, var_rel); + } +} + +int +_edje_var_timer_add(Edje *ed, double in, const char *fname, int val) +{ + Edje_Var_Timer *et; + Embryo_Function fn; + + if (!ed->var_pool) return 0; + fn = embryo_program_function_find(ed->collection->script, (char *)fname); + if (fn == EMBRYO_FUNCTION_NONE) return 0; + et = calloc(1, sizeof(Edje_Var_Timer)); + if (!et) return 0; + et->id = ++ed->var_pool->id_count; + et->edje = ed; + et->func = fn; + et->val = val; + et->timer = ecore_timer_add(in, _edje_var_timer_cb, et); + if (!et->timer) + { + free(et); + return 0; + } + ed->var_pool->timers = eina_list_prepend(ed->var_pool->timers, et); + return et->id; +} + +static Edje_Var_Timer * +_edje_var_timer_find(Edje *ed, int id) +{ + Eina_List *l; + Edje_Var_Timer *et; + + if (!ed->var_pool) return NULL; + + EINA_LIST_FOREACH(ed->var_pool->timers, l, et) + if (et->id == id) return et; + + return NULL; +} + +void +_edje_var_timer_del(Edje *ed, int id) +{ + Edje_Var_Timer *et; + + et = _edje_var_timer_find(ed, id); + if (!et) return; + + ed->var_pool->timers = eina_list_remove(ed->var_pool->timers, et); + ecore_timer_del(et->timer); + free(et); +} + +int +_edje_var_anim_add(Edje *ed, double len, const char *fname, int val) +{ + Edje_Var_Animator *ea; + Embryo_Function fn; + + if (!ed->var_pool) return 0; + if (len <= 0.0) return 0; + fn = embryo_program_function_find(ed->collection->script, (char *)fname); + if (fn == EMBRYO_FUNCTION_NONE) return 0; + ea = calloc(1, sizeof(Edje_Var_Animator)); + if (!ea) return 0; + ea->start = ecore_loop_time_get(); + ea->len = len; + ea->id = ++ed->var_pool->id_count; + ea->edje = ed; + ea->func = fn; + ea->val = val; + if (!ed->var_pool->animators) + _edje_anim_list = eina_list_append(_edje_anim_list, ed); + ed->var_pool->animators = eina_list_prepend(ed->var_pool->animators, ea); + if (!_edje_animator) + _edje_animator = ecore_animator_add(_edje_var_anim_cb, NULL); + return ea->id; +} + +static Edje_Var_Animator * +_edje_var_anim_find(Edje *ed, int id) +{ + Eina_List *l; + Edje_Var_Animator *ea; + + if (!ed->var_pool) return NULL; + + EINA_LIST_FOREACH(ed->var_pool->animators, l, ea) + if (ea->id == id) return ea; + + return NULL; +} + +void +_edje_var_anim_del(Edje *ed, int id) +{ + Edje_Var_Animator *ea; + + ea = _edje_var_anim_find(ed, id); + if (!ea) return; + + if (ed->var_pool->walking_list) + { + ea->delete_me = 1; + return; + } + + ed->var_pool->animators = eina_list_remove(ed->var_pool->animators, ea); + free(ea); + + if (ed->var_pool->animators) return; + + _edje_anim_list = eina_list_remove(_edje_anim_list, ed); + if (!_edje_anim_list) + { + if (_edje_animator) + { + ecore_animator_del(_edje_animator); + _edje_animator = NULL; + } + } +} diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am new file mode 100644 index 0000000..937a690 --- /dev/null +++ b/src/modules/Makefile.am @@ -0,0 +1,10 @@ +if ENABLE_MULTISENSE +FACTORY_MODULE = multisense_factory +if HAVE_LIBREMIX +SND_READER_MODULE = eet_snd_reader +if HAVE_LIBALSA +ALSA_MODULE = alsa_snd_player +endif +endif +endif +SUBDIRS = $(FACTORY_MODULE) $(SND_READER_MODULE) $(ALSA_MODULE) diff --git a/src/modules/alsa_snd_player/Makefile.am b/src/modules/alsa_snd_player/Makefile.am new file mode 100644 index 0000000..0907007 --- /dev/null +++ b/src/modules/alsa_snd_player/Makefile.am @@ -0,0 +1,21 @@ +## Process this file with automake to produce Makefile.in + +MAINTAINERCLEANFILES = Makefile.in + +pkglibdir = $(REMIX_PLUGIN_DIR) + +AM_CPPFLAGS = \ +-I. \ +-DPACKAGE_LIB_DIR=\"$(libdir)/remix\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/remix\" \ +@EDJE_CFLAGS@ \ +@EIO_CFLAGS@ \ +@REMIX_CFLAGS@ \ +@ALSA_CFLAGS@ + +pkgdir = $(REMIX_PLUGIN_DIR) +pkg_LTLIBRARIES = libalsa_snd_player.la + +libalsa_snd_player_la_SOURCES = alsa_snd_player.c +libalsa_snd_player_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EDJE_LIBS@ @REMIX_LIBS@ @ALSA_LIBS@ +libalsa_snd_player_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/src/modules/alsa_snd_player/alsa_snd_player.c b/src/modules/alsa_snd_player/alsa_snd_player.c new file mode 100644 index 0000000..f397255 --- /dev/null +++ b/src/modules/alsa_snd_player/alsa_snd_player.c @@ -0,0 +1,405 @@ +/* + * Remix ALSA Player: ALSA audio output + * + * Govindaraju SM , October 2011 + * Prince Kumar Dubey , October 2011 + */ + +#include "config.h" +#include +#include +#include +#include +#ifdef HAVE_LIBSNDFILE +#include +#endif + +#define ALSA_PLAYER_BUFFERLEN 2048 + +typedef struct _Alsa_Player_Data Alsa_Player_Data; +typedef short PLAYER_PCM; + +struct _Alsa_Player_Data +{ + RemixPCM databuffer[ALSA_PLAYER_BUFFERLEN]; + snd_pcm_t *alsa_dev; + unsigned int stereo; + unsigned channels; + unsigned int frequency; +}; + +static int _log_dom = -1; +static int init_count = 0; + +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_log_dom, __VA_ARGS__) + +//#define MIXDBG 1 + +/* Optimisation dependencies: none */ +static RemixBase *alsa_player_optimise(RemixEnv *env, RemixBase *base); + +static snd_pcm_t * +alsa_open(int channels, unsigned int samplerate, unsigned int *real_samplerate) +{ + const char *device = "default"; + snd_pcm_t *alsa_dev = NULL; + snd_pcm_hw_params_t *hw_params; + snd_pcm_uframes_t alsa_buffer_frames; + snd_pcm_uframes_t alsa_period_size; + unsigned int samplerate_ret = 0; + int err; + + alsa_buffer_frames = ALSA_PLAYER_BUFFERLEN; + alsa_period_size = ALSA_PLAYER_BUFFERLEN / 4; + + if ((err = snd_pcm_open(&alsa_dev, device, SND_PCM_STREAM_PLAYBACK, 0)) < 0) + { + WRN("cannot open alsa playback stream (%s)", snd_strerror(err)); + goto catch_error; + } + snd_pcm_hw_params_alloca(&hw_params); + if ((err = snd_pcm_hw_params_any(alsa_dev, hw_params)) < 0) + { + WRN("cannot initialize snd hw params (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params_set_access(alsa_dev, hw_params, + SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) + { + WRN("cannot set interleaved access (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params_set_format(alsa_dev, hw_params, + SND_PCM_FORMAT_FLOAT)) < 0) + { + WRN("cannot set float sample format (%s)", snd_strerror(err)); + goto catch_error; + } +#ifdef MIXDBG // testing/debugging by making output samplerate be 48khz + samplerate_ret = 48000; + if ((err = snd_pcm_hw_params_set_rate_near(alsa_dev, hw_params, + &samplerate_ret, 0)) < 0) + { + WRN("cannot set sample rate (%s)", snd_strerror(err)); + goto catch_error; + } +#else + if ((err = snd_pcm_hw_params_set_rate_near(alsa_dev, hw_params, + &samplerate, 0)) < 0) + { + WRN("cannot set sample rate (%s)", snd_strerror(err)); + goto catch_error; + } +#endif + if ((err = snd_pcm_hw_params_set_channels(alsa_dev, hw_params, channels)) < 0) + { + WRN("cannot set channel count (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params_set_buffer_size_near(alsa_dev, hw_params, + &alsa_buffer_frames)) < 0) + { + WRN("cannot set buffer size (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params_set_period_size_near(alsa_dev, hw_params, + &alsa_period_size, 0)) < 0) + { + WRN("cannot set period size (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params(alsa_dev, hw_params)) < 0) + { + WRN("cannot set parameters (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_hw_params_get_rate(hw_params, &samplerate_ret, 0)) < 0) + { + WRN("cannot get samplerate (%s)", snd_strerror(err)); + goto catch_error; + } + if ((err = snd_pcm_prepare(alsa_dev)) < 0) + { + WRN("cannot prepare audio for use (%s)", snd_strerror(err)); + goto catch_error; + } + if (real_samplerate) *real_samplerate = samplerate_ret; + +catch_error: + if ((err < 0) && (alsa_dev != NULL)) + { + snd_pcm_close(alsa_dev); + return NULL; + } + return alsa_dev; +} + +static RemixBase * +alsa_player_reset_device(RemixEnv *env, RemixBase *base) +{ + Alsa_Player_Data *player_data = remix_base_get_instance_data(env, base); + unsigned int real_samplerate = 0; + + if (player_data->alsa_dev) + { + snd_pcm_drain(player_data->alsa_dev); + snd_pcm_close(player_data->alsa_dev); + } + player_data->alsa_dev = alsa_open(player_data->channels, + player_data->frequency, + &real_samplerate); + if (!player_data->alsa_dev) + { + remix_set_error(env, REMIX_ERROR_SYSTEM); + return RemixNone; + } +// printf("%i != %i\n", real_samplerate, player_data->frequency); + if (real_samplerate != player_data->frequency) + { + player_data->frequency = real_samplerate; + remix_set_samplerate(env, player_data->frequency); + } + return base; +} + +static RemixBase * +alsa_player_init(RemixEnv *env, RemixBase *base, CDSet *parameters __UNUSED__) +{ + CDSet *channels; + Alsa_Player_Data *player_data = calloc(1, sizeof(Alsa_Player_Data)); + + if (!player_data) + { + remix_set_error(env, REMIX_ERROR_SYSTEM); + return RemixNone; + } + + init_count++; + if (init_count == 1) + { + eina_init(); + _log_dom = eina_log_domain_register("remix-alsa", EINA_COLOR_CYAN); + } + + remix_base_set_instance_data(env, base, player_data); + channels = remix_get_channels(env); + + player_data->channels = cd_set_size(env, channels); + if (player_data->channels == 1) player_data->stereo = 0; + else if (player_data->channels == 2) player_data->stereo = 1; + + player_data->frequency = remix_get_samplerate(env); + alsa_player_reset_device(env, base); + base = alsa_player_optimise(env, base); + return base; +} + +static RemixBase * +alsa_player_clone(RemixEnv *env, RemixBase *base __UNUSED__) +{ + RemixBase *new_player = remix_base_new(env); + alsa_player_init(env, new_player, NULL); + return new_player; +} + +static int +alsa_player_destroy(RemixEnv *env, RemixBase *base) +{ + Alsa_Player_Data *player_data = remix_base_get_instance_data(env, base); + + if (player_data->alsa_dev) + { + snd_pcm_drain(player_data->alsa_dev); + snd_pcm_close(player_data->alsa_dev); + } + free(player_data); + init_count--; + if (init_count == 0) + { + eina_log_domain_unregister(_log_dom); + _log_dom = -1; + eina_shutdown(); + } + return 0; +} + +static int +alsa_player_ready(RemixEnv *env, RemixBase *base) +{ + Alsa_Player_Data *player_data = remix_base_get_instance_data(env, base); + RemixCount nr_channels; + CDSet *channels; + int samplerate; + + channels = remix_get_channels(env); + samplerate = (int)remix_get_samplerate(env); + nr_channels = cd_set_size(env, channels); + return ((samplerate == (int)player_data->frequency) && + (((nr_channels == 1) && (player_data->stereo == 0)) || + ((nr_channels > 1) && (player_data->stereo == 1)))); +} + +static RemixBase * +alsa_player_prepare(RemixEnv *env, RemixBase *base) +{ + alsa_player_reset_device(env, base); + return base; +} + +static RemixCount +alsa_player_playbuffer(RemixEnv *env __UNUSED__, Alsa_Player_Data *player, RemixPCM *data, RemixCount count) +{ +#ifdef MIXDBG + { + static int total = 0; + static SNDFILE *sfile = NULL; + static SF_INFO sfinfo; + + if (total == 0) + { + sfinfo.frames = 0; + sfinfo.samplerate = player->frequency; + sfinfo.channels = 2; + sfinfo.format = SF_FORMAT_WAV | SF_FORMAT_PCM_16 | SF_ENDIAN_LITTLE; + sfinfo.sections = 0; + sfinfo.seekable = 0; + sfile = sf_open("out.wav", SFM_WRITE, &sfinfo); + } + + if (sfile) + { + sf_writef_float(sfile, data, count); + total += count; + } + } +#endif + return snd_pcm_writei(player->alsa_dev, data, count); +} + +static RemixCount +alsa_player_chunk(RemixEnv *env, RemixChunk *chunk, RemixCount offset, RemixCount count, int channelname __UNUSED__, void *data) +{ + Alsa_Player_Data *player = data; + RemixCount remaining = count, written = 0, n, playcount; + RemixPCM *d; + + while (remaining > 0) + { + playcount = MIN(remaining, ALSA_PLAYER_BUFFERLEN); + + d = &chunk->data[offset]; + n = alsa_player_playbuffer(env, player, d, playcount); + + if (n == -1) return -1; + else n /= sizeof(PLAYER_PCM); + + offset += n; + written += n; + remaining -= n; + } + return written; +} + +static RemixCount +alsa_player_process(RemixEnv *env, RemixBase *base, RemixCount count, RemixStream *input, RemixStream *output __UNUSED__) +{ + Alsa_Player_Data *player_data = remix_base_get_instance_data(env, base); + RemixCount nr_channels = remix_stream_nr_channels(env, input); + RemixCount remaining = count, processed = 0, n, nn; + + if ((nr_channels == 1) && (player_data->stereo == 0)) + { /*MONO*/ + return remix_stream_chunkfuncify(env, input, count, + alsa_player_chunk, player_data); + } + else if ((nr_channels == 2) && (player_data->stereo == 1)) + { /*STEREO*/ + while (remaining > 0) + { + n = MIN(remaining, ALSA_PLAYER_BUFFERLEN / 2); + n = remix_stream_interleave_2(env, input, + REMIX_CHANNEL_LEFT, + REMIX_CHANNEL_RIGHT, + player_data->databuffer, n); + nn = alsa_player_playbuffer(env, player_data, + player_data->databuffer, n); + processed += n; + remaining -= n; + } + return processed; + } + WRN("[alsa_player_process] unsupported stream/output channel " + "combination %ld / %d", nr_channels, player_data->stereo ? 2 : 1); + return -1; +} + +static RemixCount +alsa_player_length(RemixEnv *env __UNUSED__, RemixBase *base __UNUSED__) +{ + return REMIX_COUNT_INFINITE; +} + +static RemixCount +alsa_player_seek(RemixEnv *env __UNUSED__, RemixBase *base __UNUSED__, RemixCount count __UNUSED__) +{ + return count; +} + +static int +alsa_player_flush(RemixEnv *env, RemixBase *base) +{ + alsa_player_reset_device(env, base); + return 0; +} + +static struct _RemixMethods _alsa_player_methods = +{ + alsa_player_clone, + alsa_player_destroy, + alsa_player_ready, + alsa_player_prepare, + alsa_player_process, + alsa_player_length, + alsa_player_seek, + alsa_player_flush, +}; + +static RemixBase * +alsa_player_optimise(RemixEnv *env, RemixBase *base) +{ + remix_base_set_methods(env, base, &_alsa_player_methods); + return base; +} + +static struct _RemixMetaText alsa_player_metatext = +{ + "alsa_snd_player", + "ALSA sound player for Remix", + "Output the audio stream into ALSA Driver", + "Copyright (C) 2011, Samsung Electronics Co., Ltd.", + "http://www.samsung.com", + REMIX_ONE_AUTHOR("Govindaraju SM", "prince.dubey@samsung.com"), +}; + +static struct _RemixPlugin alsa_player_plugin = +{ + &alsa_player_metatext, + REMIX_FLAGS_NONE, + CD_EMPTY_SET, /* init scheme */ + alsa_player_init, + CD_EMPTY_SET, /* process scheme */ + NULL, /* suggests */ + NULL, /* plugin data */ + NULL /* destroy */ +}; + +EAPI CDList * +remix_load(RemixEnv *env) +{ + CDList *plugins = cd_list_new(env); + plugins = cd_list_prepend(env, plugins, CD_POINTER(&alsa_player_plugin)); + return plugins; +} diff --git a/src/modules/eet_snd_reader/Makefile.am b/src/modules/eet_snd_reader/Makefile.am new file mode 100644 index 0000000..1e8f17f --- /dev/null +++ b/src/modules/eet_snd_reader/Makefile.am @@ -0,0 +1,18 @@ +MAINTAINERCLEANFILES = Makefile.in + +pkglibdir = $(REMIX_PLUGIN_DIR) + +AM_CPPFLAGS = \ +-I. \ +-DPACKAGE_LIB_DIR=\"$(libdir)/remix\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/remix\" \ +@EDJE_CFLAGS@ \ +@EIO_CFLAGS@ \ +@REMIX_CFLAGS@ + +pkgdir = $(REMIX_PLUGIN_DIR) +pkg_LTLIBRARIES = libeet_sndfile_reader.la + +libeet_sndfile_reader_la_SOURCES = eet_snd_reader.c +libeet_sndfile_reader_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version @EDJE_LIBS@ @REMIX_LIBS@ +libeet_sndfile_reader_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/src/modules/eet_snd_reader/eet_snd_reader.c b/src/modules/eet_snd_reader/eet_snd_reader.c new file mode 100644 index 0000000..4e2dec9 --- /dev/null +++ b/src/modules/eet_snd_reader/eet_snd_reader.c @@ -0,0 +1,498 @@ +/* + * RemixSnd_eetfile: a libsnd EET Virtual file handler + * + * Govindaraju SM , August 2011 + * Prince Kumar Dubey , August 2011 + */ + +#include "config.h" +#include +#include +#include +#include + +#define PATH_KEY 1 +#define SOUND_ID_KEY 2 +#define SPEED_KEY 3 +#define BLOCK_FRAMES 8192 + +static RemixBase *remix_eet_sndfile_optimise(RemixEnv *env, RemixBase *sndfile); + +typedef struct _VIO_DATA VIO_DATA; +typedef struct _SndInstanceData SndInstanceData; + +struct _VIO_DATA +{ + sf_count_t offset, length; + const char *data; +}; + +struct _SndInstanceData +{ + /* plugin parameters */ + char *path; + char *sound_id; + double speed; + + /* Edj & Sndfile Reader */ + Eet_File *efp; + SNDFILE *pcm_fp; + SF_INFO *snd_info; + VIO_DATA *vio_data; + + /* PCM buffers */ + RemixPCM *readbuf; + RemixPCM *inbuf; + RemixPCM *outbuf; + + /* Resample stuffs */ + RemixPCM prevreadbuf[2]; + int enable_resample; + double rs_ratio; + RemixCount resample_len; + RemixCount in_avail; + RemixCount out_generated; + RemixCount required_resamples; +}; + +static sf_count_t +eet_snd_file_get_length(void *user_data) +{ + VIO_DATA *vf = user_data; + return vf->length; +} + +static sf_count_t +eet_snd_file_seek(sf_count_t offset, int whence, void *user_data) +{ + VIO_DATA *vf = user_data; + + switch (whence) + { + case SEEK_SET: + vf->offset = offset; + break; + case SEEK_CUR: + vf->offset += offset; + break; + case SEEK_END: + vf->offset = vf->length + offset; + break; + default: + break; + } + return vf->offset; +} + +static sf_count_t +eet_snd_file_read(void *ptr, sf_count_t count, void *user_data) +{ + VIO_DATA *vf = user_data; + + if ((vf->offset + count) > vf->length) + count = vf->length - vf->offset; + memcpy(ptr, vf->data + vf->offset, count); + vf->offset += count; + return count; +} + +static sf_count_t +eet_snd_file_tell(void *user_data) +{ + VIO_DATA *vf = user_data; + return vf->offset; +} + +static int +remix_init_resampler_data(RemixEnv *env, RemixBase *base) +{ + SndInstanceData *si = remix_base_get_instance_data(env, base); + + si->rs_ratio = remix_get_samplerate(env) / si->snd_info->samplerate; + si->rs_ratio /= si->speed; + si->resample_len = (si->snd_info->frames * si->rs_ratio); + + si->outbuf = malloc(sizeof(RemixPCM) * BLOCK_FRAMES * 2); + if (!si->outbuf) return 0; + if ((si->rs_ratio == 1.0)/* && (si->snd_info->channels == 2)*/) + { + si->enable_resample = 0; + return 1; + } + else + si->enable_resample = 1; + + si->in_avail = 0; + si->out_generated = 0; + si->inbuf = malloc(sizeof(RemixPCM) * BLOCK_FRAMES * + si->snd_info->channels); + if (!si->inbuf) return 0; + return 1; +} + +static RemixBase * +remix_eet_sndfile_create(RemixEnv *env, RemixBase *sndfile, const char *path, const char *sound_id, const double speed) +{ + SF_VIRTUAL_IO *eet_vio = NULL; + SndInstanceData *si; + const void *sound_data; + int sound_size; + + if ((!path) || (!sound_id)) return NULL; + + si = calloc(1, sizeof(SndInstanceData)); + if (!si) goto err; + remix_base_set_instance_data(env, sndfile, si); + + si->path = strdup(path); + si->sound_id = strdup(sound_id); + si->speed = speed; + + si->efp = eet_open(path, EET_FILE_MODE_READ); + if (!si->efp) goto err; + + // xxx: eet_read_direct does not work on Threads, using eet_read. + sound_data = eet_read(si->efp, sound_id, &(sound_size)); + eet_close(si->efp); + si->efp = NULL; + if (sound_data == NULL) goto err; + + eet_vio = calloc(1, sizeof(SF_VIRTUAL_IO)); + if (!eet_vio) goto err; + + /* Set up func pointers to read snd file directly from EET. */ + eet_vio->get_filelen = eet_snd_file_get_length; + eet_vio->seek = eet_snd_file_seek; + eet_vio->read = eet_snd_file_read; + eet_vio->tell = eet_snd_file_tell; + + si->vio_data = calloc(1, sizeof(VIO_DATA)); + if (!si->vio_data) goto err; + si->vio_data->offset = 0; + si->vio_data->length = sound_size; + si->vio_data->data = sound_data; + + si->snd_info = calloc(1, sizeof(SF_INFO)); + if (!si->snd_info) goto err; + + si->pcm_fp = sf_open_virtual(eet_vio, SFM_READ, si->snd_info, si->vio_data); + if (!si->pcm_fp) goto err; + free(eet_vio); + eet_vio = NULL; + + if (!remix_init_resampler_data(env, sndfile)) goto err; + si->out_generated = 0; + + return sndfile; + +err: + if (eet_vio) free(eet_vio); + remix_set_error(env, REMIX_ERROR_SYSTEM); + remix_destroy(env, (RemixBase *)sndfile); + return RemixNone; +} + +static RemixBase * +remix_eet_sndfile_reader_init(RemixEnv *env, RemixBase *base, CDSet *parameters) +{ + char *file_path, *sound_id; + double speed; + + file_path = (cd_set_find(env, parameters, PATH_KEY)).s_string; + sound_id = (cd_set_find(env, parameters, SOUND_ID_KEY)).s_string; + speed = (cd_set_find(env, parameters, SPEED_KEY)).s_double; + + if (!remix_eet_sndfile_create(env, base, file_path, sound_id, speed)) + return RemixNone; + remix_eet_sndfile_optimise (env, base); + return base; +} + +static RemixBase * +remix_eet_sndfile_clone(RemixEnv *env, RemixBase *base) +{ + SndInstanceData *si = remix_base_get_instance_data(env, base); + RemixBase *new_sndfile = remix_base_new(env); + + remix_eet_sndfile_create(env, new_sndfile, si->path, si->sound_id, si->speed); + remix_eet_sndfile_optimise(env, new_sndfile); + return new_sndfile; +} + +static int +remix_eet_sndfile_destroy(RemixEnv *env, RemixBase *base) +{ + SndInstanceData *si = remix_base_get_instance_data(env, base); + if (si) + { + sf_close (si->pcm_fp); + eet_close(si->efp); + if (si->path) free(si->path); + if (si->sound_id) free(si->sound_id); + if (si->snd_info) free(si->snd_info); + if (si->efp) eet_close(si->efp); + if (si->inbuf) free(si->inbuf); + if (si->outbuf) free(si->outbuf); + if (si->vio_data) free(si->vio_data); + free(si); + } + if (base) free (base); + return 0; +} + +static int +remix_pcm_resample(SndInstanceData *si) +{ + RemixPCM *src, *dst, *srcbase; + int i = 0, in_samples, pos, total, chnum, reqsamp, avail; + int interp = 1; + + dst = si->outbuf + (si->out_generated * 2); + in_samples = (double)si->required_resamples / si->rs_ratio; + chnum = si->snd_info->channels; + reqsamp = si->required_resamples; + avail = si->in_avail; + srcbase = si->readbuf; + if ((interp) && (si->rs_ratio >= 1.0)) + { + // linear interpolation of resampling for lower quality samples + // so they don't get high requency aliasing effects + for (i = 0; i < reqsamp; i++) + { + float fpos, fpos1; + RemixPCM psam[2]; + + fpos = (float)(i * in_samples) / (float)reqsamp; + pos = fpos; + if (pos >= avail) break; + fpos -= pos; + fpos1 = 1.0 - fpos; + src = srcbase + (pos * chnum); + if (chnum == 2) + { + if (pos == 0) + { + psam[0] = si->prevreadbuf[0]; + psam[1] = si->prevreadbuf[1]; + } + else + { + psam[0] = src[0 - 2]; + psam[1] = src[1 - 2]; + } + *dst++ = (src[0] * fpos) + (psam[0] * fpos1); + *dst++ = (src[1] * fpos) + (psam[1] * fpos1); + } + else + { + if (pos == 0) + psam[0] = si->prevreadbuf[0]; + else + psam[0] = src[0 - 1]; + *dst++ = (src[0] * fpos) + (psam[0] * fpos1); + } + } + } + else + { + // simple sample-picking/nearest. faster and simpler + for (i = 0; i < reqsamp; i++) + { + pos = (i * in_samples) / reqsamp; + if (pos >= avail) break; + src = srcbase + (pos * chnum); + if (chnum == 2) + { + *dst++ = src[0]; + *dst++ = src[1]; + } + else + *dst++ = src[0]; + } + } + si->out_generated += i; + total = (i * in_samples) / reqsamp; + si->readbuf += total * chnum; + si->in_avail -= total; + return total; +} + +/* An RemixChunkFunc for creating sndfile */ +static RemixCount +remix_eet_sndfile_read_update(RemixEnv *env, RemixBase *sndfile, RemixCount count) +{ + SndInstanceData *si = remix_base_get_instance_data(env, sndfile); + + si->out_generated = 0; + if (si->enable_resample) + { + RemixCount gen = 0; + + while (gen < count) + { + if (si->in_avail <= 0) + { + si->in_avail = sf_readf_float(si->pcm_fp, si->inbuf, BLOCK_FRAMES); + si->readbuf = si->inbuf; + } + si->required_resamples = (count - gen); + remix_pcm_resample(si); + if (si->snd_info->channels == 2) + { + si->prevreadbuf[0] = si->readbuf[-2]; + si->prevreadbuf[1] = si->readbuf[-1]; + } + else + { + si->prevreadbuf[0] = si->readbuf[-1]; + } + gen += si->out_generated; + } + si->out_generated = gen; + } + else + { + si->out_generated = sf_readf_float(si->pcm_fp, si->outbuf, count); + } + return si->out_generated; +} + +static RemixCount +remix_eet_sndfile_read_into_chunk(RemixEnv *env, RemixChunk *chunk, RemixCount offset, RemixCount count, int channelname, void *data) +{ + RemixBase *sndfile = data; + SndInstanceData *si = remix_base_get_instance_data(env, sndfile); + RemixPCM *d, *p; + RemixCount remaining = count, written = 0, n, i; + + d = &chunk->data[offset]; + n = MIN(remaining, BLOCK_FRAMES); + // Need parameter support to advance the data reading + if (channelname == 0) + remix_eet_sndfile_read_update(env, sndfile, n); + n = MIN(si->out_generated, remaining); + p = si->outbuf; + if (si->snd_info->channels > 1) p += channelname; + for (i = 0; i < n; i++) + { + *d++ = *p; + p += si->snd_info->channels; + } + if (n == 0) n = _remix_pcm_set(d, 0.0, remaining); + remaining -= n; + written += n; + return written; +} + +static RemixCount +remix_eet_sndfile_reader_process(RemixEnv *env, RemixBase *base, RemixCount count, RemixStream *input __UNUSED__, RemixStream *output) +{ + return remix_stream_chunkfuncify(env, output, count, + remix_eet_sndfile_read_into_chunk, + base); +} + +static RemixCount +remix_eet_sndfile_length(RemixEnv *env, RemixBase *base) +{ + SndInstanceData *si = remix_base_get_instance_data(env, base); + return si->resample_len; +} + +static RemixCount +remix_eet_sndfile_seek(RemixEnv *env, RemixBase *base, RemixCount offset) +{ + SndInstanceData *si = remix_base_get_instance_data(env, base); + return sf_seek(si->pcm_fp, offset, SEEK_SET); +} + +static struct _RemixMethods _remix_eet_sndfile_reader_methods = +{ + remix_eet_sndfile_clone, + remix_eet_sndfile_destroy, + NULL, /* ready */ + NULL, /* prepare */ + remix_eet_sndfile_reader_process, + remix_eet_sndfile_length, + remix_eet_sndfile_seek, + NULL, /* flush */ +}; + +static RemixBase * +remix_eet_sndfile_optimise(RemixEnv *env, RemixBase *sndfile) +{ + remix_base_set_methods(env, sndfile, &_remix_eet_sndfile_reader_methods); + return sndfile; +} + +static struct _RemixParameterScheme path_scheme = +{ + "path", + "Path to sound file", + REMIX_TYPE_STRING, + REMIX_CONSTRAINT_TYPE_NONE, + {NULL}, + REMIX_HINT_FILENAME, +}; + +static struct _RemixParameterScheme sound_id_scheme = +{ + "sound_id", + "Sound Id (Key) inside EET", + REMIX_TYPE_STRING, + REMIX_CONSTRAINT_TYPE_NONE, + {NULL}, + REMIX_HINT_DEFAULT, +}; + +static struct _RemixParameterScheme speed_scheme = +{ + "speed", + "Sound Play Speed", + REMIX_TYPE_FLOAT, + REMIX_CONSTRAINT_TYPE_NONE, + {NULL}, + REMIX_HINT_DEFAULT, +}; + +static struct _RemixMetaText eet_sndfile_reader_metatext = +{ + "eet_sndfile_reader", + "File:: Sound file Reader from EET", + "Reads PCM audio files from EET bundle using libsndfile", + "Copyright (C) 2011, Samsung Electronics Co., Ltd.", + "http://www.samsung.com", + REMIX_ONE_AUTHOR ("govi.sm@samsung.com", "prince.dubey@samsung.com"), +}; + +static struct _RemixPlugin eet_sndfile_reader_plugin = +{ + &eet_sndfile_reader_metatext, + REMIX_FLAGS_NONE, + CD_EMPTY_SET, /* init scheme */ + remix_eet_sndfile_reader_init, + CD_EMPTY_SET, /* process scheme */ + NULL, /* suggests */ + NULL, /* plugin data */ + NULL /* destroy */ +}; + +EAPI CDList * +remix_load(RemixEnv *env) +{ + CDList *plugins = cd_list_new(env); + + eet_sndfile_reader_plugin.init_scheme = + cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, PATH_KEY, + CD_POINTER(&path_scheme)); + eet_sndfile_reader_plugin.init_scheme = + cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, SOUND_ID_KEY, + CD_POINTER(&sound_id_scheme)); + eet_sndfile_reader_plugin.init_scheme = + cd_set_insert(env, eet_sndfile_reader_plugin.init_scheme, SPEED_KEY, + CD_POINTER(&speed_scheme)); + + plugins = cd_list_prepend(env, plugins, + CD_POINTER(&eet_sndfile_reader_plugin)); + return plugins; +} diff --git a/src/modules/multisense_factory/Makefile.am b/src/modules/multisense_factory/Makefile.am new file mode 100644 index 0000000..feefdd5 --- /dev/null +++ b/src/modules/multisense_factory/Makefile.am @@ -0,0 +1,22 @@ +MAINTAINERCLEANFILES = Makefile.in + +pkglibdir = $(datadir)/$(PACKAGE)/modules/multisense_factory + +AM_CPPFLAGS = \ +-I. \ +-I$(top_srcdir)/src/lib \ +-I$(top_srcdir)/src/lib/include \ +-DPACKAGE_BIN_DIR=\"$(bindir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \ +-DPACKAGE_EXAMPLES_DIR=\"$(datadir)/$(PACKAGE)/multisense_factory\" \ +@EDJE_CFLAGS@ \ +@EIO_CFLAGS@ \ +@REMIX_CFLAGS@ + +pkgdir = $(libdir)/edje/modules/multisense_factory/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la + +module_la_SOURCES = multisense_factory.c +module_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -module -avoid-version $(top_builddir)/src/lib/libedje.la @EDJE_LIBS@ @REMIX_LIBS@ +module_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/src/modules/multisense_factory/multisense_factory.c b/src/modules/multisense_factory/multisense_factory.c new file mode 100644 index 0000000..8b17be1 --- /dev/null +++ b/src/modules/multisense_factory/multisense_factory.c @@ -0,0 +1,33 @@ +#include "config.h" +#include "edje_private.h" + +#define DEFAULT_SAMPLERATE 44100 + +#ifdef HAVE_LIBREMIX +EAPI RemixBase * +multisense_sound_player_get(Edje_Multisense_Env *msenv) +{ + RemixEnv *env = msenv->remixenv; + RemixPlugin *player_plugin; + RemixBase *player; + + player_plugin = remix_find_plugin(env, "alsa_snd_player"); + if (!player_plugin) + { + WRN("ALSA player_plugin init fail\n"); + return remix_monitor_new(env); + } + player = remix_new(env, player_plugin, NULL); + return player; +} +#endif + +EAPI Eina_Bool +multisense_factory_init(Edje_Multisense_Env *env __UNUSED__) +{ +#ifdef HAVE_LIBREMIX + remix_set_samplerate(env->remixenv, DEFAULT_SAMPLERATE); + remix_set_channels(env->remixenv, REMIX_STEREO); +#endif + return EINA_TRUE; +} diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am new file mode 100644 index 0000000..4981ad3 --- /dev/null +++ b/src/tests/Makefile.am @@ -0,0 +1,27 @@ +MAINTAINERCLEANFILES = Makefile.in + +AM_CPPFLAGS = \ +-I$(top_srcdir)/src/lib \ +@EDJE_CFLAGS@ \ +@CHECK_CFLAGS@ + +if EFL_ENABLE_TESTS + +noinst_PROGRAMS = edje_suite + +check_PROGRAMS = edje_suite + +edje_suite_SOURCES = \ +edje_suite.c \ +edje_test_edje.c \ +edje_suite.h + +edje_suite_LDADD = \ +@EDJE_LIBS@ \ +@CHECK_LIBS@ \ +$(top_builddir)/src/lib/libedje.la + +endif + +clean-local: + rm -rf *.gcno *.gcda diff --git a/src/tests/edje_suite.c b/src/tests/edje_suite.c new file mode 100644 index 0000000..ad789b6 --- /dev/null +++ b/src/tests/edje_suite.c @@ -0,0 +1,101 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include + +#include "edje_suite.h" + +typedef struct _Edje_Test_Case Edje_Test_Case; + +struct _Edje_Test_Case +{ + const char *test_case; + void (*build)(TCase *tc); +}; + +static const Edje_Test_Case etc[] = { + { "Edje", edje_test_edje }, + { NULL, NULL } +}; + +static void +_list_tests(void) +{ + const Edje_Test_Case *itr; + + itr = etc; + fputs("Available Test Cases:\n", stderr); + for (; itr->test_case; itr++) + fprintf(stderr, "\t%s\n", itr->test_case); +} +static Eina_Bool +_use_test(int argc, const char **argv, const char *test_case) +{ + if (argc < 1) + return 1; + + for (; argc > 0; argc--, argv++) + if (strcmp(test_case, *argv) == 0) + return 1; + return 0; +} + +static Suite * +edje_suite_build(int argc, const char **argv) +{ + TCase *tc; + Suite *s; + int i; + + s = suite_create("Edje"); + + for (i = 0; etc[i].test_case; ++i) + { + if (!_use_test(argc, argv, etc[i].test_case)) continue; + tc = tcase_create(etc[i].test_case); + + etc[i].build(tc); + + suite_add_tcase(s, tc); + tcase_set_timeout(tc, 0); + } + + return s; +} + +int +main(int argc, char **argv) +{ + Suite *s; + SRunner *sr; + int i, failed_count; + + for (i = 1; i < argc; i++) + if ((strcmp(argv[i], "-h") == 0) || + (strcmp(argv[i], "--help") == 0)) + { + fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n", + argv[0]); + _list_tests(); + return 0; + } + else if ((strcmp(argv[i], "-l") == 0) || + (strcmp(argv[i], "--list") == 0)) + { + _list_tests(); + return 0; + } + + s = edje_suite_build(argc - 1, (const char **)argv + 1); + sr = srunner_create(s); + + srunner_run_all(sr, CK_ENV); + failed_count = srunner_ntests_failed(sr); + srunner_free(sr); + + return (failed_count == 0) ? 0 : 255; +} diff --git a/src/tests/edje_suite.h b/src/tests/edje_suite.h new file mode 100644 index 0000000..35ab20d --- /dev/null +++ b/src/tests/edje_suite.h @@ -0,0 +1,9 @@ +#ifndef _EDJE_SUITE_H +#define _EDJE_SUITE_H + +#include + +void edje_test_edje(TCase *tc); + + +#endif /* _EDJE_SUITE_H */ diff --git a/src/tests/edje_test_edje.c b/src/tests/edje_test_edje.c new file mode 100644 index 0000000..ad92c63 --- /dev/null +++ b/src/tests/edje_test_edje.c @@ -0,0 +1,28 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include +#include + +#include "edje_suite.h" + +START_TEST(edje_test_edje_init) +{ + int ret; + + ret = edje_init(); + fail_if(ret != 1); + + ret = edje_shutdown(); + fail_if(ret != 0); +} +END_TEST + +void edje_test_edje(TCase *tc) +{ + tcase_add_test(tc, edje_test_edje_init); +} diff --git a/utils/Makefile.am b/utils/Makefile.am new file mode 100644 index 0000000..81cbad4 --- /dev/null +++ b/utils/Makefile.am @@ -0,0 +1,7 @@ +MAINTAINERCLEANFILES = Makefile.in + +if HAVE_PYTHON +bin_SCRIPTS = inkscape2edc +endif + +EXTRA_DIST = gimp-edje-export.py inkscape2edc diff --git a/utils/gimp-edje-export.py b/utils/gimp-edje-export.py new file mode 100755 index 0000000..88e1cb6 --- /dev/null +++ b/utils/gimp-edje-export.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +# Gimp-Python - allows the writing of Gimp plugins in Python. +# Copyright (C) 2007 Renato Chencarek +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# INSTALL: +# +# cp gimp-edje-export.py ~/.gimp/plug-ins/ +# chmod +x ~/.gimp/plug-ins/gimp-edje-export.py +# +# Notes: +# - ~/.gimp may change depending on gimp version, ie: ~/.gimp-2.4. +# - Make sure this file is marked as executable! +# +# USAGE: +# Load an image and go to "Python-Fu > Edje Save" that will +# appear on the image's window. +# + +from gimpfu import * +import os.path +import re, gettext + + +def save_layer(layer, filename): + temp_image = pdb.gimp_image_new (layer.width, layer.height, layer.image.base_type) + temp_drawable = pdb.gimp_layer_new_from_drawable (layer, temp_image) + temp_image.add_layer (temp_drawable, -1) + pdb.gimp_file_save(temp_image, temp_drawable, filename, filename) + gimp.delete(temp_image) + return + +def write_image_section(layers, edje_file, filenames): + edje_file.write("images {\n") + for layer in layers: + edje_file.write(' image: "%s" COMP;\n' % filenames[layer.name]) + edje_file.write("\n}\n") + +def write_layer_data(layer, edje_file, filename): + expr = re.compile('\W') + name = expr.sub("_", layer.name) + data = {'name':name, 'width':layer.width, 'height':layer.height, + 'x0':layer.offsets[0], 'y0':layer.offsets[1], + 'x1':layer.offsets[0] + layer.width, 'y1':layer.offsets[1] + layer.height, + 'path':filename, 'visible':int(layer.visible) + } + text = """\ + part { + name: "%(name)s"; + type: IMAGE; + mouse_events: 0; + description { + state: "default" 0.0; + min: %(width)d %(height)d; + max: %(width)d %(height)d; + rel1 { + relative: 0.0 0.0; + offset: %(x0)d %(y0)d; + } + rel2 { + relative: 0.0 0.0; + offset: %(x1)d %(y1)d; + } + image { + normal: "%(path)s"; + } + visible: %(visible)d; + } + }\n""" % data + edje_file.write(text) + +def fix_layers_name(img, save_path): + filenames = {} + for layer in img.layers: + expr = re.compile('\W') + name = expr.sub("_", layer.name) + if not name: + name = "unnamed" + layer.name = name + if name in filenames.keys(): + continue + filename = os.path.join(save_path, name + ".png") + filenames[name] = filename + + return filenames + +def edje_save(img, drawable, save_path, save_layers, edje_filename, invisible): + layers = [] + filenames = {} + for layer in img.layers: + if layer.visible or invisible: + expr = re.compile('\W') + name = expr.sub("_", layer.name) + layer.name = name + if name in filenames.keys(): + continue + filename = os.path.join(save_path, name + ".png") + filenames[name] = filename + layers.append(layer) + + edje_file = open(os.path.join(save_path, edje_filename), 'w') + write_image_section(layers, edje_file, filenames) + + edje_file.write('collections {\n group {\n name: "%s";\n' % img.name) + edje_file.write(' min: %d %d;\n max: %d %d;\n parts {\n' % (img.width, img.height,img.width, img.height)) + layers.reverse() + for l in layers: + if save_layers: + save_layer(l, filenames[l.name]) + write_layer_data(l, edje_file,filenames[l.name]) + edje_file.write(' }\n }\n}\n') + edje_file.close() + +register( + "python_fu_edje_save", + "Export the Image as Edje file", + "Export the Image as Edje file", + "Renato Chencarek", + "Renato Chencarek", + "2007", + "/Python-Fu/_Edje Save", + "RGBA, GRAYA", + [ + (PF_STRING, "save_path", "Path", "/tmp/"), + (PF_TOGGLE, "save_layers", "Save Layers ?", True), + (PF_STRING, "edje_filename", "Filename for edje", "edje.edc"), + (PF_TOGGLE, "export_invisible_layers", "Export invisible layers", False) + ], + [], + edje_save) + +main() diff --git a/utils/inkscape2edc b/utils/inkscape2edc new file mode 100755 index 0000000..25a1a8c --- /dev/null +++ b/utils/inkscape2edc @@ -0,0 +1,309 @@ +#!/usr/bin/env python + +import os +import os.path +import subprocess +import logging as log +import re + + +class Inkscape2Edc(object): + cmd = "inkscape --without-gui" + def __init__(self, infile, outfile, group, + relative1_x=None, relative2_x=None, + relative1_y=None, relative2_y=None, + images_dir="", + show_max=True, show_min=True, show_mouse_events=True): + self.infile = infile + self.outfile = outfile + self.group = group + self.relative1_x = relative1_x + self.relative2_x = relative2_x + self.relative1_y = relative1_y + self.relative2_y = relative2_y + self.images_dir = images_dir + self.show_max = show_max + self.show_min = show_min + self.show_mouse_events = show_mouse_events + + self.images = {} + self.sizes = {} + self.known_ids = tuple() + self.w = 0 + self.h = 0 + + self.out = open(self.outfile, "wb") + self.basedir = os.path.dirname(self.outfile) + + def _exec_cmd(self, *args): + s = " ".join(args) + cmd = "%s --file=%r %s" % (self.cmd, self.infile, s) + try: + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, shell=True) + except Exception, e: + log.error("cmd=%r exception: %s", cmd, e) + return "" + + out, err = p.communicate() + if err: + log.error("cmd=%r error: %s", cmd, err) + + return out + + def load_sizes(self): + sizes = self._exec_cmd("--query-all").split('\n') + + self.sizes = {} + order = [] + for line in sizes: + if not line: + continue + try: + oid, x, y, w, h = line.split(',') + except ValueError: + log.warn("could not parse size line: %r", line) + continue + x = float(x) + y = float(y) + w = float(w) + h = float(h) + self.sizes[oid] = (x, y, w, h) + order.append(oid) + + self.known_ids = tuple(order) + + self.w = float(self._exec_cmd("--query-width")) + self.h = float(self._exec_cmd("--query-height")) + + def output_file_header(self): + self.out.write("""\ +collections { + group { + name: "%(group)s"; +""" % self.__dict__) + + if self.show_min: + self.out.write(" min: %(w)d %(h)d;\n" % self.__dict__) + + if self.show_max: + self.out.write(" max: %(w)d %(h)d;\n" % self.__dict__) + + def output_file_section_parts_begin(self): + self.out.write(" parts {\n") + + def output_file_section_parts_end(self): + self.out.write(" }\n") + + def output_file_section_images_begin(self): + self.out.write(" images {\n") + + def output_file_section_images_end(self): + self.out.write(" }\n") + + def output_file_foot(self): + self.out.write("""\ + } +} +""") + + def output_image(self, oid): + img = os.path.join(self.images_dir, oid) + img += ".png" + + self._exec_cmd("--export-id='%s'" % oid, + "--export-id-only", + "--export-png='%s'" % os.path.join(self.basedir, img)) + + self.out.write(' image: "%s" COMP;\n' % img) + self.images[oid] = img + + def output_part_desc_rel(self, x, y, w, h): + def choose_rel(relative, value, value_max): + if relative is not None: + return relative + elif value <= abs(value_max - value): + return 0.0 + else: + return 1.0 + + x2 = x + w - 1 + y2 = y + h - 1 + + rx1 = choose_rel(self.relative1_x, x, w) + rx2 = choose_rel(self.relative2_x, x2, w) + ry1 = choose_rel(self.relative1_y, y, h) + ry2 = choose_rel(self.relative2_y, y2, h) + + ox1 = x - self.w * rx1 + ox2 = x2 - self.w * rx2 + + oy1 = y - self.h * ry1 + oy2 = y2 - self.h * ry2 + + self.out.write("""\ + rel1 { + relative: %03.1f %03.1f; + offset: %d %d; + } + rel2 { + relative: %03.1f %03.1f; + offset: %d %d; + } +""" % (rx1, ry1, ox1, oy1, rx2, ry2, ox2, oy2)) + + + def output_part(self, oid): + try: + x, y, w, h = self.sizes[oid] + except KeyError: + log.error("no such object id: %s", oid) + return + + info = { + "name": oid, + "x": x, + "y": y, + "w": w, + "h": h, + } + + self.out.write(""" + part { + name: "%(name)s"; + type: IMAGE; +""" % info) + + if self.show_mouse_events: + self.out.write(" mouse_events: 0;\n") + + self.out.write("""\ + description { + state: "default" 0.0; +""") + + if self.show_min: + self.out.write(" min: %(w)d %(h)d;\n" % info) + + if self.show_max: + self.out.write(" max: %(w)d %(h)d;\n" % info) + + self.output_part_desc_rel(x, y, w, h) + self.out.write("""\ + image.normal: "%s"; + } + } +""" % (self.images[oid],)) + + +def foreach_id(inkscape2edc, ids=None, re_exclude=None): + if ids: + for oid in inkscape2edc.known_ids: + if oid in ids: + yield oid + else: + for oid in inkscape2edc.known_ids: + if re_exclude is not None and re_exclude.match(oid): + continue + yield oid + + +if __name__ == "__main__": + import optparse + + usage = "usage: %prog [options] " + parser = optparse.OptionParser(usage=usage) + + parser.add_option("-i", "--id", action="append", default=[], + help=("Object ID to use, it will be the part name. " + "Multiple usage to use more object ids.")) + parser.add_option("-e", "--exclude", action="store", default=None, + help=("Exclude regular expression." + "Matching IDs will be ignored.")) + parser.add_option("-o", "--output", action="store", default=None, + help="Output file to use") + parser.add_option("-g", "--group", action="store", default=None, + help="Group name") + parser.add_option("-d", "--images-dir", action="store", default="", + help="Directory where to output images.") + parser.add_option("--no-min", action="store_true", + help="Do not output min values") + parser.add_option("--no-max", action="store_true", + help="Do not output max values") + parser.add_option("--no-mouse_events", action="store_true", + help="Do not output mouse_events lines") + parser.add_option("--relative1-y", action="store", + choices=("top", "bottom", "auto"), + default="auto", + help=("Choose what to use as base for rel1 y values, " + "top=0.0, bottom=1.0, auto=nearest")) + parser.add_option("--relative2-y", action="store", + choices=("top", "bottom", "auto"), + default="auto", + help=("Choose what to use as base for rel2 y values, " + "top=0.0, bottom=1.0, auto=nearest")) + parser.add_option("--relative1-x", action="store", + choices=("left", "right", "auto"), + default="auto", + help=("Choose what to use as base for rel1 x values, " + "left=0.0, right=1.0, auto=nearest")) + parser.add_option("--relative2-x", action="store", + choices=("left", "right", "auto"), + default="auto", + help=("Choose what to use as base for rel2 x values, " + "left=0.0, right=1.0, auto=nearest")) + + + options, args = parser.parse_args() + + try: + infile = args[0] + except IndexError: + parser.print_help() + raise SystemExit("missing input file name") + + fname = os.path.splitext(infile)[0] + if not options.output: + options.output = fname + ".edc" + + if not options.group: + options.group = fname + + rx_map = {"left": 0.0, "right": 1.0} + options.relative1_x = rx_map.get(options.relative1_x, None) + options.relative2_x = rx_map.get(options.relative2_x, None) + + ry_map = {"top": 0.0, "bottom": 1.0} + options.relative1_y = ry_map.get(options.relative1_y, None) + options.relative2_y = ry_map.get(options.relative2_y, None) + + o = Inkscape2Edc(infile, options.output, options.group, + relative1_x=options.relative1_x, + relative2_x=options.relative2_x, + relative1_y=options.relative1_y, + relative2_y=options.relative2_y, + images_dir=options.images_dir, + show_max=not options.no_max, show_min=not options.no_min, + show_mouse_events=not options.no_mouse_events) + + re_exclude = None + if options.exclude: + re_exclude = re.compile(options.exclude) + + if options.images_dir: + os.makedirs(options.images_dir) + + o.load_sizes() + o.output_file_header() + + o.output_file_section_images_begin() + for oid in foreach_id(o, options.id, re_exclude): + o.output_image(oid) + o.output_file_section_images_end() + + o.output_file_section_parts_begin() + for oid in foreach_id(o, options.id, re_exclude): + o.output_part(oid) + o.output_file_section_parts_end() + + o.output_file_foot() -- 2.7.4